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

Hata
  • XML Parsing Error at 1:82. Error 9: Invalid character
Anasayfa 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 )  
404 Not Found

Server Error

404

Page Not Found

This page either doesn't exist, or it moved somewhere else.


That's what you can do