The Zen of Parallel Programming: The Posture of a Kernel11 days agohttps://smolnero.com/posts/the-zen-of-parallel-programming-the-posture-of-a-kern...GPU内核是一种专门的函数,在GPU上启动,线程被分组为波前和线程块,其性能取决于线程、数据和硬件架构。HipKittens论文介绍了一种在AMD硬件上使用的八波乒乓调度,通过让成对的波在计算与预取数据之间交替角色,实现了计算与内存移动的重叠。并行编程需要在线程的独立与依赖之间取得平衡;完全独立会导致无法获得统一结果,而完全依赖则会导致等待。作者将GPU波之间的角色交替与铃木的“姿态”概念进行类比,强调角色是真实但暂时的,而姿态是关于变化中的关系。更多...
Flash-MSA: Accelerating Million-Token Training with Sparse Attention Kernels20 days agohttps://nanduruganesh.github.io/flash-msa/首个用于Hopper和Blackwell GPU的Minimax Sparse Attention (MSA)开源训练内核在CuTeDSL中发布。MSA采用块级稀疏设计,包含128个基于最大池化的稀疏块,使用GQA替代MLA,并对代理头进行分组专业化处理。内核设计包括前向代理注意力(带top-k排序)与稀疏主注意力,以及利用缓存块索引实现高效融合的反向传播。通过特定技巧避免完整矩阵计算,高效计算KL散度损失梯度,显著降低内存占用。更多...