感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
介绍
- 什么是 OpenACC?
- OpenACC 与 OpenCL 与 CUDA 与 SYCL
- OpenACC 功能和体系结构概述
- 设置开发环境
开始
- 使用 Visual Studio 代码创建新的 OpenACC 项目
- 探索项目结构和文件
- 编译和运行程序
- 使用 printf 和 fprintf 显示输出
OpenACC 指令和条款
- 了解 OpenACC 指令和子句在主机和设备代码中的作用
- 使用 OpenACC 并行指令和子句创建并行区域并指定 gang、worker 和 vector 的数量
- 使用 OpenACC 内核指令和子句创建内核区域,并让编译器决定并行性
- 使用 OpenACC 循环指令和子句并行化循环并指定循环分布、折叠、缩减和平铺
- 使用 OpenACC 数据指令和子句管理数据移动和数据区域
- 使用 OpenACC 更新指令和子句在主机和设备之间同步数据
- 使用 OpenACC 缓存指令和子句来改进数据重用和局部性
- 使用 OpenACC 例程指令和子句创建设备函数并指定函数类型和向量长度
- 使用 OpenACC wait 指令和子句同步事件和依赖项
OpenACC 接口
- 了解 OpenACC API 在主机程序中的作用
- 使用 OpenACC API 查询设备信息和功能
- 使用 OpenACC API 设置设备编号和设备类型
- 使用 OpenACC API 处理错误和异常
- 使用 OpenACC API 创建和同步事件
OpenACC 库和互操作性
- 了解 OpenACC 库和互操作性功能在设备程序中的作用
- 使用 OpenACC 库(如数学库、随机库和复数库)执行常见任务和操作
- 使用 OpenACC 互操作性功能(如 deviceptr、use_device 和 acc_memcpy)将 OpenACC 与其他编程模型(如 CUDA、OpenMP 和 MPI)集成
- 使用 OpenACC 互操作性功能(如 host_data 和 declare)将 OpenACC 与 GPU 库(如 cuBLAS 和 cuFFT)集成
OpenACC 工具
- 了解 OpenACC 工具在开发过程中的作用
- 使用 OpenACC 工具分析和调试 OpenACC 程序,并确定性能瓶颈和机会
- 使用 OpenACC 工具(如 PGI 编译器、NVIDIA Nsight Systems 和 Allinea Forge)来衡量和提高执行时间和资源利用率
优化
- 了解影响 OpenACC 程序性能的因素
- 使用 OpenACC 指令和子句来优化数据局部性并减少数据传输
- 使用 OpenACC 指令和子句来优化循环并行性和融合
- 使用 OpenACC 指令和子句优化内核并行性和融合
- 使用 OpenACC 指令和子句优化矢量化和自动调整
摘要和后续步骤
要求
- 了解 C/C++ 或 Fortran 语言和并行编程概念
- 计算机体系结构和内存层次结构的基础知识
- 具有命令行工具和代码编辑器的经验
观众
- 希望了解如何使用 OpenACC 对异构设备进行编程并利用其并行性的开发人员
- 希望编写可在不同平台和设备上运行的可移植且可扩展代码的开发人员
- 希望探索异构编程的高级方面并优化其代码生产力的程序员
28 小时
客户评论 (2)
与各种示例非常互动,在培训开始和结束之间的复杂性进展良好。
Jenny - Andheo
课程 - GPU Programming with CUDA and Python
机器翻译
培训师精力充沛,幽默风趣。
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
课程 - NVIDIA GPU Programming - Extended
机器翻译