triton之gemm

本文探讨了在不使用group GEMM时,硬件执行调度的问题,即GEMM操作可能导致CUDA流multiprocessors (SM)的空闲。通过引入group GEMM,可以确保SM更有效地负载平衡,减少空闲状态。文章深入源码,分析了入口函数和kernel函数,解释了如何根据矩阵维度进行数据划分,并保证所有SM的工作负载。
摘要由CSDN通过智能技术生成

一 原理

如果不采用group gemm的话,采用单流执行,则具体的硬件执行调度如下所示:

gemm0,gemm1,gemm2同时分配任务给sm做 

第一轮:gemm0、gemm1和gemm2的0-3分给4个sm分别做,都计算完成

第二轮:gemm0在上一轮已经计算完毕,gemm1和gemm2的45分给sm0,sm1去做,在这一轮可以发现,sm0和sm1针对gemm0的task出现了idel,而sm2和sm3对三个gemm的task都是idle状态

而如果采用group gemm,则可以实现:

 就是保证sm尽量满载,而不处于idle状态

二 源码分析

1 入口函数


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youzjuer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值