使用CUDA进行数百个矩阵的乘法

5

我正在编写一个需要使用CUDA并行计算数百个矩阵乘法的程序。有人能解释一下如何执行此操作吗?

我看到Kepler架构支持动态并行计算。有人使用过这种架构吗?如果使用过,使用的是哪款Nvidia显卡?


所有的矩阵大小都一样吗? - Paul R
矩阵的大小是多少?动态并行性在哪里发挥作用?还是这是一个不同的问题? - Bart
3
最新的CUBLAS库提供了批量模式进行矩阵乘法,只要矩阵大小相同即可实现此功能- http://docs.nvidia.com/cuda/cublas/index.html#topic_3_6 - Jonathan Dursi
1
batchCUBLAS exampleapi reference - Robert Crovella
1个回答

1

使用CUDA进行快速矩阵乘法并行计算的最简单方法是通过ArrayFire CUDA库,使用GFOR循环。以下是实现您所需功能的一些代码:

int n = 8, int m = 8;   // dimensions
int t = 10;             // number of different matricies
array A = randu(m,n,t); // many matricies
array B = randu(m,n);   // one matrix
array C = zeros(m,n,t); // destination

// multiply C=A*B for all A, at the same time
gfor (array i, A.dims(2)) {
    C(span,span,i) = matmul(A(span,span,i), B);
}

print( A );
print( B );
print( C );

ArrayFire会自动将计算有效地平铺到GPU上执行。所有这些都在幕后为您进行了优化。我发现它比我自己手写更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接