OpenMP 条件并行化 - 并行部分中 if 子句的语法
OpenMP conditional parallelization - syntax for if clause in parallel sections
并行部分模板为:
#pragma omp parallel sections{
#pragma omp section{
//parallelized
}
#pragma omp section{
//parallelized
}
}
使用if clause
有条件地并行化它的正确方法是什么?
在最外层#pragma
中添加if (condition)
是否足够,还是还需要在每个内部#pragma
中指定?
#pragma omp parallel sections if(condition){
#pragma omp section{ //is if(condition) needed here also?
//parallelized or serialized depending on if(condition)
}
#pragma omp section{ //is if(condition) needed here also?
//parallelized or serialized depending on if(condition)
}
}
根据 OpenMP 4.5 文档,并行部分构造的语法如下:
#pragma omp parallel sections [clause[[,] clause...]
{
# pragma omp section
{
}
# pragma omp section
{
}
}
所以你应该只把if子句放在外面#pragma
。 而且(至少根据我对 OpenMP 的经验是这样(您应该{
放在编译指示语句之后的新行中,而不是放在它的末尾。因为任何#pragma
语句都是预处理器宏,并且它不会分析{
。
相关文章:
- 如何理解C++标准N3337中的expr.const.cast子句8
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- if 子句中的赋值不起作用
- 在编译时计算"if"子句
- OpenMP 条件并行化 - 并行部分中 if 子句的语法
- if子句中的有条件分配
- 如何摆脱If-Elif-Else子句
- 在if子句中自动分配
- 在C++中,if子句中的变量没有初始化
- if子句中没有括号的多行代码块的奇怪行为
- 子句内多个条件"if"求值顺序
- 基于if子句的c++模板实例化
- SIMD指令缺少OpenMP if子句