深入理解 OpenMP:并行编程的强大工具
1. OpenMP 简介
OpenMP 是一种支持多线程并行编程的 API,编译器版本 8 及更高版本支持 OpenMP 标准,并提供额外的英特尔特定指令。当 OpenMP 选项激活时,支持 OpenMP 的编译器会定义变量 OPENMP 。
OpenMP 程序可以通过不使用 OpenMP 选项的翻译编译成顺序代码,此时翻译过程会忽略所有 OpenMP 指令。不过,对于一些 OpenMP 运行时函数,在翻译成正确的顺序代码时需要特别注意。变量 OPENMP 可用于控制代码向顺序或并行代码的翻译。
2. 编译器指令
在 OpenMP 中,并行性由编译器指令控制。对于 C 和 C++,OpenMP 指令通过 C 和 C++ 标准的 #pragma 机制指定。其一般形式为:
#pragma omp directive [clauses [ ] ...]
该指令需写在单行上。子句是可选的,不同指令的子句不同,子句用于影响指令的行为。在 C 和 C++ 中,指令区分大小写,且仅适用于下一行代码或紧跟指令的代码块(用 { 和 } 括起来)。
2.1 并行区域
最重要的指令是 parallel 构造,语法如下:
#pragma
超级会员免费看
订阅专栏 解锁全文
37

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



