一位电气工程师最近告诫我不要使用CPU进行科学计算(例如,在精度真正重要的地方),因为没有像CPU那样的硬件保护措施。这是真的吗?如果是这样,那么典型硬件中的问题有多普遍/多严重?
发布于 2012-08-24 22:33:11
实际上,现代GPU非常适合科学计算,出于性能和能源效率的考虑,许多HPC应用程序至少部分移植到GPU上运行。与老式的CPU不同,现代的CPU(以NVIDIA的Fermi或Kepler架构为例)提供了完全标准化的IEEE-754格式,支持单精度和双精度,因此您应该能够像在现代CPU上一样使用这些格式。
发布于 2012-08-24 22:33:31
我找到了一些关于这个的(更老的)论文,但是这个问题似乎已经在具有计算能力的>= 2.0的显卡中得到了解决。
IEEE754浮点standard1的重要方面,例如正确的四舍五入的结果和数字系统的适当闭合,
当前的GPU不支持双精度计算和它们的单精度支持注释。..。我们的结果表明,在某些边缘情况下,GPU的结果存在严重错误,除了对非正规化数字的错误处理。
双精度(CUDA计算能力1.3及以上)14偏离IEEE754标准:舍入到最近的偶数是倒数、除法和平方根的唯一支持舍入模式。在单精度下,不支持去规格化和信令NaNs;只支持两种IEEE舍入模式(斩波和舍入到最近的偶数),并且是按指令指定的,而不是在控制字中指定的;除法/平方根的精度略低于单精度。
发布于 2012-08-28 01:40:02
NVIDIA发布了一份白皮书,其中涵盖了一般情况下使用浮点的详细信息,特别是在GPU上的使用情况:
http://developer.download.nvidia.com/assets/cuda/files/NVIDIA-CUDA-Floating-Point.pdf
https://stackoverflow.com/questions/12111352
复制相似问题