Pazartesi, Eylül 08, 2008

OpenMP

ReklamlarStart();
DerinDeliMavi'den bir ilk daha , Sizler için hiçbir fedakarlıktan kaçmayan sitemiz size yine yeni imkanlar sunuyor. Hafta sonu yemeyip içmeyip - oruç oruç - sizlere neler hazırladık neler...
ReklamlarEnd();

Benim gibi çiftçekirdekli bir işlemciniz varsa yazdığınız programların CPU kullanımına baktığınızda Yukardaki grafikteki I numaralı bölümdeki gibi bir manzarayla karşılaşırsanız. Yani uzunlafın kısası Bilgisayarınız çift çekirdekli ama Yazıl sadece birini kullanıyor. Paralel programlama işi de burada ortaya çıkıyor. Bütün her iş için olmasada paralel olarak çalıştırarak programın hızlanması imkanına sahibiz. Grafiğin II kısmında görebileceğiniz gibi. Yapılacak iş teorik olarak şöyle ; Aynı görevi, küçük bir birinden bağımsız çalışmasında mahzuru olmayacak şekilde bölüp çoklu işlemcilerde eş zamanlı olarak çalıştırılmasıdır.

İşte OpenMP bu işi kolaylaştırmak için yapılmış API dır. Pek çok donanım ve işletim siteminde çalışan ve basit derleyici ön işlem direktifleriyle kullanacağınız bir sistem.


OpenMP nin çalışma sistemi program paralel işletilmesi gereken kısımlarda dallanır paralel çalışıp işlem bitince tekrar birleşmesi şeklinde olur. ( Fork - Join Model )

Bu kadar teorik bilgi yeter daha fazlasını merak eden google'dan soruştursun. Yukarda bahsettiğimiz üzere OpenMP derleyici önişlem direktifleri kullanıyor yani öncelikle OpenMP desteği sunan bir derliyiciye ihtiyacınız olacak.
OpenMP desteği sunan derleyiciler
http://openmp.org/wp/openmp-compilers/

Linkde gördüğünüz gibi Eğer Linux kullanıcısıysanız ve derleyiciniz gcc 4.2 ve üstünde probleminiz yok. Microsoft Visual kullanıyorsanız OpenMP 2.0 destekleniyor ve ücretsiz versiyonlarında olup olmadığından da emin değilim. Benim gibi CodeBlocks ile Mingw32 kullanıyorsanız "TDM's Experimental GCC/MinGW32 Builds" kurmanız lazım.

Yapılacak işlemler
  1. http://www.tdragon.net/recentgcc/ adresinden Bundled Installer ı indirin
  2. Daha önceden Mingw yi kurğunuz yerin üzerine kurun.
  3. Hemen güzel bir OpenMP makalesi okuyun.
  4. CodeBlocks ' çalıştırıp yeni bir console projesi oluşturun
  5. Project->Build Options kısmından Linker settings tabında Link libraries kısmına gomp ve pthread girin
  6. Project->Build Options->Compiler Settings tabının other options kısmına -fopenmp girin

İşlem tamam. Artık bütün bunlarun üstüne şöyle basitçe hemde OpeCv li bir program yazmaya başlayabiliriz. Malum Performans en çok Görüntü işlemede lazım oluyor...

Devam edecek...

1 yorum:

Zafer Çelenk dedi ki...

Konu harika, makale harika bir de yazının sonuna yola yeni çıkanlar için gereken rehberide yerleştirip tam bir bilgi küpü oluşturmuşsunuz. Elinize sağlık severek okudum.