感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程时长 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编程的底层方面并优化代码性能的程序员