use*_*081 5 cuda matrix matrix-multiplication
我正在编写一个程序,它需要使用CUDA并行数百个矩阵.有人可以解释如何执行此操作.
我已经看到Kepler架构能够实现动态并行.有人使用过这种架构,如果有的话,使用哪种Nvidia显卡.
小智 1
使用 CUDA 并行快速执行矩阵乘法的最简单方法是通过使用GFOR 循环的ArrayFire 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 );
Run Code Online (Sandbox Code Playgroud)
ArrayFire 自动有效地分块计算以在 GPU 上执行。所有这些都在幕后为您进行了优化。我发现它比尝试自己手写要快。