12
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ı

BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

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ı

Page 2: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

1

İçindekiler

1. Paralel hesaplama ............................................................................................................2

1.1 İki sayının toplanması ...............................................................................................2

2. Java .................................................................................................................................3

3. MPJ Express ....................................................................................................................4

3.1 MPJ Design ..............................................................................................................4

4. MPJ Yapılandırılması ......................................................................................................5

4.1 Multicore ..................................................................................................................5

4.2 Cluster ......................................................................................................................5

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

8.1 Performans ............................................................................................................. 10

8.2 SpeedUP Ölçümü ................................................................................................... 10

9. Kaynakça ...................................................................................................................... 11

Page 3: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

2

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.

Page 4: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

3

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ı.

Page 5: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

4

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.

Page 6: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

5

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.

Page 7: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

6

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.

Page 8: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

7

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

Page 9: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

8

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.

Page 10: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

9

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.

Page 11: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

10

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 39486

2 Core Cpu Toplam Zaman 3481

Speed Up 11,34

Page 12: BİL 542 Paralel Hesaplamaturgaybilgin/2014-2015-guz/bil542/sunum/Rece… · 6 5. MPJ Express Kurulum Bu dokümanda MPJ Express Linux/Unix ortamı için çalışma yapılmıştır

11

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-java-

method

Son Erişim Zaman: 14.11.2014