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

受众

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

GPU编程是一种利用GPU的并行处理能力来加速需要高性能计算的应用(如人工智能、游戏、图形和科学计算)的技术。有多种框架支持GPU编程,每种框架都有其优点和缺点。OpenCL是一个开放标准,可用于编程来自不同供应商的CPU、GPU和其他设备,而CUDA则专用于NVIDIA的GPU。ROCm是一个支持在AMD GPU上进行GPU编程的平台,同时也提供了与CUDA和OpenCL的兼容性。

本课程为讲师指导的培训(线上或线下),面向希望使用不同GPU编程框架并比较其特性、性能和兼容性的初级到中级开发者。

通过本课程,学员将能够:

  • 设置包含OpenCL SDK、CUDA Toolkit、ROCm Platform、支持OpenCL、CUDA或ROCm的设备以及Visual Studio Code的开发环境。
  • 使用OpenCL、CUDA和ROCm创建一个执行向量加法的基本GPU程序,并比较各框架的语法、结构和执行方式。
  • 使用各自的API查询设备信息、分配和释放设备内存、在主机和设备之间复制数据、启动内核并同步线程。
  • 使用各自的语言编写在设备上执行并操作数据的内核。
  • 使用各自的内置函数、变量和库来执行常见任务和操作。
  • 使用各自的内存空间(如全局、局部、常量和私有)来优化数据传输和内存访问。
  • 使用各自的执行模型来控制定义并行性的线程、块和网格。
  • 使用CodeXL、CUDA-GDB、CUDA-MEMCHECK和NVIDIA Nsight等工具调试和测试GPU程序。
  • 使用合并、缓存、预取和分析等技术优化GPU程序。

课程形式

  • 互动讲座和讨论。
  • 大量练习和实践。
  • 在实验环境中进行实际操作。

课程定制选项

  • 如需为本课程定制培训,请联系我们进行安排。
Course Outline:

简介

  • 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 Debugger和ROCm Profiler等工具调试和测试ROCm程序
  • 使用合并、缓存、预取和性能分析等技术优化ROCm程序

对比

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

总结与下一步

Sites Published:

United Arab Emirates - GPU Programming - OpenCL vs CUDA vs ROCm

Qatar - GPU Programming - OpenCL vs CUDA vs ROCm

Egypt - GPU Programming - OpenCL vs CUDA vs ROCm

Saudi Arabia - GPU Programming - OpenCL vs CUDA vs ROCm

South Africa - GPU Programming - OpenCL vs CUDA vs ROCm

Brasil - GPU Programming - OpenCL vs CUDA vs ROCm

Canada - GPU Programming - OpenCL vs CUDA vs ROCm

中国 - GPU Programming - OpenCL vs CUDA vs ROCm

香港 - GPU Programming - OpenCL vs CUDA vs ROCm

澳門 - GPU Programming - OpenCL vs CUDA vs ROCm

台灣 - GPU Programming - OpenCL vs CUDA vs ROCm

USA - GPU Programming - OpenCL vs CUDA vs ROCm

Österreich - GPU Programming - OpenCL vs CUDA vs ROCm

Schweiz - GPU Programming - OpenCL vs CUDA vs ROCm

Deutschland - GPU Programming - OpenCL vs CUDA vs ROCm

Czech Republic - GPU Programming - OpenCL vs CUDA vs ROCm

Denmark - GPU Programming - OpenCL vs CUDA vs ROCm

Estonia - GPU Programming - OpenCL vs CUDA vs ROCm

Finland - GPU Programming - OpenCL vs CUDA vs ROCm

Greece - GPU Programming - OpenCL vs CUDA vs ROCm

Magyarország - GPU Programming - OpenCL vs CUDA vs ROCm

Ireland - GPU Programming - OpenCL vs CUDA vs ROCm

Luxembourg - GPU Programming - OpenCL vs CUDA vs ROCm

Latvia - GPU Programming - OpenCL vs CUDA vs ROCm

España - GPU Programming - OpenCL vs CUDA vs ROCm

Italia - GPU Programming - OpenCL vs CUDA vs ROCm

