如何处理NVIDIA显卡中的ECC支持功能

7
服务器上已经安装了两张NVIDIA K20m卡,但启用了ECC。我观察到使用nvidia-smi -a命令时,即使卡中没有运行计算任务,Volatile GPU-Utilization也很高。K20m仅用于计算。我在Google中搜索并查看了以下链接:https://devtalk.nvidia.com/default/topic/539632/k20-with-high-utilization-but-no-compute-processes-/https://devtalk.nvidia.com/default/topic/464744/how-to-disable-enable-ecc-on-c2050-/ 看起来,ECC总是一个不好的功能,所以它总是被禁用。那么ECC的真正含义是什么呢?由于我只是该服务器的普通用户,因此我没有使用nvidia-smi -e 0命令将ECC设置为禁用的权利。普通用户是否可以禁用ECC?关闭ECC会产生什么影响?我们应何时打开或关闭它?
1个回答

16
当运行nvidia-smi时,即使没有其他计算任务正在运行,GPU利用率也可能变为非零。这与ECC无关。
引用:

那么ECC的真正含义是什么?

ECC是纠错码。它不仅适用于GPU。在GPU上,它是一种特性,使用额外的内存位来存储错误信息,因此,如果内存子系统中发生错误(特定严重程度的错误),则可以检测并报告或检测并更正该错误。
引用:

普通用户是否可以将ECC设置为禁用状态?

在Linux上禁用ECC需要root权限。
引用:

关闭ECC会产生什么影响?

可用带宽以及可供GPU应用程序使用的内存大小可能会增加。如果您关闭ECC并发生内存子系统错误,则不会收到明确的通知。该错误可能具有从完全没有影响到完全应用程序崩溃的任何范围的影响,具体取决于错误发生的上下文。
引用:

什么情况下应该开启?什么情况下应该关闭?

如果您想保护内存免受损坏错误,请打开它。 如果您想要最大的性能(例如进行基准测试),或者您认为您的应用程序可以容忍内存错误(例如您检查结果的有效性,并且您不介意重新运行因某种原因而失败的应用程序),请关闭它。

请注意,一些具有HBM(HBM2)内存的新型GPU可能具有略有不同的特点。 由于HBM2内存的设计,启用ECC通常不会导致性能损失(带宽)或内存大小的减少。 对于具有HBM2内存的GPU,一般建议始终保持ECC开启状态。


谢谢您,先生。事实上,我刚刚发现如果GPU利用率很高,系统的响应会非常缓慢。当我将作业提交到集群时,调度程序会将作业分配到带有GPU的计算节点,然后进程也会开始变慢。所以我想知道是否有任何配置出了问题。SDK是CUDA-6.0,驱动程序也是与之相对应的。 - mining
我已经在那些带有GPU的计算节点上进行了测试,发现有些机器对于GPU使用请求的响应速度很慢,但其他机器则正常。因此,我想找出问题所在。在一个节点上,lspci 显示已经设置了两个 K20m GPU,但是当我使用 nvidia-smi 时,它说找不到它们并输出“无法确定GPU 0000:81:00.0的设备句柄”。我认为我还应该向集群管理员寻求帮助。谢谢! - mining
在没有GPU卡的情况下是否可以禁用ECC?也就是说,我正在构建一个没有GPU的机器上的镜像,但当我使用该镜像时,该机器将拥有一个GPU,并且我希望在那时禁用ECC。目前,我无法在启动时执行此操作,因为我随后必须重新启动GPU盒子。 - Alex Rothberg
打开和关闭ECC必须通过编程实现。通常这意味着GPU必须存在,您可以使用nvidia-smi命令行工具在相关的GPU上启用或禁用它。您可能可以使用NVML库执行类似的功能,但我还没有进行深入研究。如果是这种情况,那么它将允许您编译一个程序并使用NVML来打开和关闭ECC。然而,打开和关闭ECC需要重新启动程序/更改后才能生效。 - Robert Crovella
嗨@RobertCrovella,我又有一个问题:在深度学习应用中,2路SLI 16x/16x和2路SLI 8x/8x之间有什么区别吗?在第二种模式下,GPU的吞吐量受到带宽的限制,是吗?谢谢。 - mining
SLI与CUDA或深度学习无关,通常建议在CUDA GPU上禁用SLI。 - Robert Crovella

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接