Para evitar el espacio de GPU a largo plazo al realizar un aprendizaje profundo, escribí un programa de detección de GPU en bash.
Lo principal es nvidia-smi
obtener el uso de la GPU en el nodo actual a través de la API. Si la memoria libre es menor que la memoria mínima requerida, esperará para siempre, y si es mayor que la memoria mínima requerida, el archivo code.sh
se ser ejecutado.
#!/bin/bash
# use 'nvidia-smi' API to get used memory
memory=`nvidia-smi --format=csv,noheader --query-gpu=memory.free -i 0`
memory=${memory: 0: -3}
memory_1=`nvidia-smi --format=csv,noheader --query-gpu=memory.free -i 1`
memory_1=${memory_1: 0: -3}
echo ${memory_1}
# set model size
min_size=10000
while ((memory<min_size||memory_1<min_size))
do
memory=`nvidia-smi --format=csv,noheader --query-gpu=memory.free -i 0`
memory=${memory: 0: -3}
echo "Out of Memory, Wait to Execute..."
sleep 3
done
# Execute code
echo $(bash code.sh)