Ümran Onay.

Slides:



Advertisements
Benzer bir sunumlar
SGB.NET’İN TEKNİK ALTYAPISI
Advertisements

PARALEL HESAPLAMA ŞEYMA ŞAFAK
Ayrık Yapılar Algoritma Analizi.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
TEMEL C PROGRAMLAMA DERSİ - 1
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
C Programlama Diline Giriş
Değişken Bildirimleri
Diziler.
Bölüm 1: Introductions (Tanıtım,Tanım)
Thread (İş parçacığı/iplik)
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Dağıtık Ortak Hafızalı Çoklu Mikroişlemcilere Sahip Optik Tabanlı Mimari Üzerinde Dizin Protokollerinin Başarım Çözümlemesi I. Ulusal Yüksek Başarım ve.
Diziler(Arrays).
SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma Çiğdem İNAN, M. Fatih AKAY Çukurova Üniversitesi Bilgisayar.
Fork and Join Framework
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Paralel Hesaplama Onur Temizsoylu Grid ve.
Bölüm 3 – Yapısal Programlama
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Küme Bilgisayarlar Onur Temizsoylu Grid ve.
Yapısal Program Geliştirme – if, if-else
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Register ve Türleri Nihal GÜNGÖR.
MPI İle Paralel Programlama Tunahan Altıntop
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Bölüm 2 – Kontrol Yapıları
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Bilgisayar Programlama
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Giriş ve Motivasyon Onur Temizsoylu BAŞARIM09.
İŞLEMCİ MİMARİLERİ – Derya Işık
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Nesneye Dayalı Programlama
JAVA’DA DİZİLER Dr.Galip AYDIN.
Proje Konuları.
Aşağıdakilerden hangisi işletim sistemi değildir?
VERİ TİPLERİ VE DEĞİŞKENLER
1 Öğr. B.Aliyeva Öğr. B.Aliyeva Bilgisayar Yazılımı.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
GRİD HESAPLAMA PARALEL HESAPLAMA
Türkiye’de Yüksek Başarımlı Hesaplama Prof. Dr. Cevdet Aykanat Bilkent Üniversitesi Bilgisayar Mühendisliği Bölümü.
BİL542 PARALEL PROGRAMLAMA
Programlama Dilleri Visual Basic C# C++ Pascal Delphi.
33 CHAPTER TEMEL UYGULAMA YAZILIMLARI. © 2005 The McGraw-Hill Companies, Inc. All Rights Reserved. 3-2 Uygulama Yazılımları Temel Uygulamalar Genel amaçlı.
BİL İŞLETİM SİSTEMLERİ
Chapter 5: Threads (İş Parçacıkları)
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
DERS 4 MİKROİŞLEMCİ PROGRAMLAMA. Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 Ders 4, Slayt 2İÇERİK Yüksek seviyeli programlama dilleri Düşük sevyeli.
BİLİŞİM TEKNOLOJİLERİ DERS KİTAPLARI
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
XML ve XML WEB SERVİSLERİ Volkan ALTINTAŞ. XML Bağımsız bir kuruluş olan W3C tarafından tasarlanmıştır. Herhangi bir kurumun tekelinde değildir. Kişilerin.
Paralel Programlama ve MPI Gökçen Eraslan gokcen.eraslan ~ gmail nokta com.
SÜPERBİLGİSAYARLAR ve BEOWULF KÜMELERİ Niyazi ELVAN.
PARALEL HESAPLAMA Dr. Ali Evren Göksungur.
İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
Mikrobilgisayar Tasarım Yapıları
Bilgisayar Donanım ve Sistem Yazılımı
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
PROGRAMLAMA TEMELLERİ
C Programlama Diline Giriş
ANKARA ÜNİVERSİTESİ SAĞLIK BİLİMLERİ FAKÜLTESİ SOSYAL HİZMET BÖLÜMÜ
Problem Çözme ve Algoritmalar
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bilgisayar Mühendisliğine Giriş
Mikrobilgisayar Tasarım Yapıları
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Ümran Onay

İÇERİK Paralel programlama nedir? Paralel programlama modelleri Paralel hesaplama nedir? Algoritmalar -Uygunluk ve verimlilik -Amdahl kuralı ve ardışık bir programda hızlanma -Pratikte amdahl kuralı nasıl işler? OpenMP - Thread’lerin Hesaplanması -Openmp yürütme modeli -Paralel bölgeler -Uygulama(pi sayısının hesabı) -Avantaj ve dezavantajlar -Programın derlenmesi Son

PARALEL PROGRAMLAMA Paralel programlama, işlemler arasında iyi tanımlanmış iletişim yapıları kullanan ve verimi artırmaya yönelik işlemlerinin paralel işlenmesini sağlayan bir yapıdır.

Paralel Programlama Modelleri Ortak Hafıza Modelleri Dağıtık Ortak Bellek Posix Threads OpenMP Java Threads (HKU JESSICA, IBM cJVM) Mesaj Tabanlı Modeller PVM MPI Hibrid Modeller Ortak ve dağıtık hafızayı birlikte kullananlar OpenMP ve MPI birlikte kullananlar Nesne ve Servis Tabanlı Modeller Geniş alanda dağıtık hesaplama teknolojileri Nesne: CORBA, DCOM Servis: Web servisleri tabanlı Bilimsel araştırma projelerinde sıklıkla Derleyici tarafından paralelleştirilen ortak bellek tabanlı programlar MPI gibi mesaj paylaşımı tabanlı programlar kullanılmaktadır.

