并行编程与设计模式深度解析
1. 并行编程基础与 OpenMP 应用
在相同系统和编译器环境下(包含 OpenMP 库)编译并运行程序,会得到如下结果:
Sum is 785398164.1475 and Area: pi/4 is 0.785398
Approximation to pi is 3.141593
real 2.24
user 17.06
sys 0.00
在计算程序中, sum 变量在 for 循环里累加。当采用工作共享并将循环工作分配到多个线程时,这是如何实现的呢?这种在循环中每次累积部分值的方式被称为归约(reduction)。此时可使用 OpenMP 编译器指令 reduction(<operator> : <list of variables>) ,该指令会产生以下效果:
1. 为每个变量创建并初始化一个本地副本。
2. 线程中的更新仅作用于本地副本。
3. 循环执行结束后,本地副本会归约为单个值,并使用指定运算符合并到原始全局变量中。
可用于归约的运算符有: + 、 - 、 * 、 max 、 min 、 & 、 | 、 ^ 、 &&
超级会员免费看
订阅专栏 解锁全文
6342

被折叠的 条评论
为什么被折叠?



