本栏目将专门对 GPU 上,特别是 AMD 卡、曙光 DCU 上的架构、编程优化方法、常见问题进行介绍。 大部分资料来源于平时的编程经验和对 AMD ROCm 官方文档 内容的整理。
本栏目属于稍微高阶的内容。 不包括基础的 Linux 操作、CUDA/HIP 基础编程、基础的优化手段(如 pinned-memory)。 相关内容基本都可以在互联网上(不过不太建议在中文互联网上找)找到,烂大街了。
- https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html.
- (中文版本) https://www.nvidia.cn/docs/IO/51635/NVIDIA_CUDA_Programming_Guide_1.1_chs.pdf
- 阿贡实验室的 HIP 的编程手册: https://www.olcf.ornl.gov/calendar/intro-to-amd-gpu-programming-with-hip
- AMD 的相关 HIP 编程教材: https://developer.amd.com/wp-content/resources/ROCm%20Learning%20Centre/chapter3/HIP-Coding-3.pdf.
- AMD 的系列编程资料:fundamentals-of-hip-programming
- AMD 的 HIP 编程指南: https://rocmdocs.amd.com/en/latest/Programming_Guides/Programming-Guides.html
- 曙光 HIP 计算技术详解 点击下载
- 曙光 DCU 开发者社区:https://developer.hpccube.com/tool/
- AMD/nvidia GPU 架构
- AMD GPU 汇编
- shared memory 数据共享
- 线程通信
- wavefront/warp 内的线程通信
- 在条件语句中谨慎使用
__syncthreads
- Debug & Profile
- 访存优化相关
- 其他优化经验
除了本仓库外,笔者在撰写该系列文章时,也参考或阅读过大量的相关教材和课程。这部分资料都属于高阶点的关于 GPU优化的资料:
供参考:
- UIUC ECE 408: https://ece.illinois.edu/academics/courses/ECE408-120211, https://wiki.illinois.edu/wiki/display/ECE408/Class+Schedule, 2019-fall
- NVIDIA, CUDA C++ Best Practices Guide (CUDA BPG) https://docs.nvidia.com/cuda/cuda-c-best-practices-guide, pdf,
本着知识共享的精神,本文档采用电子形式发布。 协议采用知识共享 署名-非商业性使用-相同方式共享 BY-NC-SA 4.0 国际许可协议 进行许可。
严禁任何商业行为使用!