服务器设置了两个 NVIDIA K20m
卡,但启用了 ECC
。我观察到使用 Volatile GPU-Utilization
命令时 nvidia-smi -a
很高,即使卡中没有运行计算任务。 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
总是一个不好的特性,所以它总是设置为 disabled
。那么 ECC
的真正含义是什么?我只是该服务器的普通用户,所以我无权使用命令 nvidia-smi -e 0
将 ECC
设置为禁用。普通用户是否可以将 ECC
设置为禁用?
关闭 ECC
有什么影响?我们什么时候应该开启它?什么时候关?
最佳答案
即使没有其他计算任务正在运行,运行 nvidia-smi
时 GPU 利用率也可能变为非零。这与 ECC 无关。
ECC 是 Error Correcting Code 。它不是 GPU 独有的。在 GPU 上,它是一种使用额外内存位来存储错误信息的功能,以便如果内存子系统中发生(特定严重程度的)错误,它可以被检测和报告,或者被检测和纠正。
禁用 ECC 需要在 linux 上具有 root 权限。
您的 GPU 应用程序可用的可用带宽和内存大小可能会/将会增加。如果您关闭 ECC 并且发生内存子系统错误,您将不会收到明确的通知。错误可能有任何影响,从根本没有影响到应用程序完全崩溃,具体取决于错误发生的上下文。
当您想要防止内存损坏错误时打开它。如果您想要获得最高性能(例如用于基准测试)或者您认为您的应用程序可以容忍内存错误(例如您检查结果的有效性并且您不介意重新运行由于某种原因失败的应用程序),请将其关闭。
请注意,一些具有 HBM (HBM2) 内存的较新 GPU 可能具有 somewhat different characteristics 。由于 HBM2 内存的设计,启用 ECC 通常会导致很少或没有性能损失(带宽),并且不会减少内存大小。对于具有 HBM2 内存的 GPU,一般建议始终保持 ECC 开启。
关于cuda - 如何处理 NVIDIA 显卡中的 ECC 支持功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25709160/