OpenACC并行编程实战

OpenACC并行编程实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2016-10
版次: 1
ISBN: 9787111549659
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 265页
字数: 200千字
10人买过
  • 中国*大OpenACC技术社区创建者撰写,为数不多系统介绍OpenACC的技术专著。全面讲解OpenACC编程规范、语法的行为机理与设计动机,160个完整示例覆盖众多并行编程场景。 
    全书分10章,按照并行程序开发步骤组织,建议第*遍顺序阅读。 
    第1章介绍主流加速器产品的硬件架构、主流并行编程模型等,以期读者对并行编程生态有全面了解。 
    第2章介绍OpenACC语言的设计思路,并列出OpenACC的主要语法供快速查阅。 
    第3章是本书核心,将大量计算并行化,这是程序提速的根本手段。用大量示例讲述两个计算构件parallel和kernels的行为特点,然后用它并行化Jacobi 迭代。 
    第4章介绍多种数据管理工具,包含结构化子语copy/create/present、结构化导语data、非结构化导语enter data/exit data/update/declare等,将加速器带来的数据移动时间减到*少。 
    第5章介绍routine导语,嵌套调用并行化自定义函数,用来开发大型程序。 
    第6章讲解用异步队列隐藏数据传输时间、调度多个加速器同时工作等高级特性。 
    第7章介绍OpenACC与CUDA C/CUDA Fortran和各类库的混合编程。 
    第8章是所有的运行时函数,以供读者编程查阅。 
    第9章指导部署开发环境,以便快速上手。 
    第10章介绍神威·太湖之光的编程模型及其对OpenACC的功能扩展。 

    何沧平,华为高级工程师,NVIDIA认证 CUDA培训师。曾任中科曙光HPC事业部工程师,完成全球天气预报程序并行化项目(加速30倍)和国家气象局天气预报程序并行化项目等,实战经验丰富。精通OpenACC、CUDA Fortran、CUDA C,熟悉OpenMP、MPI编程。2012年初开始关注研究OpenACC,陆续翻译OpenACC 1.0/2.0/2.0a/2.5语言规范以及《CUDA Fortran高效编程实践》,撰写大量在线技术教程,并建立中国*大OpenACC QQ交流群和资源网站,持续推广。 

    序 

    前言 

    第1章 并行编程概览1 

    1.1 加速器产品1 

    1.1.1 英伟达GPU3 

    1.1.2 英特尔至强融核处理器9 

    1.2 并行编程语言12 

    1.3 CUDA C14 

    1.3.1 线程组织方式16 

    1.3.2 运行过程18 

    1.3.3 内存层级20 

    1.3.4 性能优化技术21 

    第2章 OpenACC概览22 

    2.1 OpenACC规范的内容23 

    2.1.1 抽象加速器模型25 

    2.1.2 存储模型25 

    2.1.3 计算执行模型26 

    2.2 OpenACC 2.5规范29 

    第3章 OpenACC计算构件36 

    3.1 条件编译37 

    3.2 导语格式38 

    3.3 计算构件kernels40 

    3.3.1 构件内有1个循环41 

    3.3.2 构件内2个循环44 

    3.3.3 构件内二重嵌套循环45 

    3.3.4 kernels构件内三重嵌套循环48 

    3.4 loop构件52 

    3.4.1 independent子语53 

    3.4.2 reduction归约子语57 

    3.4.3 不常用的子语64 

    3.5 计算构件parallel66 

    3.5.1 gang单独模式68 

    3.5.2 gang分裂模式70 

    3.5.3 二重循环73 

    3.5.4 三重循环75 

    3.6 组合导语77 

    3.7 案例研究:Jacobi迭代78 

    3.7.1 CPU上并行化84 

    3.7.2 GPU上并行化88 

    3.8 原子操作:atomic导语91 

    第4章 数据管理97 

    4.1 数据属性、数据区域和数据生存期99 

    4.2 计算构件的伴随数据区域100 

    4.2.1 引用计数101 

    4.2.2 present子语102 

    4.2.3 copy子语104 

    4.2.4 copyin子语105 

    4.2.5 copyout子语107 

    4.2.6 create子语108 

    4.2.7 数据子语内的子数组111 

    4.2.8 private私有子语112 

    4.2.9 承上私有firstprivate子语115 

    4.2.10 带有预置数据属性的变量116 

    4.2.11 default默认子语117 

    4.2.12 案例研究:Jacobi迭代优化数据传输117 

    4.3 data构件119 

    4.3.1 数据管理功能119 

    4.3.2 deviceptr子语121 

    4.3.3 案例研究:data构件迭代优化Jacobi数据传输122 

    4.4 enter data导语和exit data导语128 

    4.4.1 C++类的数据生存期129 

    4.4.2 传递设备数据指针133 

    4.5 update导语135 

    4.6 declare导语138 

    4.6.1 device_resident子语139 

    4.6.2 create子语140 

    4.6.3 link子语140 

    4.6.4 用法举例141 

    4.7 特定设备的子语146 

    第5章 计算区域内的过程调用148 

    5.1 routine导语150 

    5.2 seq子语(C版)151 

    5.3 seq子语(Fortran版)152 

    5.4 routine(名字)154 

    5.5 bind子语155 

    5.6 用子语指定并行级别155 

    5.6.1 vector级别并行156 

    5.6.2 worker、worker级别并行159 

    5.7 计算圆周率π160 

    第6章 高级特性164 

    6.1 异步操作164 

    6.1.1 async子语165 

    6.1.2 wait子语165 

    6.1.3 wait导语166 

    6.2 设备计算与主机计算重叠166 

    6.3 设备上同时执行多个队列169 

    6.4 重叠计算与数据传输172 

    6.4.1 步骤0:串行代码174 

    6.4.2 步骤1:计算并行化177 

    6.4.3 步骤2:分块计算178 

    6.4.4 步骤3:数据分块传输179 

    6.4.5 步骤4:重叠计算与传输181 

    6.5 双向传输183 

    6.6 多个设备同时运算185 

    6.6.1 环境变量186 

    6.6.2 运行过程中选择设备186 

    6.6.3 OpenMP调动多个设备195 

    第7章 与GPU生态环境互操作202 

    7.1 OpenACC调用CUDA C203 

    7.2 OpenACC调用CUDA Fortran205 

    7.3 CUDA C调用OpenACC207 

    7.4 捆绑主机地址与设备地址208 

    7.5 CUDA Fortran调用OpenACC210 

    7.6 OpenACC(C)调用cuBLAS211 

    7.7 OpenACC(Fortran)调用cuBLAS212 

    第8章 运行时函数213 

    8.1 运行时库的定义213 

    8.2 运行时库例程215 

    8.2.1 acc_get_num_devices215 

    8.2.2 acc_set_device_type216 

    8.2.3 acc_get_device_type217 

    8.2.4 acc_set_device_num217 

    8.2.5 acc_get_device_num218 

    8.2.6 acc_init218 

    8.2.7 acc_shutdown219 

    8.2.8 acc_async_test219 

    8.2.9 acc_async_test_all220 

    8.2.10 acc_wait220 

    8.2.11 acc_wait_async221 

    8.2.12 acc_wait_all221 

    8.2.13 acc_wait_all _async222 

    8.2.14 acc_get_default_async222 

    8.2.15 acc_set_default_async223 

    8.2.16 acc_on_device223 

    8.2.17 acc_malloc224 

    8.2.18 acc_free224 

    8.2.19 acc_copyin225 

    8.2.20 acc_create226 

    8.2.21 acc_copyout227 

    8.2.22 acc_delete228 

    8.2.23 acc_update_device229 

    8.2.24 acc_update_self230 

    8.2.25 acc_map_data231 

    8.2.26 acc_unmap_data231 

    8.2.27 acc_deviceptr231 

    8.2.28 acc_hostptr232 

    8.2.29 acc_is_present232 

    8.2.30 acc_memcpy_to_device233 

    8.2.31 acc_memcpy_from_device233 

    8.2.32 acc_memcpy_device234 

    第9章 开发环境搭建235 

    9.1 Windows 7236 

    9.2 Linux(rhel)244 

    9.3 编译工具、特性支持度247 

    第10章 在神威·太湖之光上使用OpenACC253 

    10.1 SW26010众核处理器253 

    10.2 存储模型254 

    10.3 执行模型256 

    10.4 数据管理256 

    附录 著名超级计算机259 

    后记 码农的悲喜264
  • 内容简介:
    中国*大OpenACC技术社区创建者撰写,为数不多系统介绍OpenACC的技术专著。全面讲解OpenACC编程规范、语法的行为机理与设计动机,160个完整示例覆盖众多并行编程场景。 
    全书分10章,按照并行程序开发步骤组织,建议第*遍顺序阅读。 
    第1章介绍主流加速器产品的硬件架构、主流并行编程模型等,以期读者对并行编程生态有全面了解。 
    第2章介绍OpenACC语言的设计思路,并列出OpenACC的主要语法供快速查阅。 
    第3章是本书核心,将大量计算并行化,这是程序提速的根本手段。用大量示例讲述两个计算构件parallel和kernels的行为特点,然后用它并行化Jacobi 迭代。 
    第4章介绍多种数据管理工具,包含结构化子语copy/create/present、结构化导语data、非结构化导语enter data/exit data/update/declare等,将加速器带来的数据移动时间减到*少。 
    第5章介绍routine导语,嵌套调用并行化自定义函数,用来开发大型程序。 
    第6章讲解用异步队列隐藏数据传输时间、调度多个加速器同时工作等高级特性。 
    第7章介绍OpenACC与CUDA C/CUDA Fortran和各类库的混合编程。 
    第8章是所有的运行时函数,以供读者编程查阅。 
    第9章指导部署开发环境,以便快速上手。 
    第10章介绍神威·太湖之光的编程模型及其对OpenACC的功能扩展。 

  • 作者简介:
    何沧平,华为高级工程师,NVIDIA认证 CUDA培训师。曾任中科曙光HPC事业部工程师,完成全球天气预报程序并行化项目(加速30倍)和国家气象局天气预报程序并行化项目等,实战经验丰富。精通OpenACC、CUDA Fortran、CUDA C,熟悉OpenMP、MPI编程。2012年初开始关注研究OpenACC,陆续翻译OpenACC 1.0/2.0/2.0a/2.5语言规范以及《CUDA Fortran高效编程实践》,撰写大量在线技术教程,并建立中国*大OpenACC QQ交流群和资源网站,持续推广。 

  • 目录:
    序 

    前言 

    第1章 并行编程概览1 

    1.1 加速器产品1 

    1.1.1 英伟达GPU3 

    1.1.2 英特尔至强融核处理器9 

    1.2 并行编程语言12 

    1.3 CUDA C14 

    1.3.1 线程组织方式16 

    1.3.2 运行过程18 

    1.3.3 内存层级20 

    1.3.4 性能优化技术21 

    第2章 OpenACC概览22 

    2.1 OpenACC规范的内容23 

    2.1.1 抽象加速器模型25 

    2.1.2 存储模型25 

    2.1.3 计算执行模型26 

    2.2 OpenACC 2.5规范29 

    第3章 OpenACC计算构件36 

    3.1 条件编译37 

    3.2 导语格式38 

    3.3 计算构件kernels40 

    3.3.1 构件内有1个循环41 

    3.3.2 构件内2个循环44 

    3.3.3 构件内二重嵌套循环45 

    3.3.4 kernels构件内三重嵌套循环48 

    3.4 loop构件52 

    3.4.1 independent子语53 

    3.4.2 reduction归约子语57 

    3.4.3 不常用的子语64 

    3.5 计算构件parallel66 

    3.5.1 gang单独模式68 

    3.5.2 gang分裂模式70 

    3.5.3 二重循环73 

    3.5.4 三重循环75 

    3.6 组合导语77 

    3.7 案例研究:Jacobi迭代78 

    3.7.1 CPU上并行化84 

    3.7.2 GPU上并行化88 

    3.8 原子操作:atomic导语91 

    第4章 数据管理97 

    4.1 数据属性、数据区域和数据生存期99 

    4.2 计算构件的伴随数据区域100 

    4.2.1 引用计数101 

    4.2.2 present子语102 

    4.2.3 copy子语104 

    4.2.4 copyin子语105 

    4.2.5 copyout子语107 

    4.2.6 create子语108 

    4.2.7 数据子语内的子数组111 

    4.2.8 private私有子语112 

    4.2.9 承上私有firstprivate子语115 

    4.2.10 带有预置数据属性的变量116 

    4.2.11 default默认子语117 

    4.2.12 案例研究:Jacobi迭代优化数据传输117 

    4.3 data构件119 

    4.3.1 数据管理功能119 

    4.3.2 deviceptr子语121 

    4.3.3 案例研究:data构件迭代优化Jacobi数据传输122 

    4.4 enter data导语和exit data导语128 

    4.4.1 C++类的数据生存期129 

    4.4.2 传递设备数据指针133 

    4.5 update导语135 

    4.6 declare导语138 

    4.6.1 device_resident子语139 

    4.6.2 create子语140 

    4.6.3 link子语140 

    4.6.4 用法举例141 

    4.7 特定设备的子语146 

    第5章 计算区域内的过程调用148 

    5.1 routine导语150 

    5.2 seq子语(C版)151 

    5.3 seq子语(Fortran版)152 

    5.4 routine(名字)154 

    5.5 bind子语155 

    5.6 用子语指定并行级别155 

    5.6.1 vector级别并行156 

    5.6.2 worker、worker级别并行159 

    5.7 计算圆周率π160 

    第6章 高级特性164 

    6.1 异步操作164 

    6.1.1 async子语165 

    6.1.2 wait子语165 

    6.1.3 wait导语166 

    6.2 设备计算与主机计算重叠166 

    6.3 设备上同时执行多个队列169 

    6.4 重叠计算与数据传输172 

    6.4.1 步骤0:串行代码174 

    6.4.2 步骤1:计算并行化177 

    6.4.3 步骤2:分块计算178 

    6.4.4 步骤3:数据分块传输179 

    6.4.5 步骤4:重叠计算与传输181 

    6.5 双向传输183 

    6.6 多个设备同时运算185 

    6.6.1 环境变量186 

    6.6.2 运行过程中选择设备186 

    6.6.3 OpenMP调动多个设备195 

    第7章 与GPU生态环境互操作202 

    7.1 OpenACC调用CUDA C203 

    7.2 OpenACC调用CUDA Fortran205 

    7.3 CUDA C调用OpenACC207 

    7.4 捆绑主机地址与设备地址208 

    7.5 CUDA Fortran调用OpenACC210 

    7.6 OpenACC(C)调用cuBLAS211 

    7.7 OpenACC(Fortran)调用cuBLAS212 

    第8章 运行时函数213 

    8.1 运行时库的定义213 

    8.2 运行时库例程215 

    8.2.1 acc_get_num_devices215 

    8.2.2 acc_set_device_type216 

    8.2.3 acc_get_device_type217 

    8.2.4 acc_set_device_num217 

    8.2.5 acc_get_device_num218 

    8.2.6 acc_init218 

    8.2.7 acc_shutdown219 

    8.2.8 acc_async_test219 

    8.2.9 acc_async_test_all220 

    8.2.10 acc_wait220 

    8.2.11 acc_wait_async221 

    8.2.12 acc_wait_all221 

    8.2.13 acc_wait_all _async222 

    8.2.14 acc_get_default_async222 

    8.2.15 acc_set_default_async223 

    8.2.16 acc_on_device223 

    8.2.17 acc_malloc224 

    8.2.18 acc_free224 

    8.2.19 acc_copyin225 

    8.2.20 acc_create226 

    8.2.21 acc_copyout227 

    8.2.22 acc_delete228 

    8.2.23 acc_update_device229 

    8.2.24 acc_update_self230 

    8.2.25 acc_map_data231 

    8.2.26 acc_unmap_data231 

    8.2.27 acc_deviceptr231 

    8.2.28 acc_hostptr232 

    8.2.29 acc_is_present232 

    8.2.30 acc_memcpy_to_device233 

    8.2.31 acc_memcpy_from_device233 

    8.2.32 acc_memcpy_device234 

    第9章 开发环境搭建235 

    9.1 Windows 7236 

    9.2 Linux(rhel)244 

    9.3 编译工具、特性支持度247 

    第10章 在神威·太湖之光上使用OpenACC253 

    10.1 SW26010众核处理器253 

    10.2 存储模型254 

    10.3 执行模型256 

    10.4 数据管理256 

    附录 著名超级计算机259 

    后记 码农的悲喜264
