联系我们
 课程时长 28 小时

课程大纲

引言

  • 什么是CUDA?
  • CUDA与OpenCL与SYCL的比较
  • CUDA特性和架构概述
  • 搭建开发环境

入门

  • 使用Visual Studio Code创建新的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++内置函数,如数学、原子操作、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程序中常见的错误和bug
  • 使用Visual Studio Code调试器检查变量、断点、调用栈等
  • 在Linux上使用CUDA-GDB调试CUDA程序
  • 使用CUDA-MEMCHECK检测内存错误和泄漏
  • 在Windows上使用NVIDIA Nsight调试和分析CUDA程序

优化

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

要求

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

受众

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

即将举行的公开课程

课程分类