Introduction to GPU Programming ( gpuprog | 21 hours )

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

观众

  • 希望学习 GPU 编程基础知识以及开发 GPU 应用程序的主要框架和工具的开发人员
  • 希望编写可在不同平台和设备上运行的可移植和可扩展代码的开发人员
  • 希望探索 GPU 编程和优化的好处和挑战的程序员
Overview:

GPU 编程是一种利用 GPU 的并行处理能力来加速需要高性能计算的应用程序的技术,例如人工智能、游戏、图形和科学计算。有几种框架和工具可以实现 GPU 编程,每种框架和工具都有自己的优点和缺点。一些最受欢迎的是 OpenCL、CUDA、ROCm 和 HIP。

这种以讲师为主导的现场培训(现场或远程)针对的是希望学习GPU编程基础知识以及开发GPU应用程序的主要框架和工具的初级到中级开发人员。

  • 在培训结束时,参与者将能够:
    了解 CPU 和 GPU 计算之间的区别以及 GPU 编程的好处和挑战。
  • 为他们的 GPU 应用程序选择正确的框架和工具。
  • 创建一个基本的 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 API 查询设备信息、分配和释放设备内存、在主机和设备之间复制数据、启动内核和同步线程
  • 使用 ROCm C/C++ 语言编写在设备上执行的内核并操作数据
  • 使用 ROCm 内置函数、变量和库执行常见任务和操作
  • 使用 ROCm 内存空间(如全局、本地、常量和专用)来优化数据传输和内存访问
  • 使用 ROCm 执行模型来控制定义并行度的线程、块和网格
  • 使用 ROCm Debugger 和 ROCm Profiler 等工具调试和测试 ROCm 程序
  • 使用合并、缓存、预取和分析等技术优化 ROCm 程序

臀部

  • 什么是HIP?
  • HIP的优点和缺点是什么?
  • 设置 HIP 的开发环境
  • 创建执行向量加法的基本 HIP 程序
  • 使用 HIP 语言编写在设备上执行的内核并操作数据
  • 使用 HIP 内置函数、变量和库执行常见任务和操作
  • 使用 HIP 内存空间(如全局、共享、常量和本地)来优化数据传输和内存访问
  • 使用 HIP 执行模型来控制定义并行度的线程、块和网格
  • 使用 ROCm Debugger 和 ROCm Profiler 等工具调试和测试 HIP 程序
  • 使用合并、缓存、预取和分析等技术优化 HIP 程序

比较

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

总结和下一步

Sites Published:

United Arab Emirates - Introduction to GPU Programming

Qatar - Introduction to GPU Programming

Egypt - Introduction to GPU Programming

Saudi Arabia - Introduction to GPU Programming

South Africa - Introduction to GPU Programming

Brasil - Introduction to GPU Programming

Canada - Introduction to GPU Programming

中国 - Introduction to GPU Programming

香港 - Introduction to GPU Programming

澳門 - Introduction to GPU Programming

台灣 - Introduction to GPU Programming

USA - Introduction to GPU Programming

Österreich - Introduction to GPU Programming

Schweiz - Introduction to GPU Programming

Deutschland - Introduction to GPU Programming

Czech Republic - Introduction to GPU Programming

Denmark - Introduction to GPU Programming

Estonia - Introduction to GPU Programming

Finland - Introduction to GPU Programming

Greece - Introduction to GPU Programming

Magyarország - Introduction to GPU Programming

Ireland - Introduction to GPU Programming

Luxembourg - Introduction to GPU Programming

Latvia - Introduction to GPU Programming

España - Introduction to GPU Programming

Italia - Introduction to GPU Programming

Lithuania - Introduction to GPU Programming

Nederland - Introduction to GPU Programming

Norway - Introduction to GPU Programming

Portugal - Introduction to GPU Programming

România - Introduction to GPU Programming

Sverige - Introduction to GPU Programming

Türkiye - Introduction to GPU Programming

Malta - Introduction to GPU Programming

Belgique - Introduction to GPU Programming

France - Introduction to GPU Programming

日本 - Introduction to GPU Programming

Australia - Introduction to GPU Programming

Malaysia - Introduction to GPU Programming

New Zealand - Introduction to GPU Programming

Philippines - Introduction to GPU Programming

Singapore - Introduction to GPU Programming

Thailand - Introduction to GPU Programming

Vietnam - Introduction to GPU Programming

India - Introduction to GPU Programming

Argentina - Introduction to GPU Programming

Chile - Introduction to GPU Programming

Costa Rica - Introduction to GPU Programming

Ecuador - Introduction to GPU Programming

Guatemala - Introduction to GPU Programming

Colombia - Introduction to GPU Programming

México - Introduction to GPU Programming

Panama - Introduction to GPU Programming

Peru - Introduction to GPU Programming

Uruguay - Introduction to GPU Programming

Venezuela - Introduction to GPU Programming

Polska - Introduction to GPU Programming

United Kingdom - Introduction to GPU Programming

South Korea - Introduction to GPU Programming

Pakistan - Introduction to GPU Programming

Sri Lanka - Introduction to GPU Programming

Bulgaria - Introduction to GPU Programming

Bolivia - Introduction to GPU Programming

Indonesia - Introduction to GPU Programming

Kazakhstan - Introduction to GPU Programming

Moldova - Introduction to GPU Programming

Morocco - Introduction to GPU Programming

Tunisia - Introduction to GPU Programming

Kuwait - Introduction to GPU Programming

Oman - Introduction to GPU Programming

Slovakia - Introduction to GPU Programming

Kenya - Introduction to GPU Programming

Nigeria - Introduction to GPU Programming

Botswana - Introduction to GPU Programming

Slovenia - Introduction to GPU Programming

Croatia - Introduction to GPU Programming

Serbia - Introduction to GPU Programming

Bhutan - Introduction to GPU Programming

Nepal - Introduction to GPU Programming