1. Kiểm tra phần cứng và phần mềm
Trước khi bắt đầu, bạn cần đảm bảo rằng hệ thống của mình đáp ứng các yêu cầu sau:
- GPU NVIDIA: Đảm bảo rằng bạn có GPU NVIDIA hỗ trợ CUDA
- Hệ điều hành Ubuntu: Các phiên bản được hỗ trợ là Ubuntu 20.04, 22.04, v.v.
- Driver NVIDIA: Bạn cần cài đặt driver NVIDIA tương thích với GPU của mình
Nếu bạn sử dụng TensorFlow thì nên kiểm tra xem phiên bản CUDA nào hỗ trợ tại đây

Hiện tại mình sử dụng NVIDIA Tesla T4 và không dùng TensorFlow
Xem Nvidia-driver hỗ trợ CUDA Toolkit nào tại đây

Xem Driver GPU của bạn và phiên bản CUDA tại đây Mình sẽ dùng Cuda 11.4


Sẽ có phiên bản phù hợp hiện ra

Vậy mình sẽ sử dụng phiên bản 470 phù hợp CUDA 11.4
2. Cài đặt driver NVIDIA
1. Mở terminal và nhập các lệnh sau để thêm kho lưu trữ và cài đặt driver NVIDIA: Thêm Trình điều khiển đồ họa PPA (Lưu trữ gói cá nhân) vào hệ thống của bạn:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
2. Cài đặt driver NVIDIA
sudo apt install nvidia-driver-<version> # Thay <version> bằng số phiên bản driver bạn muốn
sudo apt-get install nvidia-driver-470 # Mình sẽ dùng phiên bản 470 đã chọn
3. Khởi động lại máy tính để áp dụng thay đổi.
sudo reboot
Kiểm tra xem driver đã cài đặt thành công chưa:
nvidia-smi

Nếu bạn thấy thông tin về GPU và driver, bạn đã cài đặt thành công.
3. Tải và cài đặt CUDA Toolkit
1. Tải CUDA Toolkit từ trang chủ NVIDIA:Truy cập trang CUDA Toolkit Download và chọn:
- Operating System: Linux
- Architecture: x86_64
- Distribution: Ubuntu
- Version: Chọn phiên bản Ubuntu của bạn (ví dụ: 20.04 hoặc 22.04)
- Installer Type: Deb (local)


2. Cài đặt CUDA Toolkit:
Mở terminal và chạy lệnh từ Base Installer web có đưa ra theo phiên bản mình chọn ở trên
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
Khởi động lại máy tính để áp dụng thay đổi.
sudo reboot
3. Cấu hình biến môi trường
Sau khi cài đặt CUDA, bạn cần cấu hình biến môi trường để hệ thống nhận diện được thư viện CUDA:
Mở file cấu hình bash:
nano ~/.bashrc
Thêm các dòng sau vào cuối file:
export PATH=/usr/local/cuda-11.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH
Lưu file và thoát (nhấn Ctrl + X
, sau đó nhấn Y
và Enter
).
Hoặc có thể dùng echo
echo 'export PATH=/usr/local/cuda-11.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
Áp dụng thay đổi:
source ~/.bashrc
4. Kiểm tra cài đặt CUDA
Để đảm bảo rằng CUDA đã được cài đặt thành công, bạn có thể kiểm tra bằng cách:
Mở terminal và nhập lệnh sau:
nvcc --version
Nếu CUDA được cài đặt thành công, bạn sẽ thấy thông tin về phiên bản CUDA.
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Wed_Jun__2_19:15:15_PDT_2021
Cuda compilation tools, release 11.4, V11.4.48
Build cuda_11.4.r11.4/compiler.30033411_0
Cài đặt cuDNN (Tùy chọn)
Nếu bạn cần sử dụng cuDNN để tối ưu hóa hiệu suất cho các ứng dụng học sâu, bạn có thể tải cuDNN từ trang chính thức của NVIDIA cuDNN. Sau khi tải về phiên bản tương thích với CUDA mà bạn đã cài đặt, làm theo các bước cài đặt tương tự như CUDA:
Xem các phiên bản cuDNN tại đây

Mình tải phải nén thẳng trên máy. Bạn có thể xem tất cả phiên bản tại đây
Mình sử dụng Cuda11.4 nên chọn bản v8.2.4

