联系我们

课程大纲

GPU加速计算简介

  • 异构计算与CPU-GPU架构。
  • CUDA执行空间与内存空间。
  • 使用nvcc和CMake编译CUDA C++代码。
  • 验证GPU开发环境。

Thrust与CUB并行算法

  • GPU加速的排序、规约和转换操作。
  • 重构STL算法以支持GPU执行。
  • Thrust设备向量及执行策略。
  • 用于自定义流水线的CUB设备级原语。

GPU内存架构与管理

  • 全局、常量和纹理内存类型。
  • 显式的设备内存分配与传输。
  • 用于简化数据访问的统一内存。
  • 内存合并及访问模式优化。

CUDA流的异步执行

  • 创建和管理CUDA流。
  • 重叠内核执行与数据传输。
  • 利用CUDA事件管理依赖关系。
  • 流优先级与并发调优。

编写自定义CUDA内核

  • SIMT编程模型与Warp执行机制。
  • 内核启动配置及Grid跨度循环。
  • 线程索引与多维Grid。
  • 错误处理与CUDA运行时API检查。

线程层级与执行模型

  • 设备代码中的Grid、Block和Thread。
  • Warp级原语与投票操作。
  • Block级同步与屏障。
  • 占用率与资源利用率分析。

用于灵活并行的协作组

  • 协作者组API及组类型。
  • 线程块图块与tiled_partition。
  • Grid级协作启动。
  • 多Grid同步模式。

共享内存优化技术

  • 共享内存银行及避免Bank冲突。
  • 矩阵运算的分块策略。
  • 作为用户管理缓存的共享内存。
  • 用于多维视图的cuda::shared_memory_mdspan。

内核融合与高级并行模式

  • 融合多个内核以减少启动开销。
  • 扫描、按键规约及分段算法。
  • 原子操作与无锁数据结构。
  • 用于提升吞吐量的Warp聚合原子操作。

Nsight Systems剖析与优化

  • CPU与GPU活动的时间轴分析。
  • 识别内存传输瓶颈。
  • 内核性能与占用率剖析。
  • 利用Nsight Compute进行迭代优化。

CUDA设备代码中的现代C++特性

  • 内核中的Lambdas、constexpr和auto。
  • C++17并行算法及执行策略。
  • 设备端的C++20概念与Ranges。
  • nvcc和CCCL 3.x中的C++23支持。

CUDA图与高级异步性

  • 定义并启动CUDA图。
  • 从流执行捕获图结构。
  • 更新图和条件执行节点。
  • 减少迭代工作负载的启动延迟。

现有应用程序的集成模式

  • 在C++接口后封装GPU代码。
  • 管理多GPU及NUMA系统。
  • 利用CMake和CUDA整合构建系统。
  • 使用cuda-gdb调试设备代码。

总结与最佳实践

  • 在Thrust、CUB与自定义内核之间做出选择。
  • 跨GPU架构的性能可移植性。
  • 代码组织及CUDA资源的RAII管理。
  • 后续步骤与进阶CUDA学习路径。

要求

  • 具备基本的C++能力,包括lambda表达式、模板和STL。
  • 熟悉标准算法、容器及迭代器。
  • 熟练掌握循环、条件语句与函数。
  • 无需CUDA或GPU编程的先修知识。

受众对象

  • 寻求利用GPU加速计算密集型应用的C++开发者。
  • 从仅CPU编程转向异构并行编程的软件工程师。
  • 处理大数据集的性能工程师与量化开发者。
 8 小时

客户评论 (3)

即将举行的公开课程

课程分类