JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.2:OpenMP API 用户指南
search filter icon
search icon

文档信息

前言

1.  OpenMP API 简介

2.  编译并运行 OpenMP 程序

3.  实现定义的行为

4.  嵌套并行操作

5.  任务处理

6.  自动确定变量的作用域

6.1 自动作用域数据范围子句

6.1.1 __auto 子句

6.1.2 default(__auto) 子句

6.2 并行构造的作用域规则

6.2.1 标量变量的作用域规则

6.2.2 数组的作用域规则

6.3 任务构造的作用域规则

6.3.1 标量变量的作用域规则

6.3.2 数组的作用域规则

6.4 关于自动作用域的通用注释

6.5 限制

6.6 检查自动作用域的结果

6.7 自动作用域示例

7.  作用域检查

8.  性能注意事项

A.  子句在指令中的放置

B.  转换为 OpenMP

索引

6.4 关于自动作用域的通用注释

注意,在将来的版本中,任务自动作用域规则和自动作用域结果可能会有所更改。而且,隐式确定的作用域规则和自动作用域规则的应用顺序在将来的版本中也会发生更改。

程序员使用 _auto(list-of-variables) 子句或 default(_auto) 子句显式请求自动作用域。为并行构造指定 default(_auto)_auto(list-of-variables) 子句,并不意味着将同一子句应用于在语法上或动态包含在并行构造中的任务构造。

在对没有预先确定隐式作用域的变量自动确定作用域时,编译器会按给定顺序根据上述规则来检查变量的使用。如果符合某个规则,编译器将按照匹配的规则确定变量的作用域。如果没有匹配的规则或自动作用域无法处理变量(如下所述,存在某些限制),编译器会将变量的作用域确定为 SHARED,并将并行任务构造视为如同指定了 IF (.FALSE.)if(0) 子句一样。

通常,自动确定作用域失败的原因有两个。一个原因是使用的变量不匹配任何规则。第二个原因是源代码对于编译器来说过于复杂,因而无法执行全面的分析。函数调用、复杂的数组下标、内存别名和用户实现的同步都是常见原因。