#CUDA 10 篇
系统级 CUDA 在解决什么 当 GPU 被推理服务、图形渲染、通信库和批处理作业共同使用时,单 kernel 优化不再足够。需要回答:谁能使用哪些 SM/显存/队列,数据物理上靠近谁,跨 API 和跨节点如何交换资源,以及故障能否被隔离。…
从“会写 Kernel”到“能交付系统” 一个完整 CUDA 项目不是单个快 kernel,而是一条可证明的链: 需求与误差预算 ↓ CPU/高精度 reference + 数据集 ↓ 算法分解与数据布局 …
为什么“先调库”是性能工程原则 成熟 CUDA 库通常同时处理: 不同 GPU 架构与数据类型的 kernel dispatch; 小/中/大尺寸和特殊 shape; 对齐、尾块、数值稳定与特殊值; 多 stream、workspace、…
Runtime API 与 Driver API 大多数应用用 Runtime API 已能获得完整性能;Driver API 的价值是更显式地控制 context、module、JIT、VMM 和较新的高级特性。 维度 Runtim…
高级能力的共同目标 现代 GPU 的难点不只是算得快,而是让数据搬运、同步和计算形成流水线。Thread Block Cluster、Distributed Shared Memory、异步 barrier、TMA、异步矩阵计算等能力,都是…
先分清“可访问”“驻留”和“同步” CUDA 内存问题常因把三个概念混在一起而出错: 可访问性:某个 processor/context 是否拥有读写该地址的权限; 驻留位置:对应物理页当前位于 GPU HBM、host DRAM 还是其…
为什么在 SIMT 之外还需要 Tile SIMT 让程序员明确安排 thread、warp、shared memory 和同步,控制力很强,但矩阵/张量 kernel 的实现容易绑死在某代硬件细节上。CUDA Tile 把 block 内…
“CUDA Python”是一套生态,不是单一语言 Python 用户通常处在四个层次之一: 业务表达 ├─ PyTorch / JAX / RAPIDS / CuPy:张量、数组、数据处理 ├─ cuBLAS…
CUDA C++ 不是“C++ 加几个关键字” 一个 .cu 翻译单元同时面对 host 与 device 两套执行环境。它们可以共享模板和类型,但地址空间、可调用函数、异常机制、标准库实现和编译目标并不完全相同。 同一份 .cu ├─ h…
先用库,再决定是否写 Kernel 需求 ├─ 高层框架已有高质量算子? → 使用并 profile ├─ CUDA-X/CCCL/CUTLASS 已覆盖? → 使用库,配置 stream&#x…