Oracle® Solaris Studio 12.4:OpenMP API 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

4.2 OpenMP 数据环境

task 指令采用以下数据共享属性子句,这些子句可定义任务的数据环境:

  • default (private | firstprivate | shared | none)

  • private (list)

  • firstprivate (list)

  • shared (list)

在任务内对 shared 子句中列出的变量的所有引用是指在遇到 task 构造时已知的同名变量。

对于每个 privatefirstprivate 变量,都会创建一个新存储,并且对 task 构造词法范围内的原始变量的所有引用都会被对新存储的引用所替换。遇到任务构造时,将会使用原始变量的值初始化 firstprivate 变量。

OpenMP 规范介绍了并行、任务或工作共享构造中所引用变量的数据共享属性如何确定。

构造中引用的变量的数据共享属性可以是以下属性之一:预先确定显式确定隐式确定。特定变量有预先确定的数据共享属性;例如,parallel for/do 构造中的循环迭代变量是专用变量。具有显式确定数据共享属性的变量是那些在给定构造中引用,并在构造的数据共享属性子句中列出的变量。具有隐式确定数据共享属性的变量是那些在给定构造中引用、不具有预先确定数据共享属性,并且不在构造的数据共享属性子句中列出的变量。


注 -  有关如何隐式确定变量的数据共享属性的规则可能并不总是很直观。为避免意外,请确保使用数据共享属性子句显式确定任务构造中引用的所有变量的作用域,而不要依赖 OpenMP 隐式确定作用域规则。