课程大纲

简介

  • 什么是OpenACC?
  • OpenACC与OpenCL、CUDA、SYCL的比较
  • OpenACC功能和架构概述
  • 搭建开发环境

入门

  • 在Visual Studio Code中创建OpenACC项目
  • 探索项目结构和文件
  • 编译并运行程序
  • 使用printf和fprintf显示输出

OpenACC指令和子句

  • 理解OpenACC指令和子句
  • 使用parallel指令创建并行区域
  • 使用kernels指令实现编译器管理的并行性
  • 使用loop指令并行化循环
  • 使用data指令管理数据移动
  • 使用update指令同步数据
  • 使用cache指令提高数据重用
  • 使用routine指令创建设备函数
  • 使用wait指令同步事件

OpenACC API

  • 理解OpenACC API的作用
  • 查询设备信息和功能
  • 设置设备编号和类型
  • 处理错误和异常
  • 创建并同步事件

OpenACC库与互操作性

  • 理解OpenACC库与互操作性
  • 使用数学、随机和复数库
  • 与其他模型集成(CUDA、OpenMP、MPI)
  • 与GPU库集成(cuBLAS、cuFFT)

OpenACC工具

  • 理解开发中的OpenACC工具
  • 对OpenACC程序进行性能分析和调试
  • 使用PGI编译器、NVIDIA Nsight Systems、Allinea Forge进行性能分析

优化

  • 影响OpenACC程序性能的因素
  • 优化数据局部性并减少传输
  • 优化循环并行性和融合
  • 优化内核并行性和融合
  • 优化向量化和自动调优

总结与下一步

要求

  • 了解C/C++或Fortran语言以及并行编程概念
  • 具备计算机架构和内存层次结构的基础知识
  • 有使用命令行工具和代码编辑器的经验

受众

  • 希望学习如何使用OpenACC编程异构设备并利用其并行性的开发者
  • 希望编写可在不同平台和设备上运行的可移植和可扩展代码的开发者
  • 希望探索异构编程的高级方面并优化代码效率的程序员
 28 小时

即将举行的公开课程

课程分类