我想用Eclipse IDE在Windows 7上用C測試openMP。我無法找到任何設置openMP的特定步驟。你可以幫我嗎?如何設置openMP
3
A
回答
2
6
我對OpenMP並沒有做太多的工作,但這裏是我自己嘗試的。
OpenMP允許您告訴編譯器事情應該並行運行。這裏是一個計數100億個例子:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
long result = 0;
long i;
#pragma omp parallel for reduction(+: result)
for (i = 0; i < 10000000000; i++) {
result++;
}
printf("%li\n", result);
return EXIT_SUCCESS;
}
這將編譯像一個普通的C程序:
$ gcc -o OpenMPTest main.c
它運行在我的機器30秒時:
$ time ./OpenMPTest
10000000000
real 0m30.674s
user 0m30.628s
sys 0m0.014s
添加gcc的-fopenmp
選項啓用了OpenMP支持。這就是你需要讓循環在多個線程中運行的全部內容。
$ gcc -o OpenMPTest main.c -fopenmp
這減半的運行時間爲15秒的雙核系統:
$ time ./OpenMPTest
10000000000
real 0m15.840s
user 0m30.123s
sys 0m0.037s
這裏是一個#pragma
行所做的簡要說明:
#pragma omp
這是一個openmp命令的前綴。
parallel
告訴編譯器下一個語句應該並行運行。
for reduction(+: result)
組合從並行循環result
變量的所有值到由另外一個值。取消此操作會導致打印出的最終號碼不正確。
我知道你正在使用的Eclipse,但MSDN文檔是用於描述OpenMP的相當不錯: OpenMP in Visual C++
相關問題
- 1. 如何在openmp中設置優先級?
- 2. 使用openmp設置nsight
- 3. 如何在ubuntu 12.04中爲openCV項目設置openMP多線程?
- 4. 如何在CLion中設置基本的openMP工程
- 5. 如何從C/C++控制全局OpenMP設置?
- 6. 如何將openmp線程堆棧設置爲無限制?
- 7. 並行計算的C++ + openmp:如何在visual studio中設置?
- 8. 使用openMP和Rcpp設置RNG狀態
- 9. OpenMP:將Fortran指針設置爲PRIVATE()
- 10. 如何設置幾個數量混合動力車OPENMP線程/ MPI程序
- 11. openCL和openMP教程 - 位置?
- 12. 如何提示OpenMP步伐?
- 13. 如何使用OpenMP障礙
- 14. 如何獲取和OpenMP的
- 15. 如何剖析OpenMP瓶頸
- 16. 在openmp中設置每個節的線程數?
- 17. OpenMp根據變量設置並行循環的線程數
- 18. 無法在分叉進程中設置OpenMP線程關聯
- 19. Visual C++ 2008:找不到omp.h?/openMP已設置
- 20. 使用OpenMP在兩個內核上設置線程關聯
- 21. OpenMP基於運行時參數設置固定塊大小
- 22. 如何設置
- 23. 如何設置
- 24. 如何設置
- 25. 如何設置
- 26. 如何設置
- 27. 如何設置
- 28. 如何設置
- 29. 如何設置
- 30. 如何設置
這是否頁面的幫助? http://gcc.gnu.org/onlinedocs/libgomp/Enabling-OpenMP.html#Enabling-OpenMP基本上,你添加了-fopenmp作爲編譯器標誌,並將sprincle #pragma omp whatever添加到你的代碼中 – yosukesabai
什麼是你的編譯器? – osgx
編譯器是MinGW – TGM