F. 版本 2.0 中的新功能和说明
本附录总结了从版本 1.0 迁移到版本 2.0 时对 OpenMP C/C++ 规范所做的关键更改。 以下项是添加到规范中的新功能:
OpenMP 指令中允许使用逗号。
添加
num_threads
子句。 此子句允许用户为并行构造请求特定数量的线程。threadprivate 指令已扩展为接受静态块范围变量。
C99 可变长度数组是完整的类型,可以在允许完整类型的任意位置指定,例如在
private
、firstprivate
和lastprivate
子句列表中(请参阅第 2.7.2 节)。并行区域中的私有变量可以在嵌套指令中再次标记为私有。
已添加
copyprivate
子句。 它提供一种机制,用于使用私有变量将值从团队的一个成员广播到其他成员。 在难以提供这样的共享变量时(例如,在每个级别需要不同变量的递归中),这是对值使用共享变量的替代方法。 copyprivate 子句只能出现在single
指令上。添加了与 MPI 例程类似的计时例程 omp_get_wtick 和 omp_get_wtime。 这些函数是执行时钟计时所必需的。
添加了具有 OpenMP C/C++ 中实现定义的行为列表的附录。 在这些情况下,需要一个实现来定义和记录其行为。
以下更改可用于阐明或更正之前适用于 C/C++ 的 OpenMP API 规范中的功能:
阐明了当
omp_in_parallel
返回非零值时 omp_set_nested 和 omp_set_dynamic 的行为未定义。阐明了使用嵌套并行时的指令嵌套。
已将新示例添加到附录 A。