天天看点

nvidia显卡计算的单精度和双精度问题

之前服务器环境使用的是NVIDIA的Tesla P4的环境,程序运行没有问题,但是换成Tesla M40,程序就算就出现较大的偏差。

大致原因是M40是单精度的浮点数的运算,P4是双精度,在双精度上的计算结果用在单精度上运行,运算精度不一样,所以计算偏差比较大,导致的结果不一致。特别是乘除法的矩阵运算,结果运算偏差会很大。

解决方式是模型训练时,指明单精度运算做训练:

如:

改写为:

参考:

  • CUDA 中 单精度浮点操作和 双精度浮点操作
  • Different results for CUDA addition on host and on GPU

继续阅读