设备修正选项(DEVICE MODIFICATION OPTIONS)

本文为NVIDIA-SMI系列指令详解第七篇-设备修正选项(2),介绍和演示了nvidia-smi 设备修正选项参数-c(核算形式)、-dm/-fdm(TCC)(设置/强制设置TCC驱动形式)、–gom(设置GPU操作形式)、-r(重置GPU)、-vm(切换GPU虚拟化形式)的参数详情。

修正GPU设备的指令,支撑的参数列表如下:

    -pm,  --persistence-mode=   设置持久性形式: 0/DISABLED, 1/ENABLED
    -e,   --ecc-config=         切换 ECC 支撑: 0/DISABLED, 1/ENABLED
    -p,   --reset-ecc-errors=   重置 ECC 过错计数: 0/VOLATILE, 1/AGGREGATE
    -c,   --compute-mode=       为核算应用程序设置形式:
                                0/DEFAULT, 1/EXCLUSIVE_PROCESS,
                                2/PROHIBITED
    -dm,  --driver-model=
    -fdm, --force-driver-model= 强制启用或禁用 TCC 驱动程序模型。 
          --gom=                设置 GPU 操作形式:
                                0/ALL_ON, 1/COMPUTE, 2/LOW_DP
    -r    --gpu-reset           触发 GPU 的重置。
                                可用于在需求重启机器的情况下重置 GPU 硬件状态。
                                假如产生双位 ECC 过错,通常很有用。
                                重置操作不能确保在全部情况下都有用,应慎重运用。
    -vm   --virt-mode=          切换 GPU 虚拟化形式:
                                将 GPU 虚拟化形式设置为 3/VGPU 或 4/VSGA。
                                GPU 的虚拟化形式只能在它运转在办理程序上时设置。
    -lgc  --lock-gpu-clocks=    将指定的一对 <minGpuClock,maxGpuClock> 时钟
                                频率取值规模(例如 1500,1500),设置为需锁定
                                的 GPU 时钟频率的规模(以 MHz 为单位)。 
                                无论 GPU 上是否存在正在运转的应用程序,设置此项
                                将代替applications-clocks并收效。
                                输入也能够是一个单一的希望时钟值
                                (例如 <GpuClockValue>)。
    -rgc  --reset-gpu-clocks    重置 GPU 时钟频率到默许值。
    -lmc  --lock-memory-clocks=     将指定的一对 <minMemClock,maxMemClock> 时钟
                                    频率取值规模(例如 5100,5100) ,设置为需锁定
                                    的 GPU 内存时钟频率的规模(以 MHz 为单位)。
                                    输入也能够是一个单一的希望时钟值
                                    (例如<MemClockValue>).
    -rmc  --reset-memory-clocks    重置 GPU 内存时钟频率到默许值。
    -ac   --applications-clocks= 将指定的一对 <memory,graphics> 时钟
                                    频率值(例如 2000,800) ,设置为 GPU 上
                                    运转的应用程序的memory和graphics时钟
                                    频率值(以 MHz 为单位)。
    -rac  --reset-applications-clocks     重置应用程序时钟到默许值。
    -pl   --power-limit=        以瓦特为单位指定最大电源办理限制。
    -cc   --cuda-clocks=        掩盖或康复默许 CUDA 时钟频率。
                                在掩盖形式下,GPU 在运转 CUDA 应用程序时
                                时钟频率更高。 仅适用于从 Volta 系列开端的
                                受支撑设备。 需求办理员权限。
                                0/RESTORE_DEFAULT, 1/OVERRIDE
    -am   --accounting-mode=    启用或禁用记帐形式: 0/DISABLED, 1/ENABLED
    -caa  --clear-accounted-apps    铲除缓冲区中全部已记账的进程pid信息。
          --auto-boost-default= 将默许自动增强战略设置为 0/DISABLED 
                                或 1/ENABLED,仅在最终一个提高客户端
                                退出后强制履行更改。
          --auto-boost-permission=  答应非办理员/root 对自动增强形式进行控制:
                                0/UNRESTRICTED, 1/RESTRICTED
    -mig  --multi-instance-gpu= 启用或禁用多实例 GPU: 0/DISABLED, 1/ENABLED
                                需求 root 权限.
    -gtt  --gpu-target-temp=    以摄氏度为单位设置 GPU 的 GPU 方针温度。
                                需求办理员权限

