Message Passing Interface kısaca MPI, C programlama dili ile paralel programlamayı sağlayan bir C apisidir. Bu apiyi uygulamalarımızda kullanarak programlarımızı birçok işlemci üzerinde çalıştırmayı sağlayabiliriz.
Apinin bize sağladığı en önemli özellik processler arası haberleşmeyi sağlama imkanını sunması. Bu sayede zaten paralel programlama işlemini kusursuz yapmış oluyoruz. Genel kullanım alanları biyolojik modeller, uzay problemleri, dna modelleme gibi çok yoğun işlemleri gerektiren durumlarda kullanılıyor.
Bu apiyi kullanabilmek için en önemli şart, programımızı aynı işlemleri yapacak parçalara bölebilmek. Örneğin SMS Server'ınız var, 100 adet mesajı sıra ile okuyup, her sms'e bir cevap üreteceksiniz. Bunun için normal programlama ( seri programlama diyebiliriz aslında ) ile ne yaparız, 1 den 100 e kadar iterasyon şeklinde sms okuyup, cevaplandırırız. Fakat paralel programlama da ise örneğin 4 process kullansak, her birine 25 sms veririz. Her biri bir sms okur aynı anda, yani aynı anda 4 sms okur ( tam aynı anda olmaz aslında çünkü I/O cihazına aynı anda sadece bir process ulaşabilir ) gibi bir durum oluşur.
Fakat bilgisayar mimarisi ve işletim sistemleri konularından da bildiğimiz üzere bu işlemde 4 prcess kullanacağımız zaman 4 kat hızlanma gerçekleşmez. Çünkü programın bir kısmı yine seri olarak yapılacaktır ( zorunludur diyebiliriz). Bunun için Amdahl's Law incelenebilir.
En çok kullanılan durumlardan bir tanesi de matris üzerinde işlem yapma olayıdır. Örneğin matris çarpımı, matris toplamı veya 2 arrayin toplamı gibi işlemler paralel programlama ile çok daha hızlı bir şekilde yapılabilir.
Vereceğim linkte Game Of Life probleminin paralel programlama ile çözülmüş örneği var. Rar dosyası içerisinde Bilgisayar Mimarisi dersi için yapmış olduğum Game Of Life oyunun kodu ve raporu bulunmakta.
Yakın zamanda metodların kullanımı ile ilgili yazı da yazacağım.
Not : Program Linux üzerinde çalışmaktadır. Ve MPI apisi kurulu olmalıdır.
MPI Apisini indirip kurmak için : http://www.lam-mpi.org/using/docs/
Dosyayı indir
C etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
19 Haziran 2008 Perşembe
Kaydol:
Kayıtlar (Atom)