我是批处理脚本的新手,遇到了一个问题。我正在运行一个命令来获取GPU利用率,我想将其子串,以便我可以将利用率作为整数使用。
运行nvidia-smi -q -d UTILIZATION
给我这个输出:
GPU 00000000:01:00.0
Utilization
Gpu : 100 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
这是相关的蝙蝠部分:
:checkGPUUtil
cd nvsmiPath
goto :loop
timeout 1
goto :start
:loop
if %tries% leq 3 (
set /a tries +=1
sleep 10
goto :loop
)
所以我要找的是复制GPU列中显示的值,当前为100并将其分配给整数。
我怎样才能做到这一点?
for %%a in (gpu1 gpu2) do set "%%a="
for /f "tokens=1,2delims=: " %%a in ('nvidia-smi -q -d UTILIZATION'
) do if "%%a"=="Gpu" if defined gpu1 (set /a gpu2=%%b) else (set /a gpu1=%%b)
echo GPU : %gpu1% and %gpu2%
set gpu
执行命令(单引号)标记为:和空格,选择第一个和第二个标记。如果第一个标记与qazxsw poi完全匹配,则将第二个标记分配给变量。
请参阅提示中的Gpu
(或SO上的示例)以获取文档。
[修改为2 gpus - 在原始问题中提及此信息会使任务更容易。]