monitor.sh 600 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
gpu_num=1

while :
do
    all_devices=$(seq 0 `gpustat | sed '1,2d' | wc -l`);
    count=0
    for dev in ${all_devices[@]}
    do
        line=`expr $dev + 2`
        use=`gpustat -p | head -n $line | tail -1 | cut -d '|' -f4 | wc -w`
        if [[ $use -eq 0 ]]; then
            device[$count]=$dev
            count=`expr $count + 1`
            if [[ $count -eq $gpu_num ]]; then
                break
            fi
        fi
    done
    if [[ ${#device[@]} -lt $gpu_num ]]; then
        sleep 60s
    else
        echo "Run $cmd"
        eval $cmd
        sleep 10s
        exit
    fi
done