感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
介绍
- 什么是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 分析和分析工具来衡量和改进执行时间和资源利用率
摘要和后续步骤
要求
- 了解 C/C++ 语言和并行编程概念
- 计算机体系结构和内存层次结构的基础知识
- 具有命令行工具和代码编辑器的经验
观众
- 希望学习如何使用 CUDA 对 NVIDIA GPU 进行编程并利用其并行性的开发人员
- 希望编写可在不同 CUDA 设备上运行的高性能和可扩展代码的开发人员
- 希望探索 GPU 编程的低级方面并优化其代码性能的程序员
28 小时