Liên hệ với chúng tôi
 Thời gian kéo dài 8 Giờ học

Đề cương khóa học

Giới thiệu về Điện toán Tăng tốc bằng GPU

  • Điện toán đa dạng (heterogeneous) và kiến trúc CPU-GPU
  • Không gian thực thi và bộ nhớ của CUDA
  • Biên dịch mã CUDA C++ với nvcc và CMake
  • Xác minh môi trường phát triển GPU

Thuật toán Song song với Thrust và CUB

  • Sắp xếp, giảm (reduce) và biến đổi được tăng tốc trên GPU
  • Tái cấu trúc các thuật toán STL để thực thi trên GPU
  • Các vector thiết bị (device vectors) của Thrust và các chính sách thực thi
  • Các nguyên thủy toàn bộ thiết bị (device-wide primitives) của CUB cho các đường ống tùy chỉnh

Kiến trúc Bộ nhớ GPU và Quản lý

  • Loại bộ nhớ toàn cục, hằng số và văn bản
  • Thuộc và chuyển đổi bộ nhớ thiết bị một cách rõ ràng
  • Unified Memory để truy cập dữ liệu đơn giản hơn
  • Tối ưu hóa sự ghép kênh (coalescing) và mô hình truy cập bộ nhớ

Thực thi Bất đồng bộ với CUDA Streams

  • Tạo và quản lý CUDA streams
  • Trùng lặp quá trình thực thi kernel với việc truyền dữ liệu
  • CUDA events để quản lý phụ thuộc
  • Ưu tiên luồng và tinh chỉnh tính đồng thời

Viết các Kernel CUDA Tùy chỉnh

  • Mô hình lập trình SIMT và thực thi warp
  • Cấu hình khởi chạy kernel và vòng lặp lưới (grid-stride loops)
  • Lập chỉ mục thread và lưới đa chiều
  • Xử lý lỗi và kiểm tra API runtime của CUDA

Phân cấp Thread và Mô hình Thực thi

  • Lưới (grids), khối (blocks) và thread trong mã thiết bị
  • Các nguyên thủy cấp warp và các hoạt động bỏ phiếu (ballot)
  • Đồng bộ hóa cấp khối và các hàng rào (barriers)
  • Phân tích khả năng chiếm dụng và mức sử dụng tài nguyên

Cooperative Groups cho Tính Song song Linh hoạt

  • API cooperative_groups và các loại nhóm
  • Các khối tile (tiles) của thread block và tiled_partition
  • Khởi chạy hợp tác cấp lưới
  • Mô hình đồng bộ hóa đa lưới

Kỹ thuật Tối ưu hóa Bộ nhớ Chia sẻ

  • Các ngân hàng bộ nhớ chia sẻ và tránh xung đột ngân hàng (bank conflict)
  • Chiến lược tiling cho các phép toán ma trận
  • Bộ nhớ chia sẻ như bộ đệm do người dùng quản lý
  • cuda::shared_memory_mdspan cho các chế độ xem đa chiều

Kết hợp Kernel và Các Mẫu Song song Nâng cao

  • Kết hợp nhiều kernel để giảm chi phí khởi chạy
  • Thuật toán scan, reduce-by-key và theo từng phần (segmented)
  • Các hoạt động nguyên tử và cấu trúc dữ liệu không khóa (lock-free)
  • Các hoạt động nguyên tử nhóm warp để tăng thông lượng

Phân tích Hiệu năng và Tối ưu hóa với Nsight Systems

  • Phân tích dòng thời gian của hoạt động CPU và GPU
  • Xác định các nút thắt cổ chai trong truyền dữ liệu bộ nhớ
  • Phân tích hiệu suất và khả năng chiếm dụng kernel
  • Tối ưu hóa lặp lại với Nsight Compute

Các Đặc điểm C++ Hiện đại trong Mã Thiết bị CUDA

  • Lambdas, constexpr và auto trong kernels
  • Thuật toán song song C++17 và các chính sách thực thi
  • Các khái niệm (concepts) và phạm vi ranges của C++20 trên thiết bị
  • Hỗ trợ C++23 trong nvcc và CCCL 3.x

CUDA Graphs và Tính Bất đồng bộ Nâng cao

  • Xác định và khởi chạy CUDA graphs
  • Ghi đồ thị từ việc thực thi luồng (stream execution)
  • Cập nhật đồ thị và các nút thực thi điều kiện
  • Giảm độ trễ khởi chạy cho các tác vụ lặp lại

Mẫu Tích hợp cho Ứng dụng Hiện có

  • Đưa mã GPU vào sau các giao diện C++
  • Quản lý hệ thống đa GPU và NUMA
  • Tích hợp hệ thống build với CMake và CUDA
  • Gỡ lỗi mã thiết bị bằng cuda-gdb

Tổng kết và Các Thực tiễn Tốt nhất

  • Chọn giữa Thrust, CUB và các kernel tùy chỉnh
  • Khả năng di chuyển hiệu năng giữa các kiến trúc GPU khác nhau
  • Tổ chức mã code và RAII cho tài nguyên CUDA
  • Các bước tiếp theo và lộ trình học tập CUDA nâng cao

Yêu cầu

  • Kỹ năng C++ cơ bản bao gồm biểu thức lambda, templates và STL
  • Hiểu biết về các thuật toán tiêu chuẩn, containers (tập hợp) và iterators (trình duyệt)
  • Thành thạo với vòng lặp, điều kiện và hàm
  • Không yêu cầu kiến thức trước về CUDA hoặc lập trình GPU

Đối tượng tham gia

  • Các nhà phát triển C++ muốn tăng tốc các ứng dụng nặng tính toán bằng GPU
  • Kỹ sư phần mềm chuyển đổi từ lập trình song song đa dạng (heterogeneous) chỉ chạy trên CPU sang sử dụng GPU
  • Kỹ sư tối ưu hóa hiệu năng và nhà phát triển định lượng làm việc với tập dữ liệu lớn

Số người tham gia


Giá cho mỗi học viên

Đánh giá (3)

Các khóa học sắp tới

Các danh mục liên quan