-c 设置核算形式

设置方针 GPU 的核算形式。

核算形式标志指示单个或多个核算应用程序是否能够在 GPU 上运转。

0/Default:表示每个设备答应多个上下文。

1/Exclusive_Thread:已弃用,改用 Exclusive_Process

2/Prohibited:表示每台设备不答应运用任何上下文(无核算应用程序)。

3/Exclusive_Process: 表示每个设备只答应一个上下文,一次可从多个线程运用。

有关核算形式的阐明,请参阅(GPU 属性)部分。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,否则将影响全部 GPU。

此操作的作用是马到成功的。

但它不会在主机重新发动后持续存在。

每次主机重新发动后,核算形式将重置为“DEFAULT”。

取值规模:0/Default, 2/Prohibited, 3/Exclusive_Process

运转示例:

设置 0:Default 形式运转示例:

nvidia-smi -c 0

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

Exclusive_Thread形式已禁止设置:

nvidia-smi -c 1

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

能够看到,履行设置 Exclusive_Thread 形式的指令并未履行成功,输出提示该指令已抛弃,应当运用3:Exclusive_Process 代替,经过nvidia-smi指令也能够看到,核算形式依然是 Default ,上条指令并未修正成功。

设置 2:Prohibited 形式运转示例:

nvidia-smi -c 2

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

设置 3:Exclusive_Process 形式运转示例:

nvidia-smi -c 3

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

-dm/-fdm 敞开(强制敞开) TCC 驱动程序模型

-dm 敞开 TCC 驱动程序模型

-fdm 强制敞开 TCC 驱动程序模型

有关 Windows 驱动程序模型的详细信息,请参阅驱动程序模型。

留意:

仅适用于 Windows。
需求办理员权限。
假如衔接了显现器,-dm 将失败, 但 -fdm 将强制更改驱动程序模型。
除非运用 -i 参数指定单个 GPU,否则将影响全部 GPU。

需求重新发动才干进行更改。

运转示例:

敞开 TCC 驱动程序模型

cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi.exe -dm 1

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

强制敞开 TCC 驱动程序模型

cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi.exe -dm 1

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

–gom 设置 GPU 操作形式

设置 GPU 操作形式:

GOM 答应经过禁用 GPU 功能来下降功耗并优化 GPU 吞吐量。每个 GOM 都旨在满足特定的用户需求。

0/ALL_ON:形式下,全部都已启用并全速运转。

1/COMPUTE:形式旨在仅运转核算任务。不答应图形操作。

2/LOW_DP:形式专为运转不需求高带宽双精度的图形应用程序而设计。

有关 GOM 的更多信息,请参阅 GPU 操作形式。

留意: 0/ALL_ON、1/COMPUTE、2/LOW_DP 支撑 Kepler 系列的 GK110 M 级和 X 级 Tesla 产品

Quadro 和 Tesla C 级产品不支撑。

GeForce Titan 设备仅支撑LOW_DP 和 ALL_ON 形式。

仅1/COMPUTE不支撑 WDDM(Windows 显现驱动程序模型)

需求办理员权限。

GOM 更改在重启后收效。 将来或许会删去重新发动要求。

取值规模:0/ALL_ON, 1/COMPUTE, 2/LOW_DP

运转示例:

nvidia-smi --gom=0

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

留意:

因为本环境运用GPU卡是A30,暂不支撑设置gom形式,因而指令并未履行成功,此处仅仅为了演示指令自身是没有过错的。

-r 触发 GPU 的重置

