Liên hệ với chúng tôi

Đề 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
 8 Giờ

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