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.  自动确定变量的作用域

7.  作用域检查

8.  性能注意事项

A.  子句在指令中的放置

B.  转换为 OpenMP

B.1 转换传统 Fortran 指令

B.1.1 转换 Sun 风格的 Fortran 指令

B.1.1.1 Sun 风格的 Fortran 指令和 OpenMP 指令间的问题

B.1.2 转换 Cray 风格的 Fortran 指令

B.1.2.1 Cray 风格的 Fortran 指令和 OpenMP 指令间的问题

B.2 转换传统 C Pragma

B.2.1 传统 C Pragma 与 OpenMP 间的问题

索引

B.2 转换传统 C Pragma

C 编译器接受传统 pragma 来进行显式并行化。《C 用户指南》中有对这些内容的描述。与 Fortran 指令相同,这些只是建议值。

传统并行化 pragma 为:

表 B-5 将传统 C 并行化 Pragma 转换为 OpenMP

传统 C Pragma
等效的 OpenMP Pragma
#pragma MP taskloop [clauses]
#pragma omp parallel for [clauses]
#pragma MP serial_loop
无完全等效指令。可以使用

#pragma omp master

loop

#pragma MP serial_loop_nested
无完全等效指令。可以使用

#pragma omp master

loopnest

taskloop pragma 可带有下列可选子句中的一个或多个子句。

表 B-6 taskloop 可选子句和等效的 OpenMP 子句

taskloop 子句
等效的 OpenMP parallel for 子句
maxcpus(n)
无完全等效指令。使用 num_threads(n)
private(v1,v2,...)
private(v1,v2,...)
shared(v1,v2,...)
shared(v1,v2,...)
readonly(v1,v2,...)
无完全等效指令。使用 firstprivate(v1,v2,...) 可以获得相同效果。
storeback(v1,v2,...)
使用 lastprivate(v1,v2,...) 可以获得相同效果。
savelast
无完全等效指令。使用 lastprivate(v1,v2,...) 可以获得相同效果。
reduction(v1,v2,...)
reduction(operator:v1,v2,...)。必须提供约简操作符和变量列表。
schedtype(spec)
schedule(spec)(请参见表 B-7

schedtype(spec) 子句接受下列调度规范。

表 B-7 SCHEDTYPE 调度和等效的 OpenMP schedule 子句

schedtype(spec)
等效的 OpenMP schedule(spec) 子句
SCHEDTYPE(STATIC)
schedule(static)
SCHEDTYPE(SELF(chunksize))
schedule(dynamic,chunksize)

注意: 缺省 chunksize 为 1。

SCHEDTYPE(FACTORING(m))
无完全等效指令。
SCHEDTYPE(GSS(m))
schedule(guided, m)

缺省 m 为 1。

B.2.1 传统 C Pragma 与 OpenMP 间的问题