gpt4 book ai didi

ios - 为什么我在 GPU 上有很大的精度错误?

转载 作者:行者123 更新时间:2023-11-28 17:51:35 24 4
gpt4 key购买 nike

我在 GPU 上进行一系列计算,需要足够好的精度,但我得到的精度似乎比在 CPU 上使用 float 时低得多。

对于初学者来说,当我在浮点缓冲区中加载值 0.01 时,它在着色器中加载为 0.009995。这是为什么?我认为 0.01 是浮点向量范围内的值(使用可用于 Metal 的 simd 库)。

然后,当进行这样的简单操作时,精度明显变差:

simd::float4 p = simd::float4 { -0.04, -0.07, 0, 1 };
simd::float4 v = myMatrix * p;
v *= 1.0 / v.w;
示例中的

p 是我在 CPU 测试中期望和使用的;在 GPU 上,它被计算为 { -0.039978, -0.069946, 0.0, 1.0 },用一个整数减法和一个 float 乘以已经错误的 0.009995

我希望从 v 得到的是 { -0.010627, 0.006991, -0.034100 } (用 CPU 上的 simd 库计算,精度已经比使用 double 差了,{ -0.010613, 0.006982, -0.034056 },但可以忍受)。

我得到的是 { -0.010483, 0.006405, -0.044067 } 。随着后续操作的进行,情况变得更糟,结果很快变得无法使用。

为什么即使使用相同的精度,结果也会如此不同,为什么 float 数据不是按 1:1 加载的?我尝试禁用 Metal 的快速数学选项,但它没有改变任何东西。

最佳答案

唉,这不是精度问题,因为我设置测试的方式不正确,所以 GPU 没有使用我实际认为它使用的数字。

关于ios - 为什么我在 GPU 上有很大的精度错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com