На компьютере с несколькими GPU, как мне определить, на каком графическом процессоре должно работать CUDA-задание?
В качестве примера, при установке CUDA я решил установить NVIDIA_CUDA-<#.#>_Samples
, а затем выполнил несколько экземпляров моделирования nbody
, но все они работали на одном графическом процессоре 0; GPU 1 был полностью бездействующим (контролируется с помощью watch -n 1 nvidia-dmi
). Проверка CUDA_VISIBLE_DEVICES
с помощью
echo $CUDA_VISIBLE_DEVICES
Я нашел, что это не было установлено. Я попытался установить его с помощью
CUDA_VISIBLE_DEVICES=1
затем снова запустив nbody
, но он также перешел на GPU 0.
Я рассмотрел связанный с этим вопрос как выбрать назначенный GPU для запуска программы CUDA?, но deviceQuery
не находится в каталоге CUDA 8.0 bin. В дополнение к $CUDA_VISIBLE_DEVICES$
, я видел, что другие сообщения относятся к переменной окружения $CUDA_DEVICES
, но они не были установлены, и я не нашел информацию о том, как ее использовать.
Не имея прямого отношения к моему вопросу, используя nbody -device=1
, я смог запустить приложение на GPU 1, но с помощью nbody -numdevices=2
не работал на обоих графических процессорах 0 и 1.
Я тестирую это на системе, использующей оболочку bash, на CentOS 6.8, с графическими процессорами CUDA 8.0, 2 GTX 1080 и драйвером NVIDIA 367.44.
Я знаю, что при написании с использованием CUDA вы можете управлять и использовать ресурсы CUDA, но как мне это сделать из командной строки при запуске скомпилированного исполняемого файла CUDA?