Hướng dẫn cài đặt CUDA 11.8 và cuDNN 8.6.0 trên Ubuntu 20.04

Có vài cách cài đặt CUDA cho Ubuntu, bài viết này chia sẻ cách đã làm thành công và ổn định.

Bài viết này giả sử rằng các bạn vừa mới cài đặt xong hệ điều hành (clean install), chưa cài đặt CUDA.

Các câu lệnh bên dưới nếu cần sudo thì đều có sudo sẵn, còn lệnh nào không có sudo thì các bạn không cần thêm sudo

Mục lục

  1. Cấu hình máy tính
  2. Lựa chọn phiên bản CUDA và cuDNN phù hợp với GPU
  3. Cài đặt driver GPU NVIDIA
  4. Download CUDA 11.8
  5. Cài đặt CUDA 11.8
  6. Download và cài đặt cuDNN 8.6.0

Cấu hình máy tính

  • OS: Ubuntu 20.04 desktop
  • CPU: AMD Ryzen 5 5500
  • RAM: 16GB
  • GPU: Gigabyte RTX 3060 12GB

Lựa chọn phiên bản CUDA và cuDNN phù hợp với GPU

Đầu tiên các bạn kiểm tra Compute Capability của GPU tại link: cuda-gpus. Dòng RTX 3060 là Geforce, đây là dòng chuyên dành cho game và Deep Learning.

Geforce RTX 3060 có Compute Capability là 8.6

Kiểm tra phiên bản CUDA và cuDNN tối đa có thể cài tại link: Support Matrix. Với Compute Capability là 8.6 thì có thể cài đặt CUDA 12.6cuDNN 9.5.1

Tuy nhiên do nhiều máy tính đang cài CUDA 11.8 và cuDNN 8.6.0 nên bài viết này chỉ tập trung vào 2 phiên bản này.

Cài đặt driver GPU NVIDIA

Gỡ bỏ driver (nếu đã cài) để tránh xung đột
Nếu mới cài Ubuntu thì bỏ qua bước này.
sudo apt-get --purge remove '*nvidia*'
sudo apt-get autoremove
sudo apt-get autoclean

Thêm repository NVIDIA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

Liệt kê danh sách các driver version phù hợp với GPU của bạn
ubuntu-drivers devices

Trong đó sẽ có 1 version phù hợp với GPU của bạn, như trong hình là 470

Cài đặt driver GPU NVIDIA bằng lệnh
sudo apt-get install nvidia-driver-470

Sau khi cài đặt xong thì khởi động lại
sudo reboot

Bước 1: download CUDA 11.8

Hiện tại 11.8 không phải là phiên bản mới nhất, bản mới nhất là 12.x. Bạn download tại link: CUDA Toolkit 11.8 Downloads

Các option khi download:

✅ Operating System

Ubuntu là Linux nên chọn Linux.

✅ Architecture

Đây là kiến trúc phần cứng, tùy theo phần cứng mà chọn phiên bản cho phù hợp

  1. x86_64: Đây là kiến trúc 64-bit phổ biến cho các CPU dựa trên x86 của Intel và AMD.
  2. ppc64le (PowerPC 64-bit Little Endian): Kiến trúc này là phiên bản 64-bit của dòng PowerPC với thứ tự byte là Little Endian. Được sử dụng chủ yếu trên các hệ thống IBM Power Systems
  3. arm64-sbsa: Đây là kiến trúc 64-bit của Arm, được thiết kế dành riêng cho các máy chủ (server) với Server Base System Architecture (SBSA)
  4. aarch64-jetson: Đây là phiên bản 64-bit của kiến trúc Arm (aarch64) được tối ưu hóa cho NVIDIA Jetson

Như vậy với máy tính thông thường sử dụng CPU Intel hoặc AMD thì chọn x86_64. Nếu cài đặt cho Jetson Nano thì chọn aarch64-jetson

✅ Distribution

Gọi là “bản phân phối” vì chỉ có 1 hệ điều hành là Linux, còn Ubuntu, Centos, Fedora,… gọi chính xác là bản phân phối. Trong bài này các bạn chỉ cần quan tâm đến 2 phiên bản là:

  1. Ubuntu: phiên bản đang được cộng đồng mã nguồn mở yêu thích, các lập trình viên về khoa học máy tính rất yêu thích nên được hỗ trợ nhiều từ các thư viện.
  2. WSL-Ubuntu (Windows Subsystem for Linux): sử dụng terminal của Ubuntu trên Windows. Đây là hàng “chính hãng” của Microsoft, tuy nhiên nên sử dụng thuần Windows hoặc Ubuntu.

✅ Version

Chọn phiên bản hệ điều hành tùy vào bản các bạn đã cài. Bài viết này chọn hệ điều hành Ubuntu 20.04 vì cài đặt sẵn Python 3.8 – phiên bản phù hợp với YOLO v8.

✅ Installer Type

  1. deb (local): deb là định dạng file cài đặt chuẩn của Ubuntu. File này phù hợp download về cài offline.
  2. deb (network): file này vừa cài vừa download, giúp bạn tiết kiệm dung lượng khi lưu trữ bản cài đặt.
  3. runfile (local): định dạng file nhiều option hơn. Tuy nhiên file này không được khuyến khích

Tóm lại, bạn nên chọn file deb, local hay network tùy nhu cầu của bạn.

Bước 2: cài đặt CUDA 11.8

Sau khi chọn xong sẽ có các command hướng dẫn như bên dưới, chạy bằng Terminal là được.

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.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

Sau khi cài đặt xong cần cấu hình biến môi trường

export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Kích hoạt thay đổi:
source ~/.bashrc

Sau đó chạy lệnh dưới để kiểm tra, nếu thấy thông tin về CUDA 11.8, cài đặt đã thành công.

nvcc --version

Bước 3: download và cài đặt cuDNN 8.6.0

Đầu tiên các bạn phải đăng ký tài khoản developer NVIDIA để download được cuDNN: https://developer.nvidia.com/. Đăng ký và active qua email như đăng ký các trang khác (hoàn toàn miễn phí).

Sau đó download cuDNN 8.6.0 tại link: cudnn-archive

Chọn phiên bản cuDNN 8.6.0 dành cho CUDA 11.8, Ubuntu 20.04 như hình dưới

Các bạn sẽ download được file: cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb

Cài đặt bằng lệnh:
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb

Sau khi cài đặt xong thì trong folder /var có folder cudnn-local-repo-ubuntu2004-8.6.0.163 như hình dưới

Tiếp tục vào trong folder cudnn-local-repo-ubuntu2004-8.6.0.163 bạn sẽ thấy file *.publibcudnn8, libcudnn8-dev như hình dưới: B0FE0A41.pub

Add pub key và cài đặt cuDNN

sudo apt-key add /var/cudnn-local-repo-ubuntu2004-8.6.0.163/B0FE0A41.pub
sudo apt-get update
sudo apt-get install libcudnn8=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.6.0.163-1+cuda11.8

Trong đó 8.6.0.163-1+cuda11.8 là version của file trong folder /var/cudnn-local-repo-ubuntu2004-8.6.0.163

Ciểm tra cuDNN cài đặt thành công chưa bằng lệnh bên dưới, hiện ra đầy đủ thông tin là thành công.

sudo apt search cudnn | grep installed

Chúc các bạn thành công

Leave a Reply