eclipse openmp mpi并行编程例子
openmp ??
???首先,下載這個版本的Eclipse:http://www.eclipse.org/downloads/packages/eclipse-parallel-application-developers/lunasr1? ?支持并發編程的版本。
然后下載這個版本的gcc:http://tdm-gcc.tdragon.net/download
? ???下載的時候看清楚32位和64位的。
? ?下載完了點擊安裝,我的安裝路徑是C:\TDM-GCC-64:
下載http://tdm-gcc.tdragon.net/download網站里的這個包含OpenMP庫的壓縮包:
32位系統的下載這個:
64位系統下載這個:
下載完了后解壓看到這些文件:
將這些文件全部選擇,復制。在這里粘貼:
選擇是,合并文件夾。
到這里就已經完成OpenMP開發環境的搭建了,接下來打開Eclipse新建一個OpenMP應用程序吧~~
這里就已經完成OpenMP開發環境的搭建了,接下來打開Eclipse新建一個OpenMP應用程序吧~~
選擇OpenMP工程,在這里新建的是C語言的工程,編譯用的gcc,后面會講到怎么在C++工程里也是用OpenMP。
然后右鍵工程,Build Project:
接下來右鍵Run As:
看看輸出結果吧~~
上面只是一個初步介紹,不知道有沒有發現在新建工程時沒有提供C++ OpenMP選項,如果要在C++工程中使用OpenMP怎么辦呢?其實在新建項目的時候沒有必要按照上面的要求來,可以新建一個任意的C或C++工程。只要設置編譯和鏈接參數即可。接下來新建一個C++ HelloWorld程序并使用OpenMP。
? 在剛才新建項目的選項中選擇Hello World C++ Project:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? 把源文件代碼改成這樣:
[cpp]?view plaincopy
然后右鍵工程—>屬性(Properties),在下面這里選擇C++編譯器,在g++后面加入編譯參數
(注意"-fopenmp"和"g++"之間有個空格!)
同樣,在C++鏈接器里也需要加入同樣的參數:
OK之后就可以build項目然后運行了~~
下面有幾個例子
1 c語言版
/*============================================================================Name : helo.cAuthor : judygeVersion :Copyright : Your copyright noticeDescription : Hello OpenMP World in C============================================================================*/ #include <omp.h> #include <stdio.h> #include <stdlib.h> /*** Hello OpenMP World prints the number of threads and the current thread id*/ int main (int argc, char *argv[]) {int numThreads, tid;/* This creates a team of threads; each thread has own copy of variables */ #pragma omp parallel private(numThreads, tid){tid = omp_get_thread_num();printf("Hello World from thread number %d\n", tid);/* The following is executed by the master thread only (tid=0) */if (tid == 0){numThreads = omp_get_num_threads();printf("Number of threads is %d\n", numThreads);}}return 0; }2 c++語言版 /** hellopenmp.cpp** Created on: 2015年4月14日* Author: judyge*/#include <omp.h> #include <iostream> using namespace std;int main() {omp_set_num_threads(4); #pragma omp parallelcout << "!!!Hello World!!! from thread " << omp_get_thread_num() << endl; // prints !!!Hello World!!!return 0; }
/** num_threads.cpp** Created on: 2015年4月14日* Author: judyge*/#include <iostream> using namespace std; int main() {#pragma omp parallel num_threads(5){cout << "Hello World!\n";} }
omp_set_num_threads(5);
/** omp_set_num_threads.cpp** Created on: 2015年4月14日* Author: judyge*/#include <omp.h> #include <iostream> int main() {omp_set_num_threads(5);#pragma omp parallel{std::cout << "Hello World!\n";} }
#pragma omp parallel for
/** forp.cpp** Created on: 2015年4月14日* Author: judyge*/int main( ) { int a[1000000], b[1000000]; // ... some initialization code for populating arrays a and b; int c[1000000]; #pragma omp parallel for for (int i = 0; i < 1000000; ++i)c[i] = a[i] * b[i] + a[i-1] * b[i+1]; // ... now do some processing with array c}
MPI ? ? 注意安裝位置不能有空格 只有C語言版
下載MPICH:http://www.mpich.org/downloads/?注意,是下載windows版本的非官方的這個安裝包:
32位下載x86,64位下載x86_64。
最好直接安裝在某個盤的根目錄下,比如我的安裝目錄是C:\MPICH2,目錄中不要出現空格。
? ?
? ?安裝好后到Eclipse下配置:Windows—>Preferences
? 選擇MPI的include路徑,注意紅框里的內容。把build命令改成gcc和g++,因為安裝的MPICH中沒有mpicc和mpic++。。。
總結
以上是生活随笔為你收集整理的eclipse openmp mpi并行编程例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二分查找算法实例注释
- 下一篇: vs2013 openmp例子