搜尋此網誌

2011年7月20日 星期三

OpenMP-HelloWorld

open mp是可以把程式平行化執行的c/c++ library.open mp很常被用在遊戲的動畫處理方面.另一方面因為現在的電腦都是雙核心的cpu,如果應用程式沒有寫成平行化的方式,無法完全發揮雙核心cpu的威力,不免俗的我的第一個open mp 程式當然是c++版本的hello world.網路上很多例子都是用c的方式來呈現,因為我不熟悉c,所以小改成c++的方式來實作.若compile顯示ignore #pragma的警告訊息, 那麼要在complie command line加上"-fopenmp"參數


#include <omp.h>
#include <iostream>
using namespace std;
int main() {
#pragma omp parallel
cout<<"Hello from thread "<<omp_get_thread_num()<<", nthreads"
<< omp_get_num_threads()<<endl;
return 0;
}



#pragma omp parallel:是openmp的directives(指示字?),會產生threads來執行,此段程式碼.
omp_get_thread_num():此函式用來回傳thread編號
omp_get_num_threads():用來回傳thread總數



如果只需要一個thread執行程式的話可以用#pragma omp single


#include <omp.h>
#include <iostream>
using namespace std;
int main() {
#pragma omp single
cout<<"Hello from thread "<<omp_get_thread_num()<<", nthreads"
<< omp_get_num_threads()<<endl;
return 0;
}

沒有留言:

張貼留言