Paralel Programlama III (Parallel Programming III)

watch_later 3/09/2016
High Performance Computing (HPC) yani Yüksek Başarımlı Hesaplama kavramının temelinde bilgisayarların hesaplama (yani işlemci) güçlerini bir araya getirerek tek bir sistem gibi çalıştırma düşüncesi yatmaktadır. Bununla birlikte elde edilen yüksek hesaplama gücü ile sonuç üretmesi günler hatta haftalar alan programlardan daha kısa sürede ve maksimum başarım ile sonuç alınması hedeflenmektedir.

HPC ile Küme Mimarisi (Cluster Architecture with HPC)
1. Küme mimarisi, birden fazla sıradan bilgisayarın ya da sunucunun birbirine bir ağ üzerinden bağlanması ve böylece tek bir yüksek performanslı yapı olarak çalıştırılması için geliştirilmiş bir teknolojidir.
2. Yüksek başarımlı hesaplamalarda daha kısa sürede daha kesin sonuç elde etmek için işlemci sayısı ve hafıza miktarlarının artırılması gerekmektedir.
3.  İşlemci sayısının tek bir sunucu üzerinde artırıldığı durumda belli bir işlemci sayısından sonra maliyet katlanarak artar. Bu durumda makul bir maliyete sahip 2 (dual) veya 4 (quad) işlemcili sunucuların birleştirilmesi ile oluşturulan HPC Cluster çözümleri çok daha az maliyetle performans problemini halleder.


Küme Sistemlerinin Avantajları (Cluster Systems Advantages)
Büyüyebilme Açıklığı: Daha yüksek hesaplama gücüne ihtiyaç duyulduğu zaman sadece küme içindeki sunucu (compute node) sayısı istenilen adette artırılarak istenen güç elde edilir.
Maliyet: Bir sunucunun maliyeti içerisine dahi edilecek işlemci sayısının artmasıyla yükselir. Ancak işlemci sayısını artırma metodu olarak sunucu sayısını artırma yoluna gidilirse maliyet çok büyük ölçüde azalır.
Yedekleme: Sunucu kümesi içindeki herhangi bir sunucunun arızalanması küme sisteminin çalışmasını engellemez. Sunucu sayısı kadar yedekleme sağlanır.

Küme Sistemlerinde Bağlantı (Cluster Systems Interconnect)
Kümeyi oluşturan sunucuların tek bir sistem gibi çalışması için birbirleriyle çok hızlı haberleşmelerini sağlayacak bir ağ alt yapısına (interconnect) ihtiyaç vardırGigabit Ethernet teknolojisinin bant genişliği 1Gb/s iken Infiniband Duplex teknolojisinin bant genişliği 40 Gb/s dir.

HPC Sistemlerin Uygulama Alanları (HPC Systems Application Areas)
Mühendislik
1. Uçak, gemi ve otomobil tasarımı
2. Ürün tasarımı ve testleri
3. Araç çarpışma testleri
4. Nükleer kazalar sonucu oluşabilecek serpintiler
Ekonomi
1. Uzun vadeli ekonomik öngörüler
2. Yüksek doğrulukta borsa tahminleri
3. Bankaların risk analizi
Hava Araştırmaları
1. 4 ya da 5 günlük hava tahminlerinin süresi  HPC ile 10 güne kadar çıkmaktadır.
Malzeme Tahminleri
1. Yarıiletken cihaz simulasyonları
2. İnşaat sektörü için hafif ve dayanıklı malzeme tasarımı
3. İlaçların etki tahmin simülasyonu
Savunma
1. Savaş oyunları simülasyonları
2. Şifre deşifre simülasyonları



Hızlanma Faktörü (Speedup Faktor)
Tek işlemcili sistemde en iyi algoritma kullanılmalıdır. Paralel uygulama için ise algoritma farklı olabilir.




Paralel İşleme (Parallel Processing)
1’den 9’a kadar sayıların toplamını seri ve paralel olarak işleyelim. Seri işlendikten sonra 2 işlemciyle paralel işlenirse 2x kadar hızlanma (speedup) sağlanır mı?

Seri İşleme
1.   1 + 2 + 3 + 4 + 5 + 6 + 7 + 8
2.         3 + 3 + 4 + 5 + 6 + 7 + 8
3.               6 + 4 + 5 + 6 + 7 + 8
4.                   10 + 5 + 6 + 7 + 8
5.                         15 + 6 + 7 + 8
6.                                21+ 7 + 8
7.                                     28 + 8
                                              36


