参考文献:
1. 一起来学OpenMP(1)——初体验 系列好文,精读! 尤其 一起来学OpenMP(4)——数据的共享与私有化
2. OpenMP编程指南 系列好文,精读!
当前多核多线程CPU大行其道,如果不能充分利用岂不是太可惜了!特别在图像处理领域,简直是为并行计算而生的!在网上看了不少文章,还是自己总结一下吧。
一
二 开始体验并行吧!
- #include
<iostream> -
- using
namespace std; - int
main() - {
- #pragma
omp parallel -
for (int i=0; i<10; i++) -
{ -
cout << i; -
} -
-
return 0; - }
就是这一行代码,#pragma omp parallel, 至于#pragma是什么如果不明白的话,建议GOOGLE一下, omp表示这个指令是OpenMP的指令,事实上所有OpenMP的指令都带有omp关键字
在我的机器上4核CPU,运行结果:000011112222333344445555
咋一看程序好像抽风了,产生了4个线程同时执行了for循环。通常这不是我们想要的,我们想要的是把for中的任务等分成4份,分别由4个线程各执行其中的一份。这样做其实很简单,只要在parallel后面加上for就可以了。
- #include
<iostream> -
- using
namespace std; - int
main() - {
- #pragma
omp parallel for -
for (int i=0; i<10; i+