OpenMP İle İlk Adım
- Sevdanur GENC

- Mar 4, 2013
- 1 min read
OpenMP, kendi icerisindeki derleyici direktifleri sayesinde paralel programlama'daki calismalarimiza yardimci olabilecek bir API gorevini ustlenmistir. Ornek icerisinde C++ uzerinde calisiyor olacagiz. Oncelikle Visual Studio'da yeni bir Visual C++ Win32 Console Application projesi olusturalim. Source Files icerisine ise cpp uzantili bir C++ File (.cpp) olusturalim.
Ardindan, Solution Explorer'da bulunan Source File'imiz uzerinde sag click ile Properties diyoruz.
Karsimiza gelen pencerede C / C++ icerisinde Language sekmesinde bulunan Open MP Support secenegini YES olarak ayarliyor ve Apply diyoruz.
Projemizi yazmaya baslarken OpenMP'ye ait kutuphaneyi kullanacagimiz icin #include<omp.h> ifadesini projemize ekliyoruz.
Projenize ait kodlar arasinda egerki #pragma omp parallel { } kod blogunu kullanirsaniz bunun artik bir paralel islemlerin gerceklesecegi bir havuz seklinde calisacagina ve bu noktaya kadar diger tum kodlariniz tek bir thread'de calisirken artik islemlerinizi paralal yuruterek birden fazla thread'inizle calisabileceginiz anlamina gelmektedir. Yani, #pragma'ya kadar tek cekirdeginiz, #pragma kod blogu icersinde ise istediginiz cekirdeklerle calisabiliyor olacaksiniz. Yapacagimiz uygulamada thread sayilariniz sirasiz bir sekilde gelecektir, bu da hepsi farkli surelerde calistigi icin derleyici bunu belirleyememesinden kaynaklanmaktadir. Cok fazla da onemi yoktur aslinda. omp_get_thread_num() direktifi ile her bir thread'in id'sini ekrana yazdiriyor olacagiz.
ThreadSayisi.CPP Kaynak Kodu;
#include<omp.h>
using namespace std;
int main()
{
#pragma omp parallel
{ cout<<
omp_get_thread_num()
<<endl;
}
getche();
}
Ekran Goruntusu;
Uygulamamiz uzerinde biraz degisiklik yapacak olursak, belirlemis oldugumuz thread uzerinde toplam thread'lerimizin sayisini yazdirabiliriz. Ve boylelikle tek bir thread'i kullanmis olacagiz.
#pragma omp parallel
{
cout<<"Thread'lerimiz ; "<<omp_get_thread_num()<<endl;
if(omp_get_thread_num()==0)
cout<<omp_get_thread_num()<<".Thread'te Toplam Thread Sayisi Yazdiriliyor : "<<omp_get_num_threads()<<endl;
}
Kodunuzu bu sekilde duzenlerseniz asagidaki gibi ekran goruntusunu elde edebilirsiniz.
Keyifli Calismalar Dilerim...
Comments