跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:OpenMP API 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
声明 OpenMP 构造中所引用变量的数据共享属性的过程称为确定作用域。有关每个数据共享属性的说明,请参见 OpenMP 规范的“数据共享属性子句”一节(第 2 章)。
在 OpenMP 程序中,会为 OpenMP 构造中引用的每个变量确定作用域。通常,可通过两种方法之一来确定构造中所引用变量的作用域。程序员可使用数据共享属性子句来显式声明变量的作用域,或者,编译器中的 OpenMP API 实现可根据 OpenMP 规范的“数据环境:数据作用域规则”一节(第 2 章)自动对预先确定或隐式确定的作用域应用规则。
大多数用户会发现,确定作用域是使用 OpenMP 范例中最难的部分。显式确定变量作用域的过程非常乏味,而且容易出错,尤其是对于大型和复杂的程序而言。而且,在 OpenMP 3.0 规范中针对隐式确定和预先确定变量作用域所指定的规则可能会产生某些意外结果。OpenMP 规范 3.0 中引入的 task 指令增加了确定作用域的复杂性和难度。
自动确定作用域功能(称为自动确定作用域)受 Oracle Solaris Studio 编译器支持,使得程序员无需显式确定变量的作用域,因此是一个很有用的工具。通过自动确定作用域功能,编译器可在非常简单的用户模型中使用一些智能规则来确定变量的作用域。
早期编译器发行版将自动确定作用域功能仅限于 parallel 构造中的变量。当前的 Oracle Solaris Studio 编译器对自动确定作用域功能的范围进行了扩展,包含了 task 构造中引用的变量。