Paralel İşleme
1. 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8
2.             3 + 7 + 5 + 6 + 7 + 8
3.                      10 +11 + 7 + 8
4.                                   21+15
                                            36


Görüldüğü gibi 2 kat hızlanma sağlanamadı ancak 2 değerine 100000 kadar sayının toplamında yakalanacağı kesindir.

Von Neumann Mimarisi (Von Neumann Architecture)
Von Neumann mimarisi veri ve komutları tek bir yığın(depolama) biriminde bulunduran bilgisayar tasarım örneğidir. Paralel mimariler dışında Turing makinesi'nin ilkelerini uygulayan her bilgisayarı tanımlamak için kullanılır. Merkezi işlem biriminin bağımsızlığı dolaylı olup, saklı yazılım bilgisayarı (stored program computer) ile eşanlamlı olarak kullanılır.

İlk hesap makineleri değişmez yazılımlara sahiptiler. Bir makine hangi işlemi gerçekleştirmesi için tasarlandıysa sadece onu yerine getirebiliyordu. Günümüzde bazı basit bilgisayarlar hala bu yapıyı kullanmaktadırlar. Bu tür bilgisayarların yeni bir görevi yerine getirebilmesi için donanımlarının tekrar tasarlanması zorunludur.

Bu zorlukların aşılması saklı yazılım bilgisayarı ilkesi ile gerçekleşmiştir. Söz konusu makinenin yürütebileceği bir dizi komutun tanımlanması ile bilgisayarlar çok daha esnek bir yapıya kavuştular. Komut ve verinin aynı biçimde saklanması ise, bu ilke sayesinde yazılımın kolayca değiştirilebilmesine olanak tanımıştır.

Seri Hesaplama (Serial Computing)
Geleneksel olarak oluşturulan yazılımlar seri hesaplama göre yazılmıştır. Tek bir merkezi işlem birimi (CPU) sahip tek bir bilgisayar üzerinde çalıştırılır. Komutlar birbiri ardına yürütülür.
Yalnızca bir zaman çevriminde bir komut çalıştırılabilir.

Paralel Hesaplama (Parallel Computing)
En basit anlamda, paralel hesaplama eş zamanlı kullanımı sağlar. Birden fazla işlemci kaynaklarıyla bir hesaplama sorunu çözülebilir. Hesaplama sorunu eş zamanlı çözülebilir şekilde ayrı bölümlere ayrılmıştır. Her kısmındaki komutlar farklı CPU'lar da aynı anda yürütülür.

Paylaşımlı Bellek Mimarisi (Shared Memory Architecture)
Paylaşılan bellek paralel bilgisayarlar için büyük ölçüde değişebilir, ancak tüm işlemcilerin genellikle ortak genel adres alanına erişmek için yetenekleri vardır. Çoklu işlemciler bağımsız olarak faaliyet aynı bellek kaynaklarını paylaşabilir. bir işlemci tarafından etkilenen bir bellek konumundaki değişiklikler diğer tüm işlemciler tarafından görülebilir.
Paylaşımlı Bellek Mimarisi Simülasyonu
Dağıtık Bellek Mimarisi (Distributed Memory Architecture)

Dağıtık Bellek Mimarisi Simülasyonu
Veri ve Görev Paralelliği (Data ve Task Parallelism)

Senaryo:
20 kişilik bir öğrenci grubuna 5 farklı sorudan oluşan bir test yapılıyor. Soruları değerlendirmek üzere 5 kişilik bir öğretmen grubu görevlendiriliyor.

1. Senaryo: Her bir öğretmen bütün öğrencilerin sınav kağıtlarında sadece bir soruyu değerlendirmekten sorumlu tutuluyor. (1. öğretmen tüm 1. soruları değerlendirir gibi)
2. Senaryo: Sınav kağıtları 5'e bölünüyor ve her bir öğretmen kendisine verilen 4 adet sınav kağıdındaki bütün soruları değerlendiriyor.

Her iki senaryo için de her bir hoca toplamda 20 soru değerlendirmiş olur. 1. senaryo görev paralelliğine 2. senaryo ise veri paralelliğine örnek olarak verilebilir.


Veri ve Görev Paralelliği Simülasyonu
Flynn'in Klasik Sınıflandırması (Flynn's Classical Taxonomy)
Paralel bilgisayarları sınıflandırmanın farklı yolları vardır. Daha yaygın olarak kullanılan sınıflandırmalardan biri, 1966 yılından bu yana kullanımda olan Flynn Klasik Sınıflandırması'dır. Bu sınıflandıma da bulunan tek veya çoklu boyutların her iki olasılığı da mümkündür. Flynn Klasik Sınıflandırma'ya göre 4 olası sınıflamaları tanımlar.

