Я работаю с Theano , тестом глубокого обучения, на недавно установленной машине 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, который может помочь определить, выполняются ли вычисления с использованием процессора или графического процессора, и удивительно, что 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, но все равно не смог найти мой графический процессор. Вот почему я думаю, что это может быть проблема Ubuntu, а не ошибочная реализация на стороне Theano.
Я отчасти выяснил, что это не была проблема Ubuntu, а Theano один, когда я установил CUDA снова из источника, я упомянул в OP, и мне удалось правильно выполнить демонстрационные данные из пакета CUDA, обеспеченного NVIDIA, исключив (по моему неопытному мнению) проблему интеграции между NVIDIA-cuda-toolkit и драйверами NVIDIA.
Для тех (в будущем) наличие той же проблемы как я, проблема, кажется, находится в theano.sandbox.cuda
модуль, когда __init__.py
попытки скомпилировать cuda_ndarray.cu
в строках 168-175 (я верю, так как я изменил файл просто немного), то, когда тот файл вызывает функцию compiler.compile_str(...)
, который является файлом, которому я верю, было создано группой разработчиков Theano. Выполнения NVCC правильно, но существуют проблемы, компилирующие cuda_ndarray
.
, Таким образом, я отмечу этот вопрос, как отвечено, как только askubuntu позволяет мне.
При использовании 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++
, Если theano тестовый код GPU имеет ошибку:
ОШИБКА (theano.sandbox.cuda): Не удалось скомпилировать cuda_ndarray.cu: libcublas.so.7.5: не может открыть файл общего объекта: Никакой такой файл или каталог, ПРЕДУПРЕЖДАЮЩИЙ (theano.sandbox.cuda): CUDA установлен, но устройство gpu не доступно (ошибка: unavilable cuda)
Просто использование ldconfig
команда для соединения общего объекта CUDA 7.5:
sudo ldconfig /usr/local/cuda-7.5/lib64