JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:OpenMP API 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
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.  子句在指令中的放置

索引

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

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

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

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

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