Tải xuống file cuDNN
sudo wget https://developer.download.nvidia.com/compute/redist/cudnn/v8.2.4/cudnn-11.4-linux-x64-v8.2.4.15.tgz
Giải nén file cuDNN.
sudo apt-get install zlib1g # Cài library giải nén nếu bạn chưa có
sudo tar -xzvf cudnn-11.4-linux-x64-v8.2.4.15.tgz
Sau khi giải nén ta được 2 folder include và lib64 như dưới
├── cuda
│ ├── include
│ │ ├── cudnn_adv_infer.h
│ │ ├── cudnn_adv_infer_v8.h
│ │ ├── cudnn_adv_train.h
│ │ ├── cudnn_adv_train_v8.h
│ │ ├── cudnn_backend.h
│ │ ├── cudnn_backend_v8.h
│ │ ├── cudnn_cnn_infer.h
│ │ ├── cudnn_cnn_infer_v8.h
│ │ ├── cudnn_cnn_train.h
│ │ ├── cudnn_cnn_train_v8.h
│ │ ├── cudnn.h
│ │ ├── cudnn_ops_infer.h
│ │ ├── cudnn_ops_infer_v8.h
│ │ ├── cudnn_ops_train.h
│ │ ├── cudnn_ops_train_v8.h
│ │ ├── cudnn_v8.h
│ │ ├── cudnn_version.h
│ │ └── cudnn_version_v8.h
│ ├── lib64
│ │ ├── libcudnn_adv_infer.so -> libcudnn_adv_infer.so.8
│ │ ├── libcudnn_adv_infer.so.8 -> libcudnn_adv_infer.so.8.2.4
│ │ ├── libcudnn_adv_infer.so.8.2.4
│ │ ├── libcudnn_adv_train.so -> libcudnn_adv_train.so.8
│ │ ├── libcudnn_adv_train.so.8 -> libcudnn_adv_train.so.8.2.4
│ │ ├── libcudnn_adv_train.so.8.2.4
│ │ ├── libcudnn_cnn_infer.so -> libcudnn_cnn_infer.so.8
│ │ ├── libcudnn_cnn_infer.so.8 -> libcudnn_cnn_infer.so.8.2.4
│ │ ├── libcudnn_cnn_infer.so.8.2.4
│ │ ├── libcudnn_cnn_infer_static.a
│ │ ├── libcudnn_cnn_infer_static_v8.a -> libcudnn_cnn_infer_static.a
│ │ ├── libcudnn_cnn_train.so -> libcudnn_cnn_train.so.8
│ │ ├── libcudnn_cnn_train.so.8 -> libcudnn_cnn_train.so.8.2.4
│ │ ├── libcudnn_cnn_train.so.8.2.4
│ │ ├── libcudnn_cnn_train_static.a
│ │ ├── libcudnn_cnn_train_static_v8.a -> libcudnn_cnn_train_static.a
│ │ ├── libcudnn_ops_infer.so -> libcudnn_ops_infer.so.8
│ │ ├── libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.2.4
│ │ ├── libcudnn_ops_infer.so.8.2.4
│ │ ├── libcudnn_ops_train.so -> libcudnn_ops_train.so.8
│ │ ├── libcudnn_ops_train.so.8 -> libcudnn_ops_train.so.8.2.4
│ │ ├── libcudnn_ops_train.so.8.2.4
│ │ ├── libcudnn.so -> libcudnn.so.8
│ │ ├── libcudnn.so.8 -> libcudnn.so.8.2.4
│ │ ├── libcudnn.so.8.2.4
│ │ ├── libcudnn_static.a
│ │ └── libcudnn_static_v8.a -> libcudnn_static.a
│ └── NVIDIA_SLA_cuDNN_Support.txt
Sao chép các file cudnn.h
và libcudnn.so
vào thư mục CUDA tương ứng:
- Copy file
cudnn.h
vào:/usr/local/cuda/include
- Copy các file
libcudnn.so.*
vào:/usr/local/cuda/lib64
sudo cp -P cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
Cập nhật quyền truy cập
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn.so.*
Sau khi hoàn thành, bạn có thể kiểm tra xem cuDNN đã được cài đặt đúng cách bằng cách sử dụng các ví dụ từ bộ cuDNN hoặc thông qua các framework học sâu như TensorFlow hoặc PyTorch.
Kết luận
Qua bài viết này, chúng ta đã tìm hiểu cách cài đặt CUDA trên Ubuntu, từ việc cài đặt driver NVIDIA đến thiết lập CUDA và cuDNN. Việc cài đặt đúng môi trường GPU với CUDA sẽ giúp tối ưu hóa hiệu suất cho các ứng dụng học sâu và các tác vụ tính toán phức tạp. Sau khi cài đặt, bạn có thể sử dụng GPU của mình cho các công việc như huấn luyện mô hình học máy, xử lý dữ liệu lớn và nhiều tác vụ đòi hỏi hiệu suất cao khác.
Đừng quên kiểm tra kỹ phiên bản CUDA và cuDNN sao cho tương thích với framework bạn đang sử dụng. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình cài đặt, hãy tham khảo tài liệu chính thức của NVIDIA hoặc cộng đồng để được hỗ trợ.
Hy vọng rằng hướng dẫn này đã giúp bạn dễ dàng hơn trong việc cài đặt CUDA và cuDNN trên Ubuntu. Chúc bạn thành công với các dự án sử dụng GPU của mình!