当前可用的 GPU 是否支持双精度浮点运算?

计算科学 高性能计算 浮点 分子动力学 显卡
2021-12-16 21:53:57

我在 Ubuntu Linux 集群上运行了分子动力学 (MD) 代码GROMACS,该集群由包含 24 个 Intel Xeon CPU 的节点组成。我特别感兴趣的是对浮点算术精度有点敏感,所以我不得不以双精度而不是单精度运行 GROMACS——尽管双精度的计算成本更高。所以在集群上,我以双精度编译了 GROMACS。

我正在考虑购买一些 GPU,因为与 CPU 相比可能存在相对加速(“GPU 加速”)。但是,我需要一个允许我进行双精度运算的 GPU。你知道这样的硬件是否可以买到吗?GROMACS 邮件列表上最近的一篇文章表明,双精度 GPU 尚未商用:

硬件还不支持它[双精度算术] AFAIK。

这个Wikipedia 页面似乎暗示双精度 GPU 并不常见,因为它们可能效率低下:

Nvidia GPU 上的浮点实现大多符合 IEEE;但是,并非所有供应商都如此。这对被认为对某些科学应用很重要的正确性有影响。虽然 64 位浮点值(双精度浮点)通常在 CPU 上可用,但这些在 GPU 上并不普遍支持;一些 GPU 架构牺牲了 IEEE 合规性,而另一些则完全缺乏双精度。一直在努力在 GPU 上模拟双精度浮点值。然而,速度权衡首先否定了将计算卸载到 GPU 上的任何好处。

这个NVIDIA Tesla 页面在引用图表中的“峰值双精度浮点性能”时,似乎表明实际上可以在其 GPU 上完成双精度计算尽管计算成本更高)。

那么,我应该相信什么?你有这个问题的经验吗?

4个回答

双精度在较新的 GPU 上相当普遍。例如,我拥有一个 NVIDIA GTX560 Ti(在计算方面相当低端),以双精度运行 ViennaCL 没有问题。这里(第 4 节)看来,从 GTX4xx 开始的所有 NVIDIA 卡都本机支持双精度。

我猜 GROMACS 信息已经过时了。

每个具有 SM 1.3 (Tesla/GTX2xx) 或更高版本的 GPU 都具有硬件双精度支持。从 Fermi 架构开始,Quadro 和 Tesla 变体比消费级 Ge Force 模型具有更好的双精度支持。

奇怪的是,GeForce Kepler/GTX6xx 双精度支持不如 GeForce Fermi/GTX5xx 支持,以提高 Kepler K20/K20x 中的特斯拉差异化。更奇怪的是,Tesla K10s 具有 Ge Force 级别的双精度支持。而最近,由于 Ge Force GTX Titan 的推出,这完全混乱了,它具有完整的双精度支持,并且许多 CUDA 功能目前仅存在于特斯拉车型上。GTX Titan 的价格约为 1,000 美元——IMO 非常划算。

您还应该阅读 GROMACS 邮件列表中的后续帖子:http: //lists.gromacs.org/pipermail/gmx-users/2013-April/080604.htmlMD 中的 GPU 实现是否支持在相当程度上使用双精度至少与硬件上是否提供双精度一样重要。

根据这个讨论,Tesla 和 Titan GPU 最适合(Nvidia GPU)双精度。

例如,查看 Wikipedia 上的 Nvidia GPU 列表(此处为 AMD GPU 的类似表)并比较单精度和双精度处理能力(以 GFLOP 计),发现双精度性能远小于单精度的一半大多数其他 GPU 的性能。例如对于 GTX 900 系列,文章提到双精度性能是单精度性能的1/32,而这篇 Wikipedia 文章说对于 GTX 700 系列,双精度性能是单精度的1/24性能(Titan 除外,它可以高达单精度性能的1/3)。