總體目標:我想分配我的python程序到GPU的可用內存最多。nashia-smi命令在bash vs在終端最大的陣列
當前的問題:當我使用這個命令:
nvidia-smi --query-gpu=memory.free --format=csv
我得到以下輸出:
memory.free [MiB]
4800 MiB
5332 MiB
5346 MiB
當然,這非常頻繁變化,所以也許這是不是最好的方式來實現我的總體目標。目前,我正在嘗試使用它來確定三個中的哪個GPU具有最大的可用內存。在這種情況下,它顯然是GPU2(它們被標記爲0,1,2)。
我創建一個bash腳本:
#/bin/bash
myarr=($(nvidia-smi --query-gpu=memory.free --format=csv))
echo $myarr
此輸出到屏幕上:
memory.free
它用來輸出在此格式:
memory.free [MiB] 4800 MiB 5332 MiB 5346 MiB
我然後這樣做(with thanks to the first answer here):
myarr2=${myarr[2,4,6]}
echo $myarr2
IC=(`tr ' ' '\n' <<<$myarr2 | cat -n | sort -k2,2nr | head -n1`)
echo $IC
Ival=${IC[0]}
Cval=${IC[1]}
echo $Ival $Cval
但是,我所做的似乎並不重要,我總是得到位置1處的最大指數。在上面給出的例子中,這是正確的。一般來說,這是不正確的。
完整的腳本:
#/bin/bash
myarr=($(nvidia-smi --query-gpu=memory.free --format=csv))
echo $myarr
myarr2=${myarr[2,4,6]}
echo $myarr2
IC=(`tr ' ' '\n' <<<$myarr2 | cat -n | sort -k2,2nr | head -n1`)
echo $IC
Ival=${IC[0]}
Cval=${IC[1]}
echo $Ival $Cval
什麼是錯的,我如何尋找最大的位置?
'array =($(...任何...))'本質上是錯誤的,因爲它依賴於字符串分割,這與glob擴展一起發生。任何建議這種做法的東西都應該是可疑的。 –
謝謝@CharlesDuffy。但是我應該怎麼做呢? – StatsSorceress
['readarray -t' /'mapfile -t'](http://wiki.bash-hackers.org/commands/builtin/mapfile)或[BashFAQ#1](http://mywiki.wooledge。 org/BashFAQ/001)風格的循環。 –