文章预览
大家好,这周本来是想写vllm的blockmanager的,结果在整理笔记时,看见之前入门cuda时画的一些手稿,一时手痒将它们整理成这篇文章。 除了图解外,所有代码都配上了非常详细的注释 ,希望对于cuda,能和大家一起从入门到不放弃。 【全文目录如下】 一、前置阅读 二、Naive GEMM 三、GEMM优化:从global memory到SMEM 3.1 split-by-k 四、GEMM优化:从SMEM到register 五、SMEM上的bank conflict 5.1 不同取数指令下的bank conflict (1) LDS.32 (2) 为什么要有bank conflict这个概念 (3) LDS.64与LDS.128 5.2 不同warp tiling方式对bank conflict的影响 (1) 2 * 16 warp (2) 4 * 8 warp (3) 将 (8,8)拆成4个(4,4) (4) 如何选择warp形状 (5) 代码实现 一、前置阅读 如果你对cuda和gpu架构比较陌生的话,推荐先阅读这篇文章:https://zhuanlan.zhihu.com/p/34587739,特别关注文章中对grid,block,warp,thread的描述。 1.1 cuda与gpu G
………………………………