【问题标题】:Multiplying hundreds of matrices using cuda使用 cuda 将数百个矩阵相乘
【发布时间】:2012-10-14 14:49:30
【问题描述】:

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

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

【问题讨论】:

标签: matrix cuda matrix-multiplication


【解决方案1】:

使用 CUDA 获得快速执行矩阵乘法的最简单方法是使用 GFOR loop 通过 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 );

ArrayFire 自动高效地平铺计算以在 GPU 上执行。所有这些都是在幕后为您优化的。我发现它比尝试自己手写要快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2012-05-06
    • 2017-10-25
    • 2011-08-23
    • 1970-01-01
    • 2011-09-07
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多