BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama



Benzer belgeler
Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java Temel Özellikleri

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

Küme Bilgisayarlarda PBS Kuyruk Sistemi

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

1. HAFTA TEMEL KURULUM İŞLEMLERİ ve NESNE TABANLI PROGRAMLAMA KAVRAMLARI

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BM-311 Bilgisayar Mimarisi

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

C++ da Nesne Kavramı

Akademik Dünyada Özgür Yazılım. Akademik Dünyada. Onur Tolga Şehitoğlu

EFe Event Management System

FreeBSD Nedir? Ömer Faruk Şen EnderUNIX.ORG Core Team Üyesi

Yazılım Mühendisliği 1

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

BM-311 Bilgisayar Mimarisi

Programlama Dilleri sıralaması Programlama Dilleri sıralaması 2016

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Dr. Fatih AY Tel: fatihay@fatihay.net

Bilgisayar İşletim Sistemleri BLG 312

BİT in Temel Bileşenleri (Yazılım-1)

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Java nedir, nasıl çalışır?

Java JDK (Java Development Kit) Kurulumu:

Linux ve Windows Üzerinde C ve C++ Kullanımı

Linux Kurulumu (Sürüm 1.52) İçindekiler

Android e Giriş. Öğr.Gör. Utku SOBUTAY

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

ÖZGÜR YAZILIMLAR İLE J2EE

İSTANBUL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ SİSTEM PROGRAMLAMA DERSİ. Öğr.Gör. Mehmet DEMİR

Öğr. Gör. Serkan AKSU 1

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

1.PROGRAMLAMAYA GİRİŞ

Giriş. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

C# nedir,.net Framework nedir?

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

MATLAB A GİRİŞ. EE-346 Hafta-1 Dr. Ayşe DEMİRHAN

Üst Düzey Programlama

USE IMPROVE EVANGELIZE. OpenSolaris. Afşin TAŞKIRAN EnderUNIX Yazılım Geliştirme Ekibi Türkiye OpenSolaris Kullanıcıları Grubu afsin ~ enderunix.

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

R ile Programlamaya Giriş ve Uygulamalar

Bahar. BM 211 Programlama Dilleri 3 1

Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması

Çalışma Grupları Eğitimleri. TÜBİTAK ULAKBİM / ANKARA 5-9 Nisan 2010

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Yazılım Tasarımı Dokümanı v Mustafa Atanak Sefai Tandoğan Doç. Dr.

Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları

Mobil Test Otomasyon Araçları Bilgilendirme Test Ekibi Şubat 2017

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

UHeM ve Bulut Bilişim

Windows Programlama Güz Dönemi

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Linux Dosya ve Dizin Yapısı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

I. Oturum: GNU/LINUX A GİRİŞ

Açık Kaynak Kodlu Yazılım

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Bölüm1. İlk Bilgiler ISBN

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

Uygulamaları ulut bilişime geçirmeden önce, firmanızın/şirketinizin ya da. işinizin gereksinimlerini göz önüne almanız gerekir. Aşağıda bulut bilişime

Yazılım Mühendisliği Bölüm - 3 Planlama

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

YAŞAR ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 4 YILLIK EĞİTİM PLANI ( AKADEMİK YILINDAN İTİBAREN GEÇERLİDİR)

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Yazılım Mühendisliğine Giriş 2018 GÜZ

SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

SERIES. Kullanım Kılavuzu Kütüphane Düzenleme

Tekir (Ön Muhasebe Yazılımı)

Bilgisayarda Programlama. Temel Kavramlar

Sanallaştırmada Özgür Yazılım Çözümleri. Alper YALÇINER

Tomcat Uygulama Sunucusunun Kurulumu. İlk olarak adresine gidiyoruz.

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

Bilgi İşlemde Yeni Bir Çağ IBM Corporation

DOKUZ EYLÜL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ MÜDÜRLÜĞÜ DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CSE 5051

PROGRAMLAMA TEMELLERİ

MAYIS 2010 ÖZGÜR DOĞAN İŞ GELİŞTİRME YÖNETİCİSİ KAMU SEKTÖRÜ

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

10 yıllık sektör deneyimimiz ve yazılım teknolojileri alanında uzmanlaşmış eğitmen kadromuzla, size, ekibinize ve yazılım kültürünüze değer katacak

Bilişim Teknolojilerine Giriş

Veri Bilim - Yapay Öğrenme Yaz Okulu, 2017 Matematiksel Temeller ve Vaka Çalışmaları

MULTI - CORE UTM NİN AVANTAJLARI. Gerçek zamanlı ve kapsamlı tehdit koruması için hız engelleri nasıl aşılır.

GNU/Linux'un Tarihi ve Önemi

ALGORİTMA VE PROGRAMLAMA I

Bilgiyolu Yayıncılık Elektronik Sunum Programı Kurulum Kılavuzu

Java Programlamaya Giriş

Dosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir.

Open Source Coding: Python

Alanın En Güvenilir ve En Hızlı İmalat Çözümü Inventor İçinde Kusursuz Entegrasyon

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Transkript:

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 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 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 39486 2 Core Cpu Toplam Zaman 3481 Speed Up 11,34 10

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