Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Dokümanlar Kütüphane Kurulumları MPI Nedir ve Nasıl Kurulur


MPI Nedir ve Nasıl Kurulur

Paralel Programlama ve MPI (Message Passing Interface)

 

Mpi bir paralel programlama kütüphanesidir. Paralel programlama için kullanılır. Paralel programlama bir işin tek bir bilgisayarda değil de birçok bilgisayara dağıtılıp sonuç olarak geriye dönen değerlerin ana bilgisayarda toparlanıp işleminlerin daha hızlı gerçekleştirilmesini sağlar. Örnek olarak  hava tahmin simulasyonunu ele alalım. Hava raporları ani değişimlere sahip olduğundan çok hızlı hesaplanıp aktarılması gerekir. Hava raporlarının sonuçları için eldeki verileri tek bir bilgisayarda işlemeye kalkmak hava raporunu istenilen zamandan çok çok sonra almak demektir. Oysaki raporların çok hızlı bir şekilde üretilmesi gerekir. Paralel programlama işte bu konuda oldukça etkilidir. Başka örnekler verecek olursak füze sistemleri yönetimi paralel programlama ile sağlanır.

 

MPI Nedir ve Nasıl Kurulur

MPI’in 2-1.0.5 sürümünün kurulumu için öncelikli olarak .Net 2.0 framework kurulması gerekmektedir.MPI kurarken dikkat etmeniz gereken ilk nokta gelen "pass phrase" kısmına windows kulllanıcı ismine  ait şifrenizi girmeniz gerekmektedir.

MPI 2-1.0.5  linkinden MPI 2-1.0.5 sürümünü indirebilirsiniz.

MPI kurulduktan sonra Windows Kullanıcı isminiz ve şifreniz wmpiregister.exe ile gelen pencerede yazılıp sonrasında önce Register butonuna sonrasında ise Ok butonuna tıklanılması gerekir. Burada dikkat edilmesi gereken husus ağdaki kullanılacak olan bütün bilgisayarlarda da aynı kullanıcı ismi ve aynı şifreye ait bir kullanıcı hesabı açılması gerekmektedir ve aynı şekilde ağdaki tüm bilgisayarlarda da wmpiregister ile ilgili aynı işlemler yapılmalıdır. Bu işlemler yapıldığında Windows XP’deki güvenlik merkezi uyarısı ile karşılaşılır(smpd.exe için) bu uyarıya “engellemeyi kaldır” yetkisi verilir. Ama Windowsun güvenlik merkezi aynı şekilde koşacak olan paralel programa da yine uyarı verecektir .Dolayısıyla güvenlik merkezinden (Windows güvenlik duvarı) Özel durumlar sekmesine programınızın ismini eklemeniz  gerekmektedir.Başka bir yol ise Güvenlik Duvarını kapatmak olacaktır.  

MPI içerisinde paralel çalışma için birçok rutin barındırır. Bunlardan bazıları bloklanmalı, bazıları ise bloklanmasız rutinlerdir. Programda kullanılan rutinler aşağıda verilmiştir.

MPI_Init(&argc,&argv) : MPI’ın başlatılması için gerekli komuttur. MPI ile çalışacak her program bu fonksiyonu programın başlangıcında çalıştırmalıdır. argc ve argv değerleri main fonksiyonuna gelen değişkenlerdir.

MPI_Finalize() : Program başlarken MPI_Init fonksiyonunu çalıştırdığı gibi, icrasını sonlandırırken de bu fonksiyon çalıştırılmalıdır.

MPI_Comm_size(MPI_COMM_WORLD,&numprocs) : Bu fonksiyon çalışan MPI süreç sayısını belirler. Referans parametresi olarak verilen numprocs değişkenine çalışan süreç sayısı atanır.

MPI_Comm_rank(MPI_COMM_WORLD,&myid) : MPI içinde çalışan her sürecin belirli bir numarası vardır. Bunlar sıfırdan başlayıp toplam süreç sayısına kadar gider. Myid değişkenine atanan süreç numarasına göre süreçler efendi yada köle süreç olduklarını belirlerler. Genelde süreç numarası sıfır ise bu süreç efendi süreç olarak seçilir. Efendi süreç yapılacak işleri belirler ve işleri köle süreçlere dağıtır. Köle süreçler de bu işleri gerçekleştirip efendi sürece sonucu gönderirler.

MPI_Send(buffer, count, datatype, destination, tag, communicator) : Bu fonksiyon mesaj göndermek için kullanılır. Bloklanmalı bir fonksiyondur. Mesaj göndermesi başarılı olmadığı sürece süreç fonksiyonun çağrıldığı yerde bloklanır. Buffer argümanı gönderilecek verinin adresini gösterir. Count değişkeni ise bu bellek adresinden kaç tane veri gönderileceğini belirtir. Datatype değişkeni ise gönderilecek bellekteki verilerin tipini belirtir. Bu üç argümanla istediğimiz tipte bir değişkeni veya diziyi karşı tarafa gönderebiliriz. Destination değişkeni gönderilecek süreç numarasını belirtir. Tag değişkeni mesajın tipini belirleyen bir etikettir. Gönderme işleminin başarışı olması için karşı tarafta bu mesajın aynı etiketle veya MPI_ANY_TAG etiketiyle alınması gerekir. Communicator değişkeni ise haberleşme uzayını belirler. Süreçler mpiexec programıyla çalıştırıldığında aynı haberleşme uzayı içerisinde yer alırlar. Aynı uzaydaki süreçlerle haberleşmek için MPI_COMM_WORLD tanımlaması kullanılır.

MPI_Recv(buffer, count, datatype, source, tag, communicator, status) : Bu fonksiyon MPI_Send fonksiyonu ile gönderilen mesajları almak için kullanılır. Bu fonksiyonda bloklanmalı bir fonksiyondur. MPI_Send’ den farklı olarak source değişkeni mesajın hangi süreçten geleceğini belirler. Status değişkeni ise gelen mesaj hakkındaki durum bilgilerini tutar. Tipi MPI_STATUS olan bir struct yapısıdır. Bu yapıdan gelen mesajın etiketi, gönderen sürecin numarası gibi bilgiler elde edilebilir.

Projeler:

Linkleri Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

 


 

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Perşembe, 07 Nisan 2011 21:02 )  
amınıza koyayım amınıza koyayım amınıza koyayım amınıza koyayım amınıza koyayım amınıza koyayım