Я работаю сТеано, тест глубокого обучения, на свежеустановленной машине Ubuntu Mate 16.04. Theano может использовать ускорение GPU для ускорения вычислений. У меня есть видеокарта NVIDIA K2200M, которая поддерживает CUDA и установлена правильно, как nvidia-smi
показывает команда:
+------------------------------------------------------+
| NVIDIA-SMI 361.42 Driver Version: 361.42 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K2200M Off | 0000:01:00.0 Off | N/A |
| N/A 31C P8 N/A / N/A | 212MiB / 2047MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1090 G /usr/lib/xorg/Xorg 200MiB |
| 0 7931 G /usr/lib/firefox/firefox 1MiB |
+-----------------------------------------------------------------------------+
Немного предыстории: Theano необходимо настроить так, чтобы определить несколько переменных окружения, таких как $CUDA_ROOT
, и они ссылаются на , /usr/local/cuda
но установка nvidia-cuda-*
из официального репозитория Ubuntu Mate не создает эти папки. Тем не менее, Theano предлагает код Python, который может помочь определить, производятся ли вычисления с помощью CPU или GPU, и, что удивительно, Theano находит установку CUDA.
Вот в чем проблема: система распознает CUDA, но CUDA не может найти мой графический процессор, и я получаю сообщение об ошибке WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available (error: cuda unavailable)
.
Я пишу здесь askubuntu.com
, а не разработчикам Theano, потому что, обнаружив эту проблему, я удалил nvidia-cuda-*
и установил CUDA из официального пакета, предоставленного NVIDIA, следуяэтотруководство, так что вышеупомянутое /usr/local/cuda
было создано и, опять же, код Theano распознал установку CUDA, но он все еще не мог найти мой GPU. Вот почему я думаю, что это может быть проблема Ubuntu, а не неисправная реализация на стороне Theano.
решение1
Я как-то понял, что это проблема не Ubuntu, а Theano, поскольку я снова установил CUDA из источника, который я упомянул в OP, и мне удалось правильно запустить образцы данных из пакета CUDA, предоставленного NVIDIA, исключив (по моему неопытному мнению) проблему интеграции между NVIDIA-cuda-toolkit и NVIDIA-drivers.
Для тех (в будущем), у кого возникнет та же проблема, что и у меня, проблема, похоже, в модуле theano.sandbox.cuda
, когда __init__.py
он пытается скомпилировать cuda_ndarray.cu
в строках 168-175 (я полагаю, так как я немного изменил файл), когда этот файл вызывает функцию compiler.compile_str(...)
, которая, как я полагаю, была создана командой разработчиков Theano. NVCC работает правильно, но есть проблемы с компиляцией cuda_ndarray
.
Поэтому я отмечу этот вопрос как решенный, как только askubuntu позволит мне это сделать.
решение2
Если вы используете CUDA 7.5, обязательно следуйте официальным инструкциям:
CUDA 7.5 не поддерживает версию g++ по умолчанию. Установите поддерживаемую версию и сделайте ее версией по умолчанию.
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
Если в тестовом коде GPU theano обнаружена ошибка:
ОШИБКА (theano.sandbox.cuda): Не удалось скомпилировать cuda_ndarray.cu: libcublas.so.7.5: невозможно открыть файл общих объектов: Такого файла или каталога нет ПРЕДУПРЕЖДЕНИЕ (theano.sandbox.cuda): CUDA установлена, но графический процессор устройства недоступен (ошибка: cuda недоступен)
Просто используем ldconfig
команду для привязки общего объекта CUDA 7.5:
sudo ldconfig /usr/local/cuda-7.5/lib64