感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
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)
详细解释,以非常微妙的方式重新阐述要点,使知识深入人心。Rod 愿意反复检查我们提出的晦涩问题,以确保他的回答百分之百正确。此外,他对讨论不同编码风格的优缺点感兴趣,使我们不仅学会了如何以预期的方式使用 C++,还了解了为什么应该这样做。
Nick Dillon - cellxica Ltd
课程 - Using C++ in Embedded Systems - Applying C++11/C++14
机器翻译
经验分享,这是教师的诀窍和宝贵之处。
Carey Fan - Logitech
课程 - C/C++ Secure Coding
机器翻译
线上培训为我们节省了大量时间,对此我们深表感谢。此外,培训师同时精通C#和C++,这一点非常有帮助,因为他能够利用我们已有的知识来解释所有内容。
Gabor - Rheinmetall Electronics Hungary Kft
课程 - Advanced C++
机器翻译