《OpenACC并行编程实战》—— 2.2 OpenACC 2.5规范

简介: 本节列出OpenACC的主要构件、导语,读完本书后可以在此处快速查阅语法,不必到正文中寻找零星的介绍。初次阅读请跳过。

本节书摘来自华章出版社《OpenACC并行编程实战》一 书中的第2章,第2.2节,作者何沧平,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 OpenACC 2.5规范

本节列出OpenACC的主要构件、导语,读完本书后可以在此处快速查阅语法,不必到正文中寻找零星的介绍。初次阅读请跳过。

1.导语一般格式

C/C++:
#pragma acc 导语名字 [子语列表] 换行
Fortran
!$acc 导语名字 [子语列表]

2. parallel构件

C/C++:
#pragma acc parallel [子语列表] 换行
  结构块
Fortran:
!$acc parallel [子语列表]
  结构块
!$acc end parallel 
parallel构件的子语:
async[( 整数表达式 )]
wait[(整数表达式列表 )]
num_gangs(整数表达式)
num_workers(整数表达式 )
vector_length(整数表达式 )
device_type(设备类型列表)
if(条件)
reduction(操作符:变量列表)
copy(变量列表)
copyin(变量列表)
copyout(变量列表)
create(变量列表)
present(变量列表)
deviceptr(变量列表)
private(变量列表)
firstprivate(变量列表)
default(none|present)

3. kernels构件

C/C++:
#pragma acc kernels [子语列表] 换行
  结构块
Fortran:
!$acc kernels [子语列表]
  结构块 
!$acc end kernels
kernels构件的子语:
async[(整数表达式)]
wait[(整数表达式列表)]
num_gangs(整数表达式)
num_workers(整数表达式)
vector_length(整数表达式)
device_type(设备类型列表)
if(条件)
copy(变量列表)
copyin(变量列表)
copyout(变量列表)
create(变量列表)
present(变量列表)
deviceptr(变量列表)
default(none|present)

4. data构件

C/C++:
#pragma acc data [子语列表] 换行
  结构块
Fortran:
!$acc data [子语列表]  
  结构块 
!$acc end data
data构件的子语:
if(条件)
copy(变量列表)
copyin(变量列表) 
copyout(变量列表) 
create(变量列表)  
present(变量列表) 
deviceptr(变量列表)

5. enter data导语

C/C++:
#pragma acc enter data 子语列表  换行
Fortran:
!$acc enter data 子语列表
enter data的子语:
if(条件)
async[(整数表达式)]
wait[(整数表达式列表)]
copyin(变量列表) 
create(变量列表)

6. exit data导语

C/C++:
#pragma acc exit data 子语列表  换行
Fortran:
!$acc exit data 子语列表
exit data的子语:
if(条件)
async[(整数表达式)]
wait[(整数表达式列表)]
copyout(变量列表)
delete(变量列表)
finalize

7. host_data导语

C/C++:
#pragma acc host_data 子语列表  换行
  结构化块
Fortran:
!$acc host_data 子语列表
  结构化块
!$acc end host_data
host_data的子语:
use_device(变量列表)

8. loop导语

C/C++:
#pragma acc loop [子语表表] 换行
  for循环
Fortran:
!$acc loop [子语列表] 
  do循环
loop的子语:
collapse(n) 
gang[(gang参数列表)] 
worker[([num:]整数表达式)] 
vector[([length:]整数表达式)] 
seq 
auto
tile(尺寸表达式列表)
device_type(设备类型列表)
independent
private(列表) 
reduction(操作符:列表)

9.组合导语

C/ C++:
#pragma acc parallel loop [子语列表] 换行
  for 循环
#pragma acc kernels loop [子语列表] 换行
  for 循环
Fortran:
!$acc parallel loop [子语列表]
  do 循环
[!$acc end parallel loop] 
!$acc kernels loop [子语列表]
  do 循环
[!$acc end kernels loop]

10. declare导语

C/C++:
#pragma acc declare 子语列表 换行
Fortran:
!$acc declare 子语列表
declare的子语:
copy(变量列表)
copyin(变量列表)
copyout(变量列表) 
create(变量列表)
present(变量列表)
deviceptr(变量列表)
device_resident(变量列表)
link(变量列表)

11. init导语

C/C++:
#pragma acc init [子语列表] 换行
Fortran:
!$acc init [子语列表]
init的子语:
device_type( 设备类型列表 )
device_num( 整数表达式 )

12. shutdown导语

C/C++:
#pragma acc shutdown [子语列表] 换行
Fortran:
!$acc shutdown [子语列表]
shutdown的子语:
device_type( 设备类型列表 )
device_num( 整数表达式 )

13. set导语

C/C++:
#pragma acc set [子语列表] 换行
Fortran:
!$acc set [子语列表]
set的子语:
default_async( 整数表达式 )
device_num( 整数表达式 )
device_type( 设备类型列表 )

14. update导语

C/C++:
#pragma acc update 子语列表  换行
Fortran:
!$acc update 子语列表
update的子语:
async[(整数表达式)]
wait[(整数表达式列表)]
device_type(设备类型列表)
if(条件)
if_present
self(变量列表)
host(变量列表)
device(变量列表)

15. routine导语

C/C++:
#pragma acc routine 子语列表 换行
#pragma acc routine(名字) 子语列表 换行
Fortran:
!$acc routine 子语列表
!$acc routine(名字) 子语列表
set的子语:
gang
worker
vector
seq
bind(名字)
bind(字符串)
device_type(设备类型列表)
nohost

16. wait导语

C/C++:
#pragma acc wait [(整数表达式列表)] 子语列表 换行
Fortran:
!$acc wait [(整数表达式列表)] 子语列表 
wait的子语:
async [( 整数表达式)]
相关文章
|
并行计算 C语言 C++
《OpenACC并行编程实战》—— 第2章 OpenACC概览 2.1 OpenACC规范的内容
2007年出现的CUDA C/C++语言引爆了GPU通用计算热潮,但编程比较麻烦,挖掘硬件性能需要很多高超的优化技巧。为了降低编程门槛,2011年11月,Cray、PGI、CAPS和英伟达4家公司联合推出OpenACC 1.0编程标准,2012年3月PGI率先推出支持OpenACC的编译器PGI Accelerator with OpenACC。
3176 0
|
并行计算
《OpenACC并行程序设计:性能优化实践指南》一 3.11 小结
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.11节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1105 0
|
测试技术 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 导读
这是一本关于并行编程的书,不仅仅介绍OpenACC语法或从文档中收集的信息,更介绍了如何编写实际的、高性能的以及可移植的程序,这些程序可以运行在从CPU到GPU的大量设备上。具体而言,书中演示了使用PGI、Cray和PathScale等供应商提供的编译器编译示例代码,并在Intel x86处理器、Cavium 96核64位ARMv8处理器芯片集和NVIDIA GPU上运行。
2266 0
|
并行计算 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 3.6 第一个并行PIConGPU实现
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.6节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1552 0
《OpenACC并行程序设计:性能优化实践指南》一 第1章 从串行编程到并行编程
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1215 0
|
并行计算 测试技术 API
《OpenACC并行程序设计:性能优化实践指南》一 3.4 通过代码插装准备性能测量
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.4节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1285 0
|
测试技术
《OpenACC并行程序设计:性能优化实践指南》一 2.1 测试代码:共轭梯度法
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第2章,第2.1节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1695 0
|
程序员 C++
《OpenACC并行程序设计:性能优化实践指南》一 1.2 简单的任务并行示例
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.2节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1479 0
《OpenACC并行程序设计:性能优化实践指南》一 1.7 让生活更简单
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.7节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1104 0