设备修正选项(DEVICE MODIFICATION OPTIONS)

本文为NVIDIA-SMI系列指令详解第八篇-设备修正选项(3),介绍和演示了nvidia-smi 指令和时钟相关的设备修正选项:

  • GPU图形SM相关时钟频率参数 -lgc/-rgc。
  • GPU内存相关时钟频率参数 -lmc/-rmc。
  • GPU应用程序相关时钟频率参数 -ac/-rac。

设备修正选项是修正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 目标温度。
                                需求管理员权限

-lgc 设置 GPU 时钟频率取值规模

将指定的一对 <minGpuClock,maxGpuClock> 时钟频率取值规模(例如 1500,1800),设置为需确定的 GPU 时钟频率的规模(以 MHz 为单位)。不管 GPU 上是否存在正在运转的应用程序,设置此项将替代applications-clocks并收效。输入也可所以一个单一的希望时钟值(例如 <GpuClockValue>)。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

仅支撑Volta以上的系列。

取值规模:0~设备支撑的最大时钟频率

可履行如下指令检查graphics、sm、memory的最大时钟频率:

nvidia-smi --format=csv --query-gpu=clocks.max.graphics,clocks.max.sm,clocks.max.memory

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

能够履行如下指令检查设备支撑的 GPU 时钟频率列表:

nvidia-smi -i 0 --format=csv --query-supported-clocks=gpu_name,gpu_bus_id,gpu_uuid,gr

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

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

得到支撑的时钟频率取值(单位:MHz)为:

1440、1425、1410、1395、1380、1365、1350、1335、1320、1305、1290、1275、1260、1245、1230、1215、1200、1185、1170、1155、1140、1125、1110、1095、1080、1065、1050、1035、1020、1005、990、975、960、945、930、915、900、885、870、855、840、825、810、795、780、765、750、735、720、705、690、675、660、645、630、615、600、585、570、555、540、525、510、495、480、465、450、435、420、405、390、375、360、345、330、315、300、285、270、255、240、225、210

运转示例:

设置 GPU 时钟频率区间规模为 <200,300> MHz 运转示例:

nvidia-smi  -lgc 200,300

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

设置 GPU 时钟频率为 345MHz 运转示例:

nvidia-smi  -lgc 345

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

-rgc 重置 GPU 时钟频率到默许值

重置 GPU 时钟频率到默许值。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

仅支撑Volta以上的系列。

运转示例:

重置 GPU 时钟频率到默许值 运转示例:

nvidia-smi  -rgc

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

-lmc 设置 GPU 内存时钟频率取值规模

将指定的一对 <minMemClock,maxMemClock> 时钟频率取值规模(例如 5100,5100) ,设置为需确定 的 GPU 内存时钟频率的规模(以 MHz 为单位)。输入也可所以一个单一的希望时钟值(例如<MemClockValue>)。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

取值规模:0~设备支撑的最大时钟频率

可履行如下指令检查graphics、sm、memory的最大时钟频率:

nvidia-smi --format=csv --query-gpu=clocks.max.graphics,clocks.max.sm,clocks.max.memory

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

履行如下指令能够看到支撑的 GPU 内存频率列表:

nvidia-smi -i 0 --format=csv --query-supported-clocks=timestamp,gpu_name,gpu_bus_id,gpu_serial,gpu_uuid,memory

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

能够看到,GPU内存频率仅支撑 1593 MHz。

运转示例:

设置 GPU 内存时钟频率区间规模为 <500,600> MHz 运转示例:

nvidia-smi  -lmc 500,600

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

留意:因为本环境A100设备不支撑设置内存时钟频率,因而本指令并未履行成功,此处只是为了演示指令没有过错,在支撑的设备上履行此指令将会返回履行成功成果。

设置 GPU 内存时钟频率为 550MHz 运转示例:

nvidia-smi  -lmc 150

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

留意:因为本环境A100设备不支撑设置内存时钟频率,因而本指令并未履行成功,此处只是为了演示指令没有过错,在支撑的设备上履行此指令将会返回履行成功成果。

-rmc重置 GPU 内存时钟频率到默许值

重置 GPU 内存时钟频率到默许值。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

运转示例:

重置 GPU 时钟频率到默许值 运转示例:

nvidia-smi  -rmc

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

留意:因为本环境A100设备不支撑设置内存时钟频率,因而本指令并未履行成功,此处只是为了演示指令没有过错,在支撑的设备上履行此指令将会返回履行成功成果。

-ac 设置应用程序的 GPU 内存和 SM 时钟频率取值规模

将指定的一对 <memory,graphics> 时钟频率值(例如 2000,800) ,设置为 GPU 上运转的应用程序的memory和graphics(SM)时钟频率值(以 MHz 为单位)。

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

仅支撑根据 Maxwell 的 GeForce 和 Kepler+ 系列的 Tesla/Quadro/Titan 设备。

取值规模:0~设备支撑的最大时钟频率

可履行如下指令检查graphics、sm、memory的最大时钟频率:

nvidia-smi --format=csv --query-gpu=clocks.max.graphics,clocks.max.sm,clocks.max.memory

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

能够履行如下指令检查设备支撑的 GPU 内存时钟频率 和 GPU 时钟频率列表:

nvidia-smi -i 0 --format=csv --query-supported-clocks=gpu_name,gpu_bus_id,memory,gr

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

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

得到 GPU 支撑的时钟频率取值(单位:MHz)为:

1440、1425、1410、1395、1380、1365、1350、1335、1320、1305、1290、1275、1260、1245、1230、1215、1200、1185、1170、1155、1140、1125、1110、1095、1080、1065、1050、1035、1020、1005、990、975、960、945、930、915、900、885、870、855、840、825、810、795、780、765、750、735、720、705、690、675、660、645、630、615、600、585、570、555、540、525、510、495、480、465、450、435、420、405、390、375、360、345、330、315、300、285、270、255、240、225、210

GPU 内存支撑的时钟频率为(单位:MHz)为:

1593

运转示例:

设置应用程序 GPU 内存时钟频率和 GPU SM时钟频率 为 <1593,600> MHz 运转示例:

nvidia-smi  -ac 1593,600

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

留意:

设置ac时,需求保持persistence mode为enable状况,不然会有已知问题,如图:

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

能够经过:

nvidia-smi  -pm 1

开启persistence mode。

设置ac时,对应的值必须是经过–query-supported-clocks查询支撑的时钟频率,不然会报错,如图:

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

-rac 重置应用程序的 GPU 内存和 SM 时钟频率到默许值

重置应用程序的 GPU 内存和 SM 时钟频率到默许值

留意:

需求root权限。

除非运用 -i 参数指定单个 GPU,不然将影响一切 GPU。

仅支撑根据 Maxwell 的 GeForce 和 Kepler+ 系列的 Tesla/Quadro/Titan 设备。

运转示例:

重置 GPU 时钟频率到默许值 运转示例:

nvidia-smi  -rac

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

附加选项

-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 之间共享。