[A.I System Programming] B6: Cài đặt các công cụ và nền tảng cho CUDA Window

This entry is part 6 of 6 in the series A.I System Programming

1. Kiểm tra yêu cầu hệ thống

Trước khi bắt đầu, bạn cần xác nhận phần cứng và hệ điều hành đáp ứng các tiêu chuẩn sau:

  • GPU: Phải sử dụng GPU NVIDIA hỗ trợ CUDA. Kiểm tra bằng cách mở Device Manager -> Display adapters.
image 116 - quochung.cyou PTIT
image 117 - quochung.cyou PTIT

Display Adapter cho thấy đang sử dụng GPU NVIDIA

  • Hệ điều hành: Windows 10 hoặc Windows 11 (phiên bản 64-bit).
  • Driver: NVIDIA Driver phải ở phiên bản mới nhất để hỗ trợ các tập lệnh CUDA hiện đại.

2. Cài đặt Môi trường Phát triển (Visual Studio & VS Code)

Cài đặt Visual Studio

  1. Truy cập trang chủ Microsoft và tải Visual Studio (https://visualstudio.microsoft.com/downloads/)
  2. Trong quá trình cài đặt, tại tab Workloads, bạn bắt buộc phải tích chọn mục Desktop development with C++.
vscpp concierge choose workload - quochung.cyou PTIT
  1. Nếu thiếu thành phần này, trình biên dịch nvcc của CUDA sẽ không tìm thấy cl.exe và không thể build project.

3. Lựa chọn phiên bản CUDA Toolkit (Local vs. Network)

Khi truy cập trang tải NVIDIA CUDA Downloads, bạn sẽ phải chọn giữa hai loại bộ cài đặt:

Loại InstallerĐặc điểm
Network InstallerDung lượng tải về ban đầu rất nhỏ. Quá trình cài đặt sẽ tải các thành phần cần thiết từ server của NVIDIA.
Local InstallerDung lượng lớn (thường > 2GB). Chứa toàn bộ các thành phần cần thiết để cài đặt offline.

Quy trình cài đặt CUDA Toolkit

Khi khởi chạy tệp tin cài đặt (ví dụ: cuda_13.2.0_windows.exe), trình cài đặt sẽ giải nén vào một thư mục tạm thời. Sau đó, giao diện chính sẽ xuất hiện:

image 118 - quochung.cyou PTIT
  1. Kiểm tra tính tương thích: Trình cài đặt sẽ quét hệ thống để đảm bảo GPU và phiên bản Windows được hỗ trợ.
  2. Lựa chọn chế độ cài đặt (Options):
    • Express (Recommended): Cài đặt toàn bộ các thành phần mặc định, bao gồm Driver, Toolkit, và Visual Studio Integration.
    • Custom (Advanced): Cho phép chọn cụ thể các thành phần.
  3. Visual Studio Integration: Nếu thấy thông báo về Visual Studio, hãy đảm bảo rằng Visual Studio đã được đóng hoàn toàn. CUDA sẽ tự động cài đặt các template dự án và công cụ build vào Visual Studio.
  4. Hoàn tất: Sau khi cài đặt xong, trình cài đặt sẽ liệt kê các thành phần đã được thêm vào hệ thống.

Xác minh cài đặt (Verification)

Việc cài đặt thành công trên giao diện không đồng nghĩa với việc các biến môi trường đã được nhận diện chính xác. Bạn cần thực hiện kiểm tra qua Command Prompt (cmd) hoặc PowerShell.

Kiểm tra trình biên dịch (nvcc)

Mở terminal và gõ lệnh:

Bash

nvcc --version

Nếu hệ thống trả về thông tin phiên bản (ví dụ: Cuda compilation tools, release 13.2, V13.2.xx), nghĩa là trình biên dịch CUDA đã sẵn sàng. Nếu nhận lỗi “command not found”, bạn cần kiểm tra lại biến môi trường PATH.

Kiểm tra phần cứng và Driver (nvidia-smi)

Gõ lệnh:

Bash


nvidia-smi

Lệnh này sẽ hiển thị bảng thông số GPU hiện tại, bao gồm:

  • Tên GPU (ví dụ: RTX 4070).
  • Phiên bản Driver hiện tại.
  • CUDA Version: Đây là phiên bản CUDA tối đa mà Driver hiện tại hỗ trợ (không nhất thiết phải trùng với phiên bản Toolkit bạn vừa cài, nhưng phải lớn hơn hoặc bằng).
image 119 - quochung.cyou PTIT

Để lập trình CUDA, bạn không nên tạo dự án C++ thông thường mà nên sử dụng Template có sẵn của NVIDIA để các thiết lập về thư viện (Library) và đường dẫn (Include Path) được tự động cấu hình.

Các bước thực hiện:

  1. Mở Visual Studio.
  2. Chọn Create a new project.
  3. Trong ô tìm kiếm, gõ từ khóa “CUDA”.
  4. Chọn Template có tên CUDA [Phiên bản] Runtime (Ví dụ: CUDA 13.2 Runtime). Nhấn Next.
image 120 - quochung.cyou PTIT
  1. Đặt tên dự án và nhấn Create.

Giải thích về Template:

  • CUDA Runtime: Đây là mẫu dự án đã được tích hợp sẵn các “Build Customizations”. Nó cho phép Visual Studio hiểu các tệp tin có đuôi .cu là tệp mã nguồn CUDA và cần dùng trình biên dịch nvcc thay vì trình biên dịch C++ tiêu chuẩn.
  • Nếu bạn không thấy Template này, nghĩa là bước cài đặt CUDA Toolkit trước đó chưa tích hợp thành công vào Visual Studio. Bạn cần chạy lại bộ cài CUDA

Viết mã thử nghiệm “Hello World” từ GPU

Khi dự án được tạo, mặc định sẽ có một tệp kernel.cu. Bạn hãy xóa nội dung cũ và thay bằng đoạn mã dưới đây để kiểm tra khả năng thực thi song song:

C
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

// Kernel chạy trên GPU
__global__ void helloFromGPU() {
    printf("Hello World từ GPU! Block: %d, Thread: %d\n", blockIdx.x, threadIdx.x);
}

int main() {
    printf("Hello World từ CPU!\n");

    // Chạy Kernel với 2 Block, mỗi Block có 5 Thread (tổng cộng 10 luồng song song)
    helloFromGPU<<<2, 5>>>();

    // Chờ GPU hoàn thành công việc trước khi kết thúc chương trình CPU
    cudaError_t err = cudaDeviceSynchronize();

    if (err != cudaSuccess) {
        printf("Lỗi CUDA: %s\n", cudaGetErrorString(err));
        return 1;
    }

    return 0;
}

Biên dịch và Chạy (Build & Run)

  1. Chọn cấu hình: Trên thanh công cụ, đảm bảo bạn đang chọn x64 (CUDA hiện tại không còn hỗ trợ x86/32-bit).
  2. Build: Nhấn Ctrl + Shift + B để biên dịch.
  3. Run: Nhấn Ctrl + F5 để chạy không debug.

Kết quả mong đợi: Màn hình console sẽ hiển thị dòng “Hello World từ CPU!” trước, sau đó là 10 dòng “Hello World từ GPU!” với các chỉ số Block và Thread khác nhau.

Xử lý lỗi “cudaSetDevice failed!”

Nếu bạn chạy chương trình và nhận được thông báo lỗi:

cudaSetDevice failed! Do you have a CUDA-capable GPU installed? addWithCuda failed! ...exited with code 1 (0x1).

Đây là dấu hiệu cho thấy CUDA Runtime không thể khởi tạo hoặc giao tiếp với GPU. Nguyên nhân thường nằm ở một trong ba trường hợp sau:

Trường hợp 1: Driver NVIDIA quá cũ (Lỗi phổ biến nhất)

Bộ cài CUDA Toolkit thường đi kèm với một bản Driver nhất định. Tuy nhiên, nếu bạn cài bản CUDA Toolkit mới (ví dụ 12.x hoặc 13.x) nhưng Driver trên máy vẫn là bản cũ từ nhiều năm trước, GPU sẽ không hiểu được các tập lệnh mới. (Điều này có thể kiểm tra ở đoạn thử nghiệm lệnh nvidia-smi và nvcc ở bước trước)

  • Cách khắc phục: Truy cập NVIDIA Driver Downloads. Chọn đúng dòng Card đồ họa của bạn và tải bản Game Ready Driver hoặc Studio Driver mới nhất. Cài đặt và khởi động lại máy.

Trường hợp 2: Lệch phiên bản giữa CUDA Toolkit và Driver

Mỗi phiên bản CUDA Toolkit yêu cầu một phiên bản Driver tối thiểu (Minimum Driver Version).

  • Ví dụ: CUDA 12.x yêu cầu Driver phiên bản 525.60.13 trở lên trên Windows.
  • Nếu bạn sử dụng Toolkit phiên bản cao hơn mức Driver hỗ trợ, hàm cudaSetDevice sẽ trả về mã lỗi.

Trường hợp 3: Thiết bị không hỗ trợ CUDA

Dù hiếm gặp trên các dòng máy tính mới, nhưng nếu bạn sử dụng GPU onboard (Intel/AMD) hoặc các dòng GPU NVIDIA quá cũ (kiến trúc Tesla đời đầu), phần cứng sẽ không có nhân CUDA để thực thi.