摘要 分析一个深度学习中的基于GPU的“Hello World”程序的计算精度问题。该程序使用了PyTorch库来创建一个权重矩阵W和一个特征矩阵X,并通过矩阵乘法计算得到结果矩阵Y。通过与计算机的错误计算(四十一)中给出的结果进行比较,我们发现,在GPU上执行计算时产生的误差大于在CPU上执行时的计算误差。
首先展示环境:Windows 10,Python 3.8.19,
)
然后是代码:
接下来是输出结果:
现在我们讨论 Y[1,1]、Y[1,4]、Y[2,4]、Y[3,3] 4个结果的精度。
从上面最后一张图片知,Python 8位有效数字的 4个输出结果为
然后,从计算机的错误计算(四十一)知,它们的正确值是
这样,它们分别有 3位、3位、2位、2位错误数字。前面两个的错误位数的相对误差均为 3/8=37.5%, 后面两个的错误位数的相对误差均为 2/8=25%. 不小于25%误差率的占比不少于 4/(5*5)=16%.
最后总结一句,与(四十一)中的 CPU下的误差相比,GPU下的误差要大一点。但是,不能小瞧这“一点”!1次矩阵相乘就错了 3位数,总共才 8位数啊。还记得(四十五)中案例么?1次迭代仅多了 1位错误数字。但是,14次以后,没有正确数字了。