使用cuda乘以数百个矩阵

时间:2012-10-24 14:29:26

标签: matrix cuda matrix-multiplication

我正在编写一个程序,需要使用CUDA并行数百个矩阵。有人可以解释如何执行此操作。

我已经看到Kepler架构能够实现动态并行。是否有人使用过这种架构,如果有的话,使用哪种Nvidia显卡。

1 个答案:

答案 0 :(得分:1)

使用CUDA并行快速执行矩阵乘法的最简单方法是使用ArrayFire通过GFOR loop CUDA库。这里有一些代码可以满足您的需求:

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上执行。所有这些都在幕后为您优化。我觉得它比试图亲自手写它更快。