在GPU上的一些计算,我需要在一个矩阵是按比例的行,使得在一个给定的行总和的所有元素为1。缩放矩阵的行与CUDA
| 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
的向量和缩放矩阵,我想在尽可能少的blas调用中做到这一点。代码将在nvidia CUDA硬件上运行。有谁知道有什么聪明的方法来做到这一点?
这就是我自己得出的结论(对于整个行与列,如果一个比另一个更好,我将重新排列我的数据 - 转置在这里我来:) – 2012-02-15 13:29:00
@MartinKristiansen:没有'除了一个简单的,纯粹面向行的缩放操作(即逐行'scal')在列主要顺序数据上不能很好地执行,因为行条目的跨度(至少矩阵的高度)。但是一个设计合理的方案在列主要数据上的表现也将与列主要数据一样好。 – talonmies 2012-02-15 13:48:22