使用CUDA缩放矩阵的行

Mar*_*sen 4 c math cuda blas

在GPU上的一些计算中,我需要缩放矩阵中的行,以便给定行中的所有元素总和为1.

| a1,1 a1,2 ... a1,N |    | alpha1*a1,1 alpha1*a1,2 ... alpha1*a1,N |
| a2,1 a2,2 ... a2,N | => | alpha2*a2,1 alpha2*a2,2 ... alpha2*a2,N |
| .            .   |    | .                                .    |
| aN,1 aN,2 ... aN,N |    | alphaN*aN,1 alphaN*aN,2 ... alphaN*aN,N |

哪里

alphai =  1.0/(ai,1 + ai,2 + ... + ai,N)

我需要alpha's 的向量,以及缩放的矩阵,我想在尽可能少的blas调用中执行此操作.该代码将在nvidia CUDA硬件上运行.有谁知道有任何聪明的方法来做到这一点?

小智 6

Cublas 5.0引入了类似blas的例程,称为cublas(Type)dgmm,它是矩阵乘以对角矩阵(由向量表示)的乘法.

左侧选项(将缩放行)或右侧选项将缩放列.

有关详细信息,请参阅CUBLAS 5.0文档.

所以在你的问题中,你需要创建一个包含GPU上所有alpha的向量,并使用带左选项的cublasdgmm.