显存使用量&精度?

这个问题有点naive, 我看到在开错误校验的情况下, 可用显存并不是所有显存. 所以怀疑显存使用量与计算精度之间是否存在联系, 于是有一个简单的疑问: 显存使用量是否会影响到计算精度?
我用的卡是Tesla C1060 (略老…), 显存4GB, 程序要开到3980MB, 几乎全用了, 这会不会影响计算精度呢? 虽然开辟成功, 程序运行正常, 也能够得到计算结果, 但是其中是否出现了微小的精度问题并不能直观发现.

或者, 再扩展一下, 大量的显存使用会对CUDA程序带来什么哪些方面的负面影响?
或者, 这根本就是多虑了?
求解释~

计算精度和您的显存大小无关的。

至于您在开启了ECC后,显存减少了,是正常现象:ECC将占用1/8的显存,这个无法避免。

大显存的卡对贵程序能造成什么负面影响—抱歉,这个真心不知道。您可以继续回答他人。

(PS: 一般的,如果真的显存越大,负面影响越大,那么titan之类的卡就不会考虑上6GB了。相反,业界的趋势是越来越大的显存,所以我不认为大显存会“对CUDA程序带来负面影响”。个人观点哦!)

我来稍微接着2#横扫斑竹说一下:

其实就是LZ多虑了,只要能申请成功就可以直接用,用多用少都无影响的。

以及1060本身不支持ECC的,fermi才开始支持。如果说支持ECC带来了数据可靠性的上升,那是纠错

的功劳,和计算精度无关的。

以及,fermi开始支持FMA,之前是MAD,FMA的计算准确度比MAD强,如果因此有计算结果的差别,那

应该算在核心架构的改进上,而和显存无关。

以及,因为浮点数有限精度的原因,并行计算时,往往无法精确保证计算顺序,所以结果会有轻微

差别,这是正常的。

最后,如同横扫斑竹所言,开启显存ECC之后会减少1/8的容量,这些容量用于存储纠错码。telsa卡

的设计是,如果不开启ECC,那么全部显存可以用于计算,如果开启ECC,1/8空间用于存储纠错码。

常见的另外一种设计是,多设计1/8的容量专供纠错码使用(如同某些内存模组上,有ECC的需要焊9

颗存储芯片,不需要ECC的版本只焊8颗),这种设计时,即便你不打算用ECC,专供ECC的部分容量

也无法得到利用。

因此两种设计是各有利弊的,权衡角度不同。

大致如上,供您参考~

祝您编码顺利~


重新核实了一下C1060的规格,发现上文无误,原样重新发表。

那我记错了。原来C1060不支持ECC的。感谢ICE指正。

那我无法解释为何楼主能开启,并能观察到显存容量减少。这个就不知道了。请他人指点。

我觉得可能是LZ的语言叙述问题

1:LZ看到某卡的说明中有开启ECC之后,可用容量会下降,于是怀疑显存要预留一些空闲空间才能保证精度。(其实是给ECC编码使用了)

2:LZ自己用的C1060会用尽几乎所有的显存。

3:综合1、2,LZ怀疑自己这样用可能因为显存占的太满而损失了精度。并引申出来一个问题,使用大量的显存空间会否有其他负面影响。并怀疑自己是多虑的。

实际情况已经在上述各楼层解释,请LZ参考。

两位版主给力~
问题描述欠佳, 有点误导了横扫版主, 我的程序没有用ECC, 5L ICE版主懂我
多谢解答, 我觉得应该明白了

您好,不客气的,非常乐意回答您的问题,这是我和横扫斑竹的职责。

欢迎您常来论坛讨论问题,祝您好运!

您客气了。是我未能成功领会您的精神。以及,服务您是我们的荣幸。

欢迎您常来论坛。