mac - cuda wikipedia
¿Cómo selecciono en qué GPU ejecutar un trabajo? (1)
En una computadora con múltiples GPU, ¿cómo designo en qué GPU se debe ejecutar un trabajo CUDA?
Como ejemplo, al instalar CUDA, opté por instalar NVIDIA_CUDA-<#.#>_Samples
ejecutaron varias instancias de la simulación de nbody
, pero todas se ejecutaron en una GPU 0; La GPU 1 estaba completamente inactiva (monitoreada usando watch -n 1 nvidia-dmi
). Verificando CUDA_VISIBLE_DEVICES
usando
echo $CUDA_VISIBLE_DEVICES
Encontré que esto no fue establecido. Intenté configurarlo usando
CUDA_VISIBLE_DEVICES=1
luego ejecutando nbody
nuevo pero también fue a GPU 0.
Miré la pregunta relacionada, ¿cómo elegir la GPU designada para ejecutar el programa CUDA? , pero el comando deviceQuery
no está en el directorio bin de CUDA 8.0. Además de $CUDA_VISIBLE_DEVICES$
, vi que otras publicaciones se referían a la variable de entorno $CUDA_DEVICES
pero no estaban establecidas y no encontré información sobre cómo usarlas.
Si bien no estaba directamente relacionado con mi pregunta, al usar nbody -device=1
pude hacer que la aplicación se ejecutara en la GPU 1, pero al usar nbody -numdevices=2
no se ejecutó en la GPU 0 y 1.
Estoy probando esto en un sistema que ejecuta el shell bash, en CentOS 6.8, con CUDA 8.0, 2 GPU GTX 1080 y el controlador NVIDIA 367.44.
Sé que cuando escribo usando CUDA, puede administrar y controlar qué recursos de CUDA usar, pero ¿cómo puedo administrar esto desde la línea de comandos al ejecutar un ejecutable compilado de CUDA?
El problema se debió a que no se configuró CUDA_VISIBLE_DEVICES
variable CUDA_VISIBLE_DEVICES
dentro del shell.
Para especificar el dispositivo 1
de CUDA, por ejemplo, establecería los CUDA_VISIBLE_DEVICES
utilizando
export CUDA_VISIBLE_DEVICES=1
o
CUDA_VISIBLE_DEVICES=1 ./cuda_executable
El primero establece la variable para la vida del shell actual, el último solo para la vida útil de esa invocación ejecutable en particular.
Si desea especificar más de un dispositivo, utilice
export CUDA_VISIBLE_DEVICES=0,1
o
CUDA_VISIBLE_DEVICES=0,1 ./cuda_executable