Triton矩阵乘
目的是计算分块之后的结果c矩阵的一小块。
c矩阵的一小块需要a矩阵的一行和b矩阵一列。
上述两种计算c小块顺序会影响缓存的命中率,所以官方文档的意思就是我们试图让代码运行按照下方的顺序进行矩阵乘法。
所以当分块完毕之后,每个块任务需要加载a的一个小块和b的一个小块不断进行矩阵乘累加,在k方向上迭代。
如果k维度非常大,一个块任务的迭代次数过多,会导致计算资源浪费在迭代上,所以这种情况下需要对k进行切分,也就是增加一个维度的分块,也就是改变grid。本质上就是比如原来计算0块是一个块任务,现在分为两个块任务去计算,最后结果在累加。因为这里两个计算任务会往一个结果空间去写,所有有相关的同步机制。