Etiket arşivi: paralel programlama

MPI protokolü

MPI (Message Passing Interface) dağıtık bellekli bir sistemde paralel program koşan düğümlerin arasındaki iletişim için kullanılan fiilen standart bir protokoldür. Paralel sistemlerde kullanılmak için geliştirilmiş en temel kütüphanedir. Fortran,C,C++ ve Ada programlama dillerinden çağrılan kütüphane metodlarından oluşur. Diğer eski sistemlere göre üstünlüğü hızlı çalışması ve taşınabilir olmasıdır. MPI paralel olarak birbirine bağlanan bilgisayarlarda işlemciler arası haberleşmeyi sağlamak amacıyla kullanılır.

Paralel programlamada amaç OpenMP Api’sinde anlattığım gibi hesaplanması çok uzun süre alan işlemleri mümkün olduğunca kısa sürede halletmektir. 1990’lı yıllarda süper bilgisayarların geliştirilmesiyle birlikte işlemlerin en kısa sürede çözümü için algoritma ihtiyacı doğmuştur.

Bir C programı düşünüldüğünde MPI fonksiyonlarının yapısı şu şekildedir.

1- Kütüphanelerin import edilmesi

2 – MPI veri türlerinin belirlenmesi

3 – MPI’ın başlatılması

4 – MPI haberleşmelerinin yapılması

5 – Program içinde yer alan gerekli hesaplamaların yapılması

6 – MPI’ın kapatılması

7 – Programın sonlandırılması

Kaynak: XI. Akademik Bilişim Konferansı,Harran Üniversitesi

 

 

OpenMP

Son yıllarda bilgisayar mimarisinde çok çekirdekli yapıya geçilmiştir. Böylelikle bilgisayarımız aynı anda birden fazla işi yapabilecek duruma gelmiştir. Donanım olarak bu mimarinin kullanılabilmesi için tabiî ki yazılımlar gerekmektedir. Sadece paralel programlama ile hazırlanmış programlar birden fazla çekirdeği aynı program için kullanma imkanı sunmaktadır. Böylelikle program parçalara ayrılarak çekirdeklerde eş zamanlı olarak çalıştırılır. Bu yöntemle günlerce sürecek büyük hesaplamaların yapıldığı programlar saatler içerisinde halledilebilir hale gelmiştir. Ayrıca paralel programlama sadece multicore ve tek bilgisayar üzerinde kullanılmamaktadır, bununla birlikte bir ağ üzerinde birleştirilmiş ve birbiriyle iletişim halinde olan birden fazla bilgisayarla da paralel programlama yapılabilir. Böylelikle ağ üzerinde dağıtık halde bulunan bilgisayarların bellekleri ortak olarak kullanılabilir. Yapılan işlem tüm bilgisayarlara paylaştırılarak işlem sonucunu normalden çok daha kısa sürede elde edebiliriz. OpenMP paralel programlama işini kolaylaştıran bir API’dir. Çalışma prensibi, paralel işletilmesi gereken kısımlarda dallanır, paralel çalışıp işlem bitince tekrar birleşmesi şeklinde olur. Buna Fork-Join Model denir. OpenMP Api’sinin her platforma göre derleyicisi bulunmaktadır. Ayrıca C++,C ve Fortran ile kullanılabilir.