CUDA 與 Theano 集成

CUDA 與 Theano 集成

我正在與西阿諾,一個深度學習基準測試,在新安裝的 Ubuntu Mate 16.04 機器上進行。 Theano 可以使用 GPU 加速來加快運算速度。我有一塊支援 CUDA 且已正確安裝的 NVIDIA K2200M 顯示卡,如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但從官方 Ubuntu Mate 儲存庫安裝nvidia-cuda-*不會建立這些資料夾。儘管如此,Theano 提供了一個 python 程式碼,可以幫助確定計算是使用 CPU 還是 GPU 進行,令人驚訝的是 Theano 找到了 CUDA 安裝。

問題來了:CUDA 被系統識別,但 CUDA 似乎找不到我的 GPU,並且出現錯誤WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available (error: cuda unavailable)

我寫信askubuntu.com給 Theano 開發人員,而不是寫給 Theano 開發人員,因為發現這個問題,我卸載了 CUDA nvidia-cuda-*,並從 NVIDIA 提供的官方包中安裝了 CUDA,如下指南,這樣就/usr/local/cuda創建了上述內容,並且 Theano 代碼再次識別了 CUDA 安裝,但它仍然找不到我的 GPU。這就是為什麼我認為這可能是 Ubuntu 問題,而不是 Theano 方面的錯誤實作。

答案1

我有點發現這不是 Ubuntu 問題,而是 Theano 問題,因為我從 OP 中提到的源再次安裝了 CUDA,並且我成功地正確運行了 NVIDIA 提供的 CUDA 包中的示例數據,排除了(在我的經驗不足)NVIDIA-cuda-toolkit 和NVIDIA-drivers 之間的整合問題。

對於那些(將來)與我有相同問題的人,問題似乎出在模組中theano.sandbox.cuda,當__init__.py嘗試cuda_ndarray.cu在第 168-175 行進行編譯時(我相信,因為我只是稍微修改了文件),當該文件調用function 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++

如果theano GPU測試程式碼有錯誤:

錯誤(theano.sandbox.cuda):無法編譯cuda_ndarray.cu:libcublas.so.7.5:無法開啟共享物件檔案:沒有這樣的檔案或目錄警告(theano.sandbox.cuda):CUDA已安裝,但裝置GPU未安裝不可用(錯誤:cuda 不可用)

只需使用ldconfig命令連結 CUDA 7.5 的共享物件:

sudo ldconfig /usr/local/cuda-7.5/lib64

相關內容