Урок 3: Переменные окружения и LD_LIBRARY_PATH
Переменные окружения — это способ, которым Linux передаёт настройки конфигурации работающим программам. CUDA не найдёт libcuda.so без правильного LD_LIBRARY_PATH, а CUDA_VISIBLE_DEVICES определяет, какие GPU видит каждая программа, — критически важный инструмент планирования на нескольких GPU в NVID
Переменные окружения похожи на доску объявлений у каждой комнаты: ядро вывешивает там инструкции вроде «ищи библиотеки в /usr/local/cuda/lib64» и «используй только GPU 0 и 1». Каждый процесс читает доску, прежде чем начать работать.
- Переменная окружения (environment variable)
- Пара «ключ-значение», которую ядро передаёт каждому процессу. Процесс может читать, задавать и передавать переменные окружения своим дочерним процессам.
- PATH
- Переменная окружения, содержащая список каталогов, разделённых двоеточиями. Когда вы вводите команду, оболочка ищет двоичный файл в каждом каталоге по порядку.
- LD_LIBRARY_PATH
- Переменная, определяющая каталоги для поиска общих библиотек (.so) во время выполнения. Динамический компоновщик (ld.so) ищет в этих каталогах раньше, чем в /usr/lib.
- CUDA_VISIBLE_DEVICES
- Переменная, определяющая, какие карты GPU видны процессу CUDA. CUDA_VISIBLE_DEVICES=0,1 скрывает GPU 2,3 от процесса — необходимо для планирования в средах с несколькими GPU.
- export
- Команда bash, которая помечает переменную как переменную окружения, чтобы она передавалась дочерним процессам. Без export переменная видна только текущему процессу оболочки.