OpenMP并行计算
配置OpenMP环境
选择项目->FeatureReuse属性->C/C+±>语言->OpenMP支持(是)
使用方法
在自己的代码中直接添加#pragma omp parallel for 可以变为OpenMP的并行计算。
限制条件:
1、OpenMP只能并行化for循环,它不会并行while和do-while循环,而且只能并行循环次数在for循环外面就确定了的for循环。
2、循环变量只能是整型和指针类型(不能是浮点型)。
3、循环语句只能是单入口单出口的。循环内部不能改变index,而且里面不能有goto、break、return。但是可以使用continue,因为它并不会减少循环次数。另外exit语句也是可以用的,因为它的能力太大,他一来,程序就结束了。
基础理论
OpenMP的并行计算程序总是以
#pragma omp
开始。
在#pragma opm后面是一条parallel指令,用来表明之后是一个结构化代码块,最基本的parallel指令可以用如下的形式表示:
#pragma omp parallel
如果使用上面这条简单的指令去运行并行计算的话,程序的线程数将由运行时系统决定(这里使用的算法十分复杂),典型的情况下,系统将在每一个核上运行一个线程。如果需要执行使用多少个线程来执行我们的并行程序,就得为parallel指令增加num_threads子句,这样的话,就允许程序员指定执行后代码块的线程数。
#pragma omp parallel num_threads(thread_count)
在程序中,为了能够使用OpenMP函数,还需要在程序包含omp.h头文件:
#include <omp.h>
转自:https://www.cnblogs.com/hantan2008/p/5961312.html