2010-08-09 30 views
3

你觉得呢?什么会更快,速度更快:在GPU或CPU(多线程)上执行稀疏矩阵(CSR)乘法(使用向量)?GPU或CPU上的稀疏矩阵乘法?

+0

Bell et al。 “CUDA上的高效稀疏矩阵 - 矢量乘法”具有以下答案:在GPU上计算速度更快。 – Dirk 2013-02-01 14:37:05

回答

4

它取决于矩阵的大小和需要执行的迭代次数。这是因为您需要将矩阵数据从CPU内存复制到GPU内存,并将GPU的结果复制回CPU。如果你要在矩阵上只执行一次迭代,那么在CPU上执行它总是更好,而不是在GPU上执行。而且,GPU有启动时间的问题。所以,如果你有更多的迭代要执行,那么去GPU,否则我的选择将是CPU。同样,由于数据复制,矩阵的大小也会影响性能。

0

我的猜测是GPU的实现不会有太大的收获,因为你没有那种可以实现并行处理的同类数据结构。

+0

嗯我认为你是对的,但像往常一样有使用GPU的情况下会赢。并行考虑许多矩阵运算。在CPU上,受限于内核数量,而这些内核的数量通常会少于GPU。 但是,GPU上的双精度数学性能通常不如浮点运算那么快。所以这也取决于这一点。 – GorillaPatch 2010-08-10 10:39:34

+0

@GorillaPatch:是的,除了最新的nVidia GPU之外,所有的nVidia GPU都具有相当差或不存在的双精度性能,即使如此它仍然比单精度慢2倍。要在GPU上获得巨大胜利,理想情况下需要使用单精度浮点数,并且您的算法需要高度并行化。 – 2010-08-10 13:50:38

0

我认为veda击中了它的头。我绝不是这方面的专家,但我相信在使GPU工作方面存在开销,并且如果计算的大小不够大,GPU处理的成本就会失去开销。然而,如果你有像角色骨架这样的有很多矩阵相乘的东西,那么这将更适合GPU。我目前也在为我的一个项目研究这些事情。