Lithuania - GPU Programming - OpenCL vs CUDA vs ROCm

Nederland - GPU Programming - OpenCL vs CUDA vs ROCm

Norway - GPU Programming - OpenCL vs CUDA vs ROCm

Portugal - GPU Programming - OpenCL vs CUDA vs ROCm

România - GPU Programming - OpenCL vs CUDA vs ROCm

Sverige - GPU Programming - OpenCL vs CUDA vs ROCm

Türkiye - GPU Programming - OpenCL vs CUDA vs ROCm

Malta - GPU Programming - OpenCL vs CUDA vs ROCm

Belgique - GPU Programming - OpenCL vs CUDA vs ROCm

France - GPU Programming - OpenCL vs CUDA vs ROCm

日本 - GPU Programming - OpenCL vs CUDA vs ROCm

Australia - GPU Programming - OpenCL vs CUDA vs ROCm

Malaysia - GPU Programming - OpenCL vs CUDA vs ROCm

New Zealand - GPU Programming - OpenCL vs CUDA vs ROCm

Philippines - GPU Programming - OpenCL vs CUDA vs ROCm

Singapore - GPU Programming - OpenCL vs CUDA vs ROCm

Thailand - GPU Programming - OpenCL vs CUDA vs ROCm

Vietnam - GPU Programming - OpenCL vs CUDA vs ROCm

India - GPU Programming - OpenCL vs CUDA vs ROCm

Argentina - GPU Programming - OpenCL vs CUDA vs ROCm

Chile - GPU Programming - OpenCL vs CUDA vs ROCm

Costa Rica - GPU Programming - OpenCL vs CUDA vs ROCm

Ecuador - GPU Programming - OpenCL vs CUDA vs ROCm

Guatemala - GPU Programming - OpenCL vs CUDA vs ROCm

Colombia - GPU Programming - OpenCL vs CUDA vs ROCm

México - GPU Programming - OpenCL vs CUDA vs ROCm

Panama - GPU Programming - OpenCL vs CUDA vs ROCm

Peru - GPU Programming - OpenCL vs CUDA vs ROCm

Uruguay - GPU Programming - OpenCL vs CUDA vs ROCm

Venezuela - GPU Programming - OpenCL vs CUDA vs ROCm

Polska - GPU Programming - OpenCL vs CUDA vs ROCm

United Kingdom - GPU Programming - OpenCL vs CUDA vs ROCm

South Korea - GPU Programming - OpenCL vs CUDA vs ROCm

Pakistan - GPU Programming - OpenCL vs CUDA vs ROCm

Sri Lanka - GPU Programming - OpenCL vs CUDA vs ROCm

Bulgaria - GPU Programming - OpenCL vs CUDA vs ROCm

Bolivia - GPU Programming - OpenCL vs CUDA vs ROCm

Indonesia - GPU Programming - OpenCL vs CUDA vs ROCm

Kazakhstan - GPU Programming - OpenCL vs CUDA vs ROCm

Moldova - GPU Programming - OpenCL vs CUDA vs ROCm

Morocco - GPU Programming - OpenCL vs CUDA vs ROCm

Tunisia - GPU Programming - OpenCL vs CUDA vs ROCm

Kuwait - GPU Programming - OpenCL vs CUDA vs ROCm

Oman - GPU Programming - OpenCL vs CUDA vs ROCm

Slovakia - GPU Programming - OpenCL vs CUDA vs ROCm

Kenya - GPU Programming - OpenCL vs CUDA vs ROCm

Nigeria - GPU Programming - OpenCL vs CUDA vs ROCm

Botswana - GPU Programming - OpenCL vs CUDA vs ROCm

Slovenia - GPU Programming - OpenCL vs CUDA vs ROCm

Croatia - GPU Programming - OpenCL vs CUDA vs ROCm

Serbia - GPU Programming - OpenCL vs CUDA vs ROCm

Bhutan - GPU Programming - OpenCL vs CUDA vs ROCm

Nepal - GPU Programming - OpenCL vs CUDA vs ROCm

Uzbekistan - GPU Programming - OpenCL vs CUDA vs ROCm