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

观众

  • 希望学习如何使用 CUDA 对 NVIDIA GPU 进行编程并利用其并行性的开发人员
  • 希望编写可在不同 CUDA 设备上运行的高性能和可扩展代码的开发人员
  • 希望探索 GPU 编程的低级方面并优化其代码性能的程序员
Overview:

CUDA 是 GPU 程式设计的开放标准,它使代码能够在 NVIDIA GPU 上运行,NVIDIA GPU 广泛用于高性能计算、人工智慧 (AI)、游戏和图形。CUDA 向程式师公开硬体细节,并完全控制并行化过程。但是,这也需要对设备架构、记忆体模型、执行模型和优化技术有很好的理解。

这种由讲师指导的现场培训(在线或现场)面向希望使用 CUDA 对 NVIDIA GPU 进行程式设计并利用其并行性的初级到中级开发人员。

在本次培训结束时,参与者将能够:

  • 设置一个开发环境,其中包括 CUDA 工具包、NVIDIA GPU 和 Visual Studio 代码。
  • 创建一个基本的 CUDA 程式,该程式在 GPU 上执行向量加法并从 GPU 记忆体中检索结果。
  • 使用 CUDA API 查询设备资讯、分配和释放设备记忆体、在主机和设备之间复制数据、启动内核和同步线程。
  • 使用 CUDA C/C++ 语言编写在 GPU 上执行并操作数据的内核。
  • 使用 CUDA 内建函数、变数和库来执行常见任务和操作。
  • 使用 CUDA 记忆体空间(例如全域、共用、常量和本地)来优化数据传输和记忆体访问。
  • 使用 CUDA 执行模型来控制定义并行度的线程、块和网格。
  • 使用 CUDA-GDB、CUDA-MEMCHECK 和 NVIDIA Nsight 等工具调试和测试 CUDA 程式。
  • 使用合并、缓存、预取和分析等技术优化 CUDA 程式。

课程形式

  • 互动讲座和讨论。
  • 大量的练习和练习。
  • 在即时实验室环境中动手实施。

课程自定义选项

  • 要申请本课程的定制培训,请联系我们进行安排。
  • 96% de clients satisfaits
Course Outline:

介绍

  • 什么是CUDA?
  • CUDA 与 OpenCL 与 SYCL
  • CUDA 功能和架构概述
  • 设置开发环境

开始

  • 使用 Visual Studio 代码创建新的 CUDA 项目
  • 浏览项目结构和文件
  • 编译和运行程序
  • 使用 printf 和 fprintf 显示输出

CUDA API

  • 了解 CUDA API 在主机程序中的作用
  • 使用 CUDA API 查询设备信息和功能
  • 使用 CUDA API 分配和释放设备内存
  • 使用 CUDA API 在主机和设备之间复制数据
  • 使用 CUDA API 启动内核和同步线程
  • 使用 CUDA API 处理错误和异常

CUDA C/C++

  • 了解 CUDA C/C++ 在设备程序中的作用
  • 使用 CUDA C/C++ 编写在 GPU 上执行的内核并操作数据
  • 使用 CUDA C/C++ 数据类型、限定符、运算符和表达式
  • 使用 CUDA C/C++ 内置函数,如 math、atomic、warp 等。
  • 使用 CUDA C/C++ 内置变量,如 threadIdx、blockIdx、blockDim 等。
  • 使用 CUDA C/C++ 库,例如 cuBLAS、cuFFT、cuRAND 等。

CUDA 内存模型

  • 了解主机和设备内存模型之间的差异
  • 使用 CUDA 内存空间,例如全局、共享、常量和本地
  • 使用 CUDA 内存对象,例如指针、数组、纹理和表面
  • 使用CUDA内存访问模式,如只读、只写、读写等。
  • 使用 CUDA 内存一致性模型和同步机制

CUDA 执行模型

  • 了解主机和设备执行模型之间的区别
  • 使用 CUDA 线程、块和网格来定义并行度
  • 使用 CUDA 线程函数,例如 threadIdx、blockIdx、blockDim 等。
  • 使用 CUDA 块函数,例如 __syncthreads、__threadfence_block 等。
  • 使用 CUDA 网格函数,例如 gridDim、gridSync、协作组等。