Flynn Klasik Sınıflandırma Simülasyonu
Tek Komut, Tek Veri (Single Instruction, Single Data (SISD))

Tek Komut, Tek Veri Simülasyonu


Tek Komut, Çok Veri (Single Instruction, Multi Data (SIMD))

Tek Komut, Çok Veri Simülasyonu

Çok Komut, Tek Veri (Multi Instruction, Single Data (MISD))


Çok Komut, Tek Veri Simülasyonu
Çok Komut, Çok Veri (Multi Instruction, Multi Data (MIMD))

Çok Komut, Çok Veri Simülasyonu
Tek Program, Çok Veri (Single Program, Multiple Data (SPMD))
1. SPMD en yaygın modeli olarak kullanılır.
2. SIMD ve MIMD içine dahil edilebilir.
3. Her aşamada aynı programı çalışır fakat farklı görevler yapılır.
4. Her işleme bir rank(rütbe) atanır. (master/slave)

Tek Program, Çok Veri Simülasyonu
Parçalara Ayırma (Partitioning)
Bu işlem ayrışma ve bölümleme olarak da bilinir. Paralel hesaplama çalışmalarını parçalamanın iki temel yolu vardır.

Alan Ayırma (Domain Decomposition)
Bu tür bir sorunda, ilişkili veriler ayrıştırılır. Her paralel görev daha sonra, verilerin bir kısmının üzerinde çalışır.
Alan Ayırma Simülasyonu
Fonksiyonel Ayırma (Functional Decomposition)
Bu yaklaşımda, hesaplama gerçekleştirilecekse manipüle edilmiş verilere göre ayrılır. Her görev daha sonra tüm verinin bir kısmını gerçekleştirir.

Fonksiyonel Ayırma Simülasyonu
Paralel Programlama Modelleri (Parallel Programming Models)
Mesaj Geçiren Model (Message Passing Model)
Hesaplaması sırasında görevler kümesi kendi yerel bellek kullanır. Görevler ileti gönderme ve alma yoluyla iletişim yoluyla veri alışverişini sağlar.
Mesaj Geçiren Model Simülasyonu


Veri Paralel Modeli (Data Parallel Model)
Paralel işlerin çoğunu bir veri seti üzerinde işlemleri gerçekleştirmeye odaklanır. Veri kümesi, genellikle, bir dizi gibi ortak bir yapı halinde düzenlenmiş görevler kümesi aynı veri yapısı üzerinde çalıştırılır, ancak her görev aynı veri yapısının farklı bir bölümünü çalıştırır.
Veri Paralel Modeli Simülasyonu
Paralel Hesaplama İlkeleri (Principles of Parallel Computing)
1. Paralellik ve Amdahl Yasası
2. Veri Lokasyonunu Koruma
3. Yük Dengeleme
4. Koordinasyon ve Senkronizasyon
5. Performans Modelleme

Tüm bu öğelerin değerlendirilmesi paralel programlamayı daha da zorlaştırmaktadır.

Paralel Program Oluşturmanın 4 Adımı (4 Steps in Creating a Parallel Program)
4 Adımın Simülasyonu
Ayrıştırma (Decomposition): Görev sayılarını hesaplama.
Atama (Assignment): Görevlerin atanması.
Orkestrasyon (Orchestration): Veri erişimi, iletişim, senkronizasyon.
Haritalama (Mapping): İşlemci süreçleri.

Amdahl Yasası (Amdahl’s Law)
Bilgisayar mimarı Gene Amdahl'ın ismini alan Amdahl Yasası, sistemin bir parçasının hızlandırılması sonucunda, sistemin bir bütün olarak ele alındığında toplam hızlanmasının ne olacağını hesaplamak için kullanılır. Sıklıkla, birden fazla işlemci kullanıldığında erişilebilecek azami hızlanmayı tahmin etmek için paralel hesaplamalarda da kullanılır.
Basit bir örnekle, 100 saatlik çalışmanın %20’lik kısmı paralel hale getirilebiliyorsa, %80’lik kısım normal çalışacak bu durumda, algoritma en iyi paralelleştirmeye bile tabi olsa en fazla 20 saatlik zaman kazanılabilecektir.

Amdahl Yasası'nın genelleştirilmiş hali:








Bir sonraki yazımda görüşmek üzere...



sentiment_satisfied Emoticon