触发一个或多个 GPU 的重置。可用于在需求重启机器的情况下铲除 GPU 硬件和软件状态。假如产生双位 ECC 过错,通常很有用。可选的 -i 开关可用于针对一个或多个特定设备。假如没有此选项,全部 GPU 都会被重置。

不能有任何应用程序运用这些设备(例如 CUDA 应用程序、图形应用程序(如 X 服务器)、监控应用程序(如其他 nvidia-smi 实例))。体系中的任何其他 GPU 上也不能运转任何核算应用程序

从 NVIDIA Ampere 架构开端,能够独自重置具有 NVLink 衔接的 GPU。在 NVSwitch 体系上,需求 Fabric Manager 来促进重置。

假如 Fabric Manager 未运转,或者任何要重置的 GPU 基于 NVIDIA Ampere 架构之前的架构,则任何具有 NVLink 衔接到要重置的 GPU 的 GPU 也必须在同一指令中重置。这能够经过省略 -i 开关或运用 -i 开关来指定要重置的 GPU 来完结。假如 -i 选项未指定要重置的完整 NVLink GPU 集,则此指令将宣布过错,标识必须包含在重置指令中的其他 GPU。

不能确保 GPU 重置在全部情况下都能正常工作。目前不主张用于出产环境。在某些情况下,板上的硬件组件或许无法在复位请求后康复到初始状态。这更有或许在 Fermi 一代产品与 Kepler 上看到,假如在挂起的 GPU 上履行重置,则更有或许看到。

重置后,主张在进一步运用之前验证每个重置 GPU 的运转状况。假如任何 GPU 不健康,则应经过重启节点来发动完全重置。

访问 developer.nvidia.com/gpu-deploym… 下载 GDK。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,否则将影响全部 GPU。

启用 MIG 的 vGPU Guests 机上不支撑 GPU 重置操作。

运转示例:

设置 0:Default 形式运转示例:

nvidia-smi -r

假如当前依然有程序在运用GPU,则会出现如下提示:

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

则阐明未重置成功,确保没有任何程序在GPU上运转,再履行重置指令。

能够经过:

fuser -v /dev/nvidia*

来查看哪些进程在运用GPU

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

以上示例中,能够看到有1074 1096 1232三个进程在运用GPU

运用kill指令杀掉对应的进程之后,则能够重置成功。

假如仍未重置成功,能够检查一下是否存在:

  • nv-hostengine 进程
  • fabric-manager进程
  • DCGM-exporter类似的容器

假如存在,杀掉对应进程后再重置。

-vm 切换 GPU 到虚拟化形式

切换 GPU 虚拟化形式: 将 GPU 虚拟化形式设置为 3/VGPU 或 4/VSGA。

留意: GPU 的虚拟化形式只能在它运转在办理程序上时设置。

取值规模:3/VGPU, 4/VSGA

运转示例:

设置 -vm 为 VGPU 形式

nvidia-smi -vm 3

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

留意:

因为本环境指令运转在Guest OS中,而不是办理面程序上,因而指令并未履行成功,此处仅仅为了演示指令自身是没有过错的。

设置 -vm 为 VSGA 形式

nvidia-smi -vm 4

NVIDIA-SMI系列命令详解(7)-设备修改选项(2)

留意:

因为本环境指令运转在Guest OS中,而不是办理面程序上,因而指令并未履行成功,此处仅仅为了演示指令自身是没有过错的。

附加选项

-i 显现单个指定GPU的数据

-i, --id=ID

显现单个指定 GPU 的数据。指定的 id 或许是驱动程序回来的天然枚举中 GPU 的从 0 开端的索引、GPU 的板序列号、GPU 的 UUID 或 GPU 的 PCI 总线 ID(如 domain:bus:device.function in hex)。主张需求一致性的用户运用 UUID 或 PCI 总线 ID,因为设备枚举顺序不能确保在重新发动之间保持一致,而且板序列号或许在同一板上的多个 GPU 之间共享。