【发布时间】:2019-05-22 03:55:34
【问题描述】:
我在 Matlab 上做了如下测试:
n = 10000;
A = rand(n,n);
b = rand(n, 1);
tic
y = A\b;
toc
在我的 Intel i7 gen 5 机器(12 核)上,结果约为 5 秒。
然后,我尝试使用 CUDA 9.2 示例 SDK 代码来做同样的事情(请参阅 cuSolverDn_LinearSolver.cpp)。令人惊讶的是,在我的 Nvidia 970GTX 上,我得到了大约 6.5 秒的时间来获得与上述相同问题大小的解决方案!
怎么了?我提到我的矩阵是对称的、正方形的,并且 b 只有 1 列。有没有更好的方法来使用 CUDA 解决这个问题?如果我要使用更新的 GPU,我应该期待更高的性能吗?
【问题讨论】:
-
A = rand(n,n);如何产生对称矩阵,正如您在问题中所说的那样? -
您是否以单精度或双精度进行了实验?顺便说一句,12 核 i7 是一台相当强大的机器。
-
尝试使用 Matlabs gpu funcionality,看看它有多快。如果它比 cpu 代码快,那么你当然可以做得更好,如果不是,那么好处可能会被开销所抵消
-
在 cpp 中我使它对称,而不是在 matlab 中。我正在使用双打。
标签: matlab cuda linear-equation