两个GPU上的浮点矩阵乘法结果不同

时间:2019-04-24 18:02:08

标签: floating-point gpu metal

我正在两个独立的GPU上运行Metal Performance Shader的MPSMatrixMultiplication,一个是内部GPU,一个是AMD GPU。矩阵完全相同。

但是问题是结果并不完全相同。我知道GPU会有一些精度损失,但是为什么在相同的IEEE 754-2008标准下结果却不一样?

我想验证GPU计算的正确性。我该怎么办?我应该允许0.0001的差异,这是每个结果之间的最大差异吗?

1 个答案:

答案 0 :(得分:1)

Metal编译器默认使用fast-math,这使GPU违反IEEE 754来提高性能。我想这就是您获得不同结果的原因。

您应该能够在项目的构建设置中禁用fast-math