如何在CUDA中实现密集的x块对角矩阵乘法?

时间:2016-04-27 17:00:14

标签: matrix cuda diagonal cublas

假设你有一个大小为1500x500的密集矩阵,你需要将它与一个大小为500x500的块对角矩阵相乘,它由10个尺寸为50x50的子矩阵组成,位于对角线上:

S 0 ... 0 0
0 S     0 0
...
0 0 ... S 0
0 0 ... 0 S  <- each S is 50x50

有时候所有S都是平等的,有时它们不是。

我还没有描述过,但我觉得直接的CUBLAS乘法会浪费太多时间用零。有没有有效的方法来实现这样的乘法?

1 个答案:

答案 0 :(得分:2)

您可以将This Tutorial与块压缩稀疏行格式一起使用,如cuSparse所述。您的矩阵类型可能会受益于其他优化,但现在可以使用。

或者,您可以使用here按行或列块访问密集矩阵,并将块对角线定义为一组较小的密集矩阵(可能会重复使用相同的数据)。