调试

  • 了解 CUDA 程序中的常见错误和错误
  • 使用 Visual Studio 代码调试器检查变量、断点、调用堆栈等。
  • 在 Linux 上使用 CUDA-GDB 调试 CUDA 程序
  • 使用 CUDA-MEMCHECK 检测内存错误和泄漏
  • 使用 NVIDIA Nsight 在 Windows 上调试和分析 CUDA 程序

优化

  • 了解影响 CUDA 程序性能的因素
  • 使用 CUDA 合并技术提高内存吞吐量
  • 使用 CUDA 缓存和预取技术来减少内存延迟
  • 使用 CUDA 共享内存和本地内存技术优化内存访问和带宽
  • 使用 CUDA 分析和分析工具来衡量和改进执行时间和资源利用率

摘要和后续步骤

Sites Published:

United Arab Emirates - GPU Programming with CUDA

Qatar - GPU Programming with CUDA

Egypt - GPU Programming with CUDA

Saudi Arabia - GPU Programming with CUDA

South Africa - GPU Programming with CUDA

Brasil - GPU Programming with CUDA

Canada - GPU Programming with CUDA

中国 - GPU Programming with CUDA

香港 - GPU Programming with CUDA

澳門 - GPU Programming with CUDA

台灣 - GPU Programming with CUDA

USA - GPU Programming with CUDA

Österreich - GPU Programming with CUDA

Schweiz - GPU Programming with CUDA

Deutschland - GPU Programming with CUDA

Czech Republic - GPU Programming with CUDA

Denmark - GPU Programming with CUDA

Estonia - GPU Programming with CUDA

Finland - GPU Programming with CUDA

Greece - GPU Programming with CUDA

Magyarország - GPU Programming with CUDA

Ireland - GPU Programming with CUDA

Luxembourg - GPU Programming with CUDA

Latvia - GPU Programming with CUDA

España - GPU Programming with CUDA

Italia - GPU Programming with CUDA

Lithuania - GPU Programming with CUDA

Nederland - GPU Programming with CUDA

Norway - GPU Programming with CUDA

Portugal - GPU Programming with CUDA

România - GPU Programming with CUDA

Sverige - GPU Programming with CUDA

Türkiye - GPU Programming with CUDA

Malta - GPU Programming with CUDA

Belgique - GPU Programming with CUDA

France - GPU Programming with CUDA

日本 - GPU Programming with CUDA

Australia - GPU Programming with CUDA

Malaysia - GPU Programming with CUDA

New Zealand - GPU Programming with CUDA

Philippines - GPU Programming with CUDA

Singapore - GPU Programming with CUDA

Thailand - GPU Programming with CUDA

Vietnam - GPU Programming with CUDA

India - GPU Programming with CUDA

Argentina - GPU Programming with CUDA

Chile - GPU Programming with CUDA

Costa Rica - GPU Programming with CUDA

Ecuador - GPU Programming with CUDA

Guatemala - GPU Programming with CUDA

Colombia - GPU Programming with CUDA

México - GPU Programming with CUDA

Panama - GPU Programming with CUDA

Peru - GPU Programming with CUDA

Uruguay - GPU Programming with CUDA

Venezuela - GPU Programming with CUDA

Polska - GPU Programming with CUDA

United Kingdom - GPU Programming with CUDA

South Korea - GPU Programming with CUDA

Pakistan - GPU Programming with CUDA

Sri Lanka - GPU Programming with CUDA

Bulgaria - GPU Programming with CUDA

Bolivia - GPU Programming with CUDA

Indonesia - GPU Programming with CUDA

Kazakhstan - GPU Programming with CUDA

Moldova - GPU Programming with CUDA

Morocco - GPU Programming with CUDA

Tunisia - GPU Programming with CUDA

Kuwait - GPU Programming with CUDA

Oman - GPU Programming with CUDA

Slovakia - GPU Programming with CUDA

Kenya - GPU Programming with CUDA

Nigeria - GPU Programming with CUDA

Botswana - GPU Programming with CUDA

Slovenia - GPU Programming with CUDA

Croatia - GPU Programming with CUDA

Serbia - GPU Programming with CUDA

Bhutan - GPU Programming with CUDA

Nepal - GPU Programming with CUDA

Uzbekistan - GPU Programming with CUDA