课程大纲

介绍

  • 什么是GPU编程?
  • 为什么要使用GPU编程?
  • GPU编程的挑战和权衡是什么?
  • GPU编程的框架有哪些?
  • 为您的应用程序选择正确的框架

OpenCL

  • 什么是OpenCL?
  • OpenCL的优缺点是什么?
  • 设置OpenCL的开发环境
  • 创建一个执行向量加法的基本OpenCL程序
  • 使用OpenCL API查询设备信息、分配和释放设备内存、在主机和设备之间复制数据、启动内核并同步线程
  • 使用OpenCL C语言编写在设备上执行并操作数据的内核
  • 使用OpenCL内置函数、变量和库来执行常见任务和操作
  • 使用OpenCL内存空间(如全局、本地、常量和私有)来优化数据传输和内存访问
  • 使用OpenCL执行模型来控制定义并行性的工作项、工作组和ND范围
  • 使用CodeXL等工具调试和测试OpenCL程序
  • 使用合并、缓存、预取和分析等技术优化OpenCL程序

CUDA

  • 什么是CUDA?
  • CUDA的优缺点是什么?
  • 设置CUDA的开发环境
  • 创建一个执行向量加法的基本CUDA程序
  • 使用CUDA API查询设备信息、分配和释放设备内存、在主机和设备之间复制数据、启动内核并同步线程
  • 使用CUDA C/C++语言编写在设备上执行并操作数据的内核
  • 使用CUDA内置函数、变量和库来执行常见任务和操作
  • 使用CUDA内存空间(如全局、共享、常量和本地)来优化数据传输和内存访问
  • 使用CUDA执行模型来控制定义并行性的线程、块和网格
  • 使用CUDA-GDB、CUDA-MEMCHECK和NVIDIA Nsight等工具调试和测试CUDA程序
  • 使用合并、缓存、预取和分析等技术优化CUDA程序

ROCm

  • 什么是ROCm?
  • ROCm的优缺点是什么?
  • 设置ROCm的开发环境
  • 创建一个执行向量加法的基本ROCm程序
  • 使用ROCm API查询设备信息、分配和释放设备内存、在主机和设备之间复制数据、启动内核并同步线程
  • 使用ROCm C/C++语言编写在设备上执行并操作数据的内核
  • 使用ROCm内置函数、变量和库来执行常见任务和操作
  • 使用ROCm内存空间(如全局、本地、常量和私有)来优化数据传输和内存访问
  • 使用ROCm执行模型来控制定义并行性的线程、块和网格
  • 使用ROCm调试器和ROCm分析器等工具调试和测试ROCm程序
  • 使用合并、缓存、预取和分析等技术优化ROCm程序

比较

  • 比较OpenCL、CUDA和ROCm的特性、性能和兼容性
  • 使用基准测试和指标评估GPU程序
  • 学习GPU编程的最佳实践和技巧
  • 探索GPU编程的当前和未来趋势与挑战

总结与下一步

要求

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

受众

  • 希望学习如何使用不同框架进行GPU编程并比较其特性、性能和兼容性的开发者
  • 希望编写可在不同平台和设备上运行的便携且可扩展代码的开发者
  • 希望探索GPU编程和优化的权衡与挑战的程序员
 28 小时

即将举行的公开课程

课程分类