VS2010+OpenMP的简单使用

OpenMP是把程序中的循环操做分给电脑的各个CPU处理器并行进行。好比说我要循环运行100次,个人电脑有两个处理器,那OpenMP就会平均分给两个处理器并行运行,每一个处理器运行50次。
使用方法
1. 在工程中的解决方案资源管理器中,工程右键——属性——配置属性——C/C++——语言,把其中的OpenMP支持设置为是。

2. 在代码中添加头文件:spa

#include <omp.h>

3. 在须要并行的for循环代码上添加代码code

#pragma omp parallel for
for(int i=0;i<50;i++) { }

另外,用int num=omp_get_num_procs();获取能够使用的处理器个数。
结果
在四个处理器的电脑上,未使用以前,每一个处理器的使用率大概在35%左右,使用后,使用率能够达到90%多,运行时间减小42.66%。
在八个处理器的电脑上,未使用以前,每一个处理器的使用率大概在30%左右,使用后,使用率能够达到100%左右,运行时间减小76.63%。
注意
1. 使用OpenMP后,循环运行不是按顺序运行的,好比在循环中打印i的值,就会发现打印出来的值不是按顺序打印的。
2. 使用OpenMP时,循环的次数必须是肯定的。
3. for循环中的操做必须是肯定的,也就是说不论i值是多少,均可以确切运行循环中的操做,好比不能出现a[i]=a[i-1]+a[i+1]之类的操做。
4. 注意循环中的内存处理,不要有冲突。blog

相关文章
相关标签/搜索