使用CUDA进行矩阵乘法的特例

时间:2013-05-29 12:00:55

标签: cuda linear-algebra matrix-multiplication cublas matrix-decomposition

我正在寻找专门用于典型密集矩阵乘法的一些特殊函数(CUDA),例如: A * B,其中A的大小是6 * n,B的大小是n * 6并且n非常大(n = 2 ^ 24)。我已经利用CUBLAS和其他一些库来测试这个例子,在CUBLAS中,对于这个例子,我们使用6 * 6 = 36个线程,这远远不是GPU的总并行性,所以我将A和B分成子矩阵(向量)然后为每个人实现点积函数,性能得到了很好的改善。问题是,在这种情况下,我们需要启动36个CUDA内核,并且在它们之间存在大量相同的数据占用空间(相同的数据已经从GPU的全局内存中多次访问)。所以我在问这个问题是否存在任何解决办法。

1 个答案:

答案 0 :(得分:1)

我最近为我的客户编写了这样一个矩阵乘法例程。诀窍是通过将长内部求和分成几个较小的求和来提取更多的并行性。然后使用单独的内核启动来计算部分内核的全部总和。