Cài CUDA 9.0 trên Ubuntu 18.04 LTS

1. Cài NVIDIA driver 

Cài driver NVIDIA cho card theo hướng dẫn ở mục B tại bài Hướng Dẫn Cài Máy Cho Deep Learning. Nhưng ta sẽ bỏ qua bước cài CUDA sau đó vì nó sẽ cài CUDA 9.1 

2. Cài CUDA 9.0 

Vào trang https://developer.nvidia.com/cuda-90-download-archive và chọn: Linux -> x86_64 -> Ubuntu -> 17.04 -> runfile (local) 

Ngoài ra, bạn cần tải tất cả các Patch 

Sau đó, chạy dòng lệnh sau, nhớ phải thêm cái –override vì Ubuntu 18.04 xài gcc mới hơn yêu cầu của CUDA 9.0

sh cuda_9.0.176_384.81_linux.run --override

Rồi sau đó, theo hướng dẫn trên màn hình. Bạn cần bỏ qua bước cài driver (vì đã cài rồi, ở mục 1) 

3. Cài CuDNN 

Bạn cần CuDNN để chạy một số thư viện Deep Learning (vd như Tensorflow). Hãy tải CuDNN tại đây https://developer.nvidia.com/cudnn. Bạn sẽ cần tạo tài khoản. 

Hãy chọn “Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.0″ (vì mình dùng CUDA 9.0” -> cuDNN Library for Linux 

Sau khi tải về tập tin “cudnn-9.0-linux-x64-v7.4.1.5.tgz”, giải nén với lệnh

tar -xzvf cudnn-9.0-linux-x64-v7.4.1.5.tgz

Bạn sẽ thấy 1 thư mục cuda, trong đó có 2 thư mục con là include và lib64. Bạn sẽ cần copy 2 thư mục đó vào thư mục include và lib64 tương ứng trong chỗ bạn đã cài cuda (Mặc định: /usr/local/cuda). Hãy mở terminal trong thư mục vừa giải nén (chức 2 thư mục con include và lib64) Chạy lệnh sau để copy 

sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib64/libcudnn* /usr/local/cuda/lib64

Và cung cấp quyền 

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

4. Cài biến môi trường 

Bạn thêm vào cuối tập tin ~/.bashrc (mặc định) hoặc ~/.zshrc (nếu bạn cài zsh) 

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64"

Sau đó, tắt tất cả các terminal đang mở 

5. Kiểm tra xác nhận

Bạn cần cài gcc-6 và g++-6 để chạy chương trình mẫu 

sudo apt-get install gcc-6
sudo apt-get install g++-6

Bạn sẽ tải chương trình mẫu ở đây https://github.com/ttpro1995/cudnn_samples_v7 (hãy dùng git clone, hoặc download tay cũng được) 

Mở terminal trong thư mục mnistCUDNN và chạy các câu lệnh sau

make clean
make 
./mnistCUDNN

Bạn sẽ nhìn thấy như sau là đã cài thành công 

cudnnGetVersion() : 7401 , CUDNN_VERSION from cudnn.h : 7401 (7.4.1)
Host compiler version : GCC 6.4.0
There are 1 CUDA capable devices on your machine :
device 0 : sms  6  Capabilities 6.1, SmClock 1455.0 Mhz, MemSize (Mb) 4039, MemClock 3504.0 Mhz, Ecc=0, boardGroupID=0
Using device 0

Testing single precision
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.047904 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.060416 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.065248 time requiring 57600 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.128000 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.191392 time requiring 2057744 memory
Resulting weights from Softmax:
0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000 
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000 
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006 

Result of classification: 1 3 5

Test passed!

Testing half precision (math in single precision)
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.037888 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.044032 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.063488 time requiring 28800 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.121856 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.184064 time requiring 2057744 memory
Resulting weights from Softmax:
0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001 
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000 
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006 

Result of classification: 1 3 5

Test passed!

Leave a Reply

Your email address will not be published. Required fields are marked *