PARALEL HESAPLAMA Paralel hesaplama, bir uygulamanın parçalara ayrılarak her bir parçanın birden fazla işlemcide çalıştırılmasıyla daha hızlı sonuç alma işlemidir.

ALGORİTMALAR

AMDAHL KURALI Sistemin bir parçası hızlandırılır. Bu sistem bir bütün olarak ela alınır. Ve toplam hızlanmanın ne olacağı hesap edilir.

AMDAHL KURALI Azami Hızlanma Şeklindedir. p = 5, tn (kırmızı) = 3 saniye, ti (mavi) = 1 saniye ve f = tn / (tn + ti) = 0.75 Azami hızlanma                                    p = 2, tn (mavi) = 1 saniye, ti (kırmızı) = 3 saniye ve f = tn / (tn + ti) = 0.25 Azami hızlanma                                    SONUÇ:A bölümünü 2 kat hızlandırmak, B bölümünü 5 kat hızlandırmaktan çok daha az bir çabayla gerçekleştirilebilir.

Pratikte Pratikte programları paralelleştirmek Amdahl yasasında görüldüğü kadar zor değildir. Ancak programın çok büyük bir kısmını paralel işlem için harcaması gereklidir. 8.0 7.0 6.0 5.0 4.0 3.0 2.0 1.0 Hızlanma P=8 P=4 P=2 0% 20% 40% 100% 60% 80% Kodda Paralel Kısım

OPENMP Paralel hesaplamada işlemleri kolaylaştırmada kullanılan bir API’dir. Openmp, paylaşılmış hafıza sistemleri için tasarlanmıştır ve genellikle openmp ile daha az çaba harcayarak paralelliği uygulamak için mevcut seri programlar kullanılır. Openmp kullanımı ile: Derleyici komutları ile paralellik sağlamak, Veya zaman zaman işlev çağrısında bulunmak kolaydır. Ve openmp, paralel programlamanın hızlı ve !.... yoludur. (OpenMP is a “quick and dirty” way of parallelizing a program.)

Thread’lerin Hesaplanması -Her thraad bir işlemciye atanır. -Her thread programınızın bir kopyasında çalışır. Thread 0 Thread 1 Thread 2 Thread n

OpenMP Yürütme Modeli MPI’da, bütün thread’ler her zaman etkindir. Openmp’de ise yürütme yalnızca master thread üzerindedir. Yavru thread’ler işlemlerin okunması sırasında ve kendilerine ihtiyaç duyulduğu yerde çalışmaya başlarlar. Thread’ler, program paralel alana girdiğinde ortaya çıkarlar ve işlemler yapılır. Paralel bölgeden çıkıldığında ise thread’ler bırakılırlar.

Ana thread hem paralel hem seri alanda OpenMP Yürütme Modeli Thread’lerin sayısı paralel bölgede artarken paralel alan dışında serbest bırakılırlar. Ana thread hem paralel hem seri alanda görev almaktadır.

omp_set_num_threads(4); kısmında paralel bölgede çalışacak threadler oluşturulur ve her thraad aynı kodu çalıştırır. double A[1000]; omp_set_num_threads(4); #pragma omp parallel { int ID = omp_thread_num(); pooh(ID, A); } printf(“all done\n”); double A[1000]; omp_set_num_threads(4); A’nın bir kopyası bütün thread’ler arasında paylaşılır. pooh(0, A); pooh(1, A); pooh(2, A); pooh(3, A); İşlem devam etmeden önce bütün thread’lerin bitmesi bekler. printf(“all done\n”);

Pi sayısının OPENMP ile hesaplanması p = = S 1 4 (1+x2) dx 0<i<N N(1+((i+0.5)/N)2) Pi sayısının OPENMP ile hesaplanması Paralel program Sıralı program #define n 1000000 main() { double pi, l, ls = 0.0, w = 1.0/n; int i; #pragma omp parallel private(i,l) reduction(+:ls) { #pragma omp for for(i=0; i<n; i++) { l = (i+0.5)*w; ls += 4.0/(1.0+l*l); } #pragma omp master printf(“pi is %f\n”,ls*w); #pragma omp end master #define n 1000000 main() { double pi, l, ls = 0.0, w = 1.0/n; int i; for(i=0; i<n; i++) { l = (i+0.5)*w; ls += 4.0/(1.0+l*l); } printf(“pi is %f\n”,ls*w); Seri programlama şeklinde yazılıyor Otomatik yük dağılımı yapılıyor. Bütün değişkenler paylaşılıyor.

Avantajlar Programcının veri yerleştirme hususunda endişelenmesini gerektirecek bir durum yoktur çünkü openmp paylaşılmış hafızadan yararlanır. Programlama modeli seri benzeridir böylece kavramsal mesaj göndermeden daha kolaydır. Komutların kullanımı daha kolay ve basittir. Eski seri kodun yeniden yazılması gerekmez. Üzerinde yapılacak değişikliklerle paralel hale getirilebilir.

Dezavantajlar Programlar yalnızca paylaşılmış hafıza sistemlerinde çalıştırılabilir. Kullanılan derleyicinin openmp desteğinin olması gerekmektedir. -Oysa MPI heryerde kurulabilir. Genel olarak yalnızca orta hızlanma elde edilir. Openmp kodları olduğunca az seri koda sahip olmak isterler.

Asal sayı uygulaması

SON Teşekkürler