【发布时间】:2016-01-10 05:19:16
【问题描述】:
我有一个 OpenGL 程序,每秒可以进行相当多的矩阵乘法运算。这些将是 4x4 矩阵和每个 128 字节。我的 CPU 和 GPU 都是最新的(我有一台 MacBook Pro(Retina,13 英寸,2014 年中))。我知道 GPU 通常更面向并行,并且可能会针对这类东西进行优化。让 CPU 执行乘法运算还是让我的 GPU 更快?
【问题讨论】:
-
大多数时候答案是
GPU is faster for that。一个值得注意的细节是精确度。大多数显卡不支持双精度,这可能会导致精度错误(在某些情况下可能会非常大)。 -
@mlkn 该死,我有一个问题,我会做很多这样的事情,所以我需要 GPU 来提高速度,但另一方面,我需要很多精度,因为这些乘法将是累积的,因此 CPU 会更好。嗯...
-
有一些解决方法,因为人们经常需要精确度。例如使用两个浮点数编码双精度或使用迭代算法。
-
你说每个 64 字节所以这些是浮点数(
sizeof(float)*4*4=64)?但是你说你需要精度。那么你真的想要双精度数吗?这很关键,因为 CPU 与大多数 GPU 相比仍然很有竞争力当涉及到双倍时。您可以使用float-float,但它仍然使用与双倍一样多的空间。 -
@Zboson 抱歉,我的数学计算不正确。我确实想要双精度(或 64 位)浮点数进行计算。
标签: c opengl matrix gpu matrix-multiplication