- 了解C/C++语言和并行编程概念
- 具备计算机架构和内存层次结构的基础知识
- 有使用命令行工具和代码编辑器的经验
受众
- 希望学习如何使用不同框架进行GPU编程,并比较其特性、性能和兼容性的开发者
- 希望编写可在不同平台和设备上运行的便携且可扩展代码的开发者
- 希望探索GPU编程和优化的权衡与挑战的程序员
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程序。
课程形式
- 互动讲座和讨论。
- 大量练习和实践。
- 在实验环境中进行实际操作。
课程定制选项
- 如需为本课程定制培训,请联系我们进行安排。
简介
- 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编程的当前和未来趋势与挑战
总结与下一步
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