我一直在尝试查找有关在图形硬件上使用 float 与 double 的性能的信息。我发现了大量关于 CPU 上的 float 与 double 的信息,但对于 GPU 来说,此类信息更加稀缺。
我使用 OpenGL 进行编码,因此如果您认为应该了解该 API 的任何特定信息,请让我们了解一下。
我知道,如果程序将大量数据移入/移出图形硬件,那么使用 float 可能会更好,因为 double 需要两倍的带宽。我的询问更多是关于图形硬件如何处理的。据我了解,现代 Intel CPU 将 float/double 转换为 80 位实数进行计算(SSE 指令除外),因此两种类型的速度大致相同。现代显卡有这样的功能吗?现在 float 和 double 的性能差不多吗?是否有充分的理由使用其中一种而不是另一种?
最佳答案
在速度方面,GPU 针对浮点进行了优化。我对 Nvidia 硬件更熟悉,但在当前一代硬件中,每 8 个 SP FPU 对应 1 个 DP FPU。在下一代硬件中,预计它们的比例将更多地为 1 比 2。
我的建议是看看您的算法是否需要 double 。许多算法实际上并不需要额外的位。运行一些测试来确定通过使用单精度获得的平均误差,并确定它是否显着。如果没有,就使用单一的。
如果您的算法纯粹用于图形,您可能不需要 double 。如果您正在进行通用计算,请考虑使用 OpenCL 或 CUDA。
关于opengl - 图形硬件上的 float 与 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2079906/