Bulut Bilişim

advertisement
BİL 542 Paralel Hesaplama
Dersi Projesi
MPJ Express
Java Paralel Programlama
Recep Ali YILMAZ
131419106
Fen Bilimleri Enstitüsü
Bilgisayar Mühendisliği Bölümü
Bilgisayar Mühendisliği Yüksek Lisans Programı
İçindekiler
1.
Paralel hesaplama ............................................................................................................2
İki sayının toplanması ...............................................................................................2
1.1
2.
Java .................................................................................................................................3
3.
MPJ Express ....................................................................................................................4
3.1
4.
5.
MPJ Design ..............................................................................................................4
MPJ Yapılandırılması ......................................................................................................5
4.1
Multicore..................................................................................................................5
4.2
Cluster......................................................................................................................5
MPJ Express Kurulum .....................................................................................................6
5.1
Kurulum Öncesi .......................................................................................................6
5.2
Kurulum ...................................................................................................................6
6.
Uygulama Derleme ve Çalıştırma ....................................................................................7
7.
Örnek Uygulama .............................................................................................................8
8.
Performans ve SpeedUp Ölçümü ................................................................................... 10
9.
8.1
Performans .............................................................................................................10
8.2
SpeedUP Ölçümü ................................................................................................... 10
Kaynakça ...................................................................................................................... 11
1
1. Paralel hesaplama
Paralel hesaplama, aynı görevin (parçalara bölünmüş ve uyarlanmış), sonuçları daha hızlı elde
etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin
çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine
edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede
çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.
1.1 İki sayının toplanması
Seri (1 işlemci)

1+2+3+4+5+6+7+8

3+3+4+5+6+7+8

6+4+5+6+7+8

10 + 5 + 6 + 7 + 8

15 + 6 + 7 + 8

21 + 7 + 8

28 + 8

36
Paralel (2 işlemci)

1+2+3+4+5+6+7+8

3 + 3 + 4 + 5 + 6 + 15

6 + 4 + 5 + 21

10 + 26

36
1,75 kat hızlanma sağlanır. Daha fazla işlem olursa hızlanma 2 kata kadar çıkar.
2
2. Java
Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış
açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye,
adım adım işletilen (yorumlanan-interpreted) bir dildir.
Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir (Sun
Microsystem'in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında
Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok
sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye
olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java
Virtual Machine (JVM)'de çalışabilen tipik bytecode'dur (sınıf dosyası).
Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili
olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve
C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan,
hemen her yerde kullanılmaya başlanmıştır.
Sun Microsystems, 27 Ocak 2010 tarihinde, 20 Nisan 2009 tarihinde imzalanan bir anlaşmaya
göre, 7.4 milyar $ karşılığında Oracle tarafından satın alındı. Takip eden ay Sun Microsystems;
Oracle, USA, Inc ile birleşti Oracle America, Inc. adını aldı.
3
3. MPJ Express
MPJ Express, açık kaynak kodlu uygulama geliştirmek ve çok çekirdekli işlemciler ve işlem
kümeleri / bulutlar için paralel uygulamalar çalıştırmasına izin veren kütüphaneleri barındıran
Java destekli yazılım dilidir. MPI’ ın Java platformunda çalışan versiyondur. Yazılım MİT
lisansı (LGPL bir varyantı) altında dağıtılmaktadır.
3.1 MPJ Design
MPJ Express sürekli gelişimini sağlayan katmanlı bir tasarıma sahiptir. Güncellemek ya da
gerektiği gibi dışarı takas katmanları bulunmaktadır.
4
4. MPJ Yapılandırılması
MPJ iki şekilde yapılandırılabilir; multicore veya cluster. Yapılandırma yöntemlerini aşağıdaki
grafik özetlemektedir.
4.1 Multicore
Çok çekirdekli tek sunuculu/donanımlı yapılarda kullanılabilmektedir.
4.2 Cluster
Birden çok sistemin veya bu sistemler üzerindeki dağıtık memory yapıları için
kullanılmaktadır.
5
5. MPJ Express Kurulum
Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır.
5.1 Kurulum Öncesi
Linux ortamı için kurulum öncesi adımlar aşağıdaki gibidir.
1. Aşağıdaki adresten Ubuntu Desktop Linux İşletim Sistemini indirin
http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-desktop-amd64.iso
Direk kendi bilgisayarınıza veya sanal makine olarak kurulum yapabilirsiniz.
2. Java 1.6 (stable) or higher (Mandatory)
3. Apache ant 1.6.2 or higher
4. Perl (MPJ kaynak kodunun derlenmesi için)
5. Open MPI - MPI library
6. CMake (MPJ kaynak kodunun derlenmesi için)
5.2 Kurulum
1. MPJ Express’ aşağıdaki adresten indirin.
http://sourceforge.net/projects/mpjexpress/files/releases/
2. MPJ_HOME ve PATH için aşağıdaki komutları çalıştırın
a. export MPJ_HOME=/path/to/mpj/
b. export PATH=$MPJ_HOME/bin:$PATH
Bu bilgileri ““.bashrc” içerisinde eklerseniz her seferinde tekrar yapmanıza gerek
kalmayacaktır.
3. MPJ Express için bir çalışma dizini oluşturun ve indirdiğiniz kurulum dosyalarını
buraya kopyalayın.
4. Yukarıdaki işlemleri yaptıktan sonra “cd $MPJ_HOME; ant” komutu ile MPJ
Express’ i derleyiniz.
6
6. Uygulama Derleme ve Çalıştırma
Aşağıdaki şekilde örnek bir uygulama yazalım.
Aşağıdaki komutları kullanarak derleyelim.
javac -cp .:$MPJ_HOME/lib/mpj.jar HelloWorld.java
Burada derlemeyi OpenMPI’ den farklı olarak mevcut Java derleyicisi ile derliyoruz
fakat derleyiciye kütüphane olarak “mpj.jar” ı gösteriyoruz.
Aşağıdaki komut satırı ile örnek kodu çalıştırın çıktı aşağıdaki gibi olacaktır.
mpjrun.sh -np 2 HelloWorld
7
7. Örnek Uygulama
Uygulamanın amacı for döngüsü içerisindeki değer kadar dönüp içerdeki ikinci for
döngüsündeki hesaplama işleminin yapılması. Hesaplama işleminin amacı CPU’ ya yük
getirmek bu sayede işlem süresini artırmak ve CPU’ ları %100 seviyede kullanabilmek.
Uygulama hem tek cpu ve klasik java kodunda hem de Mpj derlemesi ile çalışacak şekilde
hazırlandı.
Aşağıdaki birinci örnek klasik java örneğidir.
Derleme, çalıştırma ve çıktı aşağıdaki gibidir.
8
Aşağıdaki örnek ise Mpj kütüphaneleri eklenmiş koddur. Burada iki core/process ile
çalışacak şekilde düzenleme yapılmıştır. Process’ leri if blokları ile yakalayıp içerisinde
aynı hesaplama işlemi yapılıyor.
Derleme, çalıştırma ve çıktı aşağıdaki gibidir.
9
8. Performans ve SpeedUp Ölçümü
8.1 Performans
Her iki uygulama için CPU kullanımına ait performans grafikleri aşağıdaki gibidir.
Seri çalıştırmada 40sn~ civarında bir zaman tüketiyor ve önce birinci hesaplama sonra ikinci
hesaplama yapılıyor. Bu işleme ait CPU kullanımı analizi aşağıdaki gibidir.
Mpj ile parallel çalıştırmada 3.5sn~ civarında bir zaman tüketiyor ve her iki hesaplama da
aynı anda işlenmeye başlıyor. Bu işleme ait CPU kullanımı analizi aşağıdaki gibidir.
8.2 SpeedUP Ölçümü
Formülümüze göre hesaplarsak;
Tek CPU Toplam Zaman
2 Core Cpu Toplam Zaman
Speed Up
10
39486
3481
11,34
9. Kaynakça

http://mpj-express.org
Son Erişim Zaman: 15.11.2014

Ubuntu
http://www.ubuntu.com
Son Erişim Zaman: 15.11.2014

Vikipedi
http://tr.wikipedia.org/wiki/Java_%28programlama_dili%29
Son Erişim Zaman: 14.11.2014

stackoverflow.com
http://stackoverflow.com/questions/3382954/measure-execution-time-for-a-javamethod
Son Erişim Zaman: 14.11.2014
11
Download