查看详情
系列丛书 / 更多
OpenACC并行编程实战
CUDA C编程权威指南
程润伟(John Cheng);马克斯·格罗斯曼(Max Grossman);泰·麦克切尔(Ty McKercher)
OpenACC并行编程实战
科学计算与企业级应用的并行优化
刘文志 著
OpenACC并行编程实战
CUDA高性能并行计算
苏统华 译者;杜安·斯托尔蒂(Duane Storti);梅特·尤尔托卢(Mete Yurtoglu)
OpenACC并行编程实战
高性能计算技术丛书:并行编程方法与优化实践
刘文志 著
OpenACC并行编程实战
并行算法设计与性能优化
刘文志 著
OpenACC并行编程实战
高性能计算的问题解决之道:Linux态势感知方法、实用工具及实践技巧
[美]伊戈尔·卢布希斯(Igor Ljubuncic) 著;张文力 译
OpenACC并行编程实战
多核与GPU编程:工具、方法及实践
张云泉、贾海鹏、李士刚、袁良 译
OpenACC并行编程实战
并行计算:模型与算法
张云泉、袁良 著
OpenACC并行编程实战
OpenCL异构并行编程实战
[美]雷蒙德·泰(Raymond Tay) 著;张立浩 译
OpenACC并行编程实战
OpenCL异构并行计算:原理、机制与优化实践
刘文志、陈轶、吴长江 著
OpenACC并行编程实战
异构处理器OpenCL编程导论
邓仰东、朱茂华 著