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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值