我正在两个独立的GPU上运行Metal Performance Shader的MPSMatrixMultiplication
,一个是内部GPU,一个是AMD GPU。矩阵完全相同。
但是问题是结果并不完全相同。我知道GPU会有一些精度损失,但是为什么在相同的IEEE 754-2008标准下结果却不一样?
我想验证GPU计算的正确性。我该怎么办?我应该允许0.0001的差异,这是每个结果之间的最大差异吗?
答案 0 :(得分:1)
Metal编译器默认使用fast-math
,这使GPU违反IEEE 754来提高性能。我想这就是您获得不同结果的原因。
您应该能够在项目的构建设置中禁用fast-math
。