Quay lại Khóa học
AI022 Professional

Hướng dẫn lập trình AMD HIP

Một tài liệu kỹ thuật toàn diện về Heterogeneous-compute Interface for Portability (HIP). Nó cung cấp API Runtime C++ và ngôn ngữ kernel cho phép các nhà phát triển tạo ứng dụng di động cho GPU AMD và NVIDIA từ một mã nguồn duy nhất. Hướng dẫn này bao gồm việc cài đặt, cấu hình môi trường, mô hình lập trình, phân bổ bộ nhớ và các công cụ chuyển đổi mã CUDA sang HIP.

4.9
12.0h
841 học viên
0 lượt thích
Trí tuệ nhân tạo
Bắt đầu học

Tổng quan khóa học

📚 Tóm tắt nội dung

Tài liệu hướng dẫn kỹ thuật toàn diện cho Heterogeneous-compute Interface for Portability (HIP). Tài liệu cung cấp API Runtime C++ và ngôn ngữ kernel giúp nhà phát triển tạo ứng dụng có thể di chuyển giữa các GPU của AMD và NVIDIA từ một mã nguồn duy nhất. Hướng dẫn bao gồm các chủ đề như cài đặt, cấu hình môi trường, mô hình lập trình, phân bổ bộ nhớ, và công cụ chuyển đổi mã CUDA sang HIP.

Thành thạo lập trình GPU đa nền tảng: Một mã nguồn cho cả hai nền tảng AMD và NVIDIA.

Tác giả: Advanced Micro Devices, Inc. (AMD)

Ghi nhận: AMD, biểu tượng mũi tên AMD, AMD Instinct, Radeon, ROCm và các tổ hợp tương ứng là nhãn hiệu của Advanced Micro Devices, Inc. Linux là nhãn hiệu đã đăng ký của Linus Torvalds. PCIe là nhãn hiệu đã đăng ký của PCI-SIG Corporation.

🎯 Mục tiêu học tập

  1. Định nghĩa các tính năng chính và lợi ích cốt lõi của khung HIP.
  2. Trình bày cách truy cập và truy vấn môi trường HIP bằng các công cụ hệ thống.
  3. Giải thích mối quan hệ kiến trúc giữa khả năng di chuyển của HIP và công nghệ biên dịch của nó.
  4. Thực hiện cài đặt theo từng nền tảng cụ thể cho cả môi trường NVIDIA và AMD.
  5. Điều phối quy trình xây dựng đa kho lưu trữ để biên dịch HIP từ mã nguồn.
  6. Xác minh việc cài đặt thành công bằng các công cụ cấu hình hệ thống và xác thực.
  7. Cấu hình và quản lý bộ nhớ GPU sử dụng phân bổ bộ nhớ HIP, kiểm soát tính nhất quán, và khả năng nhìn thấy bộ nhớ chủ không sao chép (zero-copy).
  8. Phát triển các kernel hiệu suất cao bằng các định danh hàm/biến đặc thù HIP, kiểu vector, và các công cụ đồng bộ hóa.
  9. Triển khai các thuật toán song song nâng cao sử dụng các chức năng như warp shuffle, vote, ballot, và nhóm hợp tác.
  10. Tự động hóa việc chuyển đổi mã CUDA sang HIP bằng công cụ HIPIFY và quản lý việc chuyển đổi dự án tại chỗ.

🔹 Bài học 1: Giới thiệu về tính di chuyển và kiến trúc HIP

Tổng quan: Bài học này đề cập đến những yếu tố nền tảng của Heterogeneous-compute Interface for Portability (HIP). Nó tập trung vào các tính năng cốt lõi định nghĩa HIP, các phương pháp chính để truy cập môi trường HIP, và công nghệ biên dịch nền tảng giúp khả năng di chuyển liền mạch giữa các kiến trúc GPU khác nhau (AMD và NVIDIA).

Kết quả học tập:

  • Định nghĩa các tính năng chính và lợi ích cốt lõi của khung HIP.
  • Trình bày cách truy cập và truy vấn môi trường HIP bằng các công cụ hệ thống.
  • Giải thích mối quan hệ kiến trúc giữa khả năng di chuyển của HIP và công nghệ biên dịch của nó.

🔹 Bài học 2: Cài đặt và xác minh môi trường HIP

Tổng quan: Bài học này cung cấp hướng dẫn kỹ thuật để thiết lập môi trường HIP (Heterogeneous-compute Interface for Portability) trên các nền tảng phần cứng khác nhau. Nó bao gồm các bước cài đặt cụ thể cho các nền tảng AMD và NVIDIA, quá trình phức tạp xây dựng runtime HIP từ các kho mã nguồn, và các thủ tục xác minh cuối cùng để đảm bảo hệ thống sẵn sàng cho phát triển GPU.

Kết quả học tập:

  • Thực hiện cài đặt theo từng nền tảng cụ thể cho cả môi trường NVIDIA và AMD.
  • Điều phối quy trình xây dựng đa kho lưu trữ để biên dịch HIP từ mã nguồn.
  • Xác minh việc cài đặt thành công bằng các công cụ cấu hình hệ thống và xác thực.

🔹 Bài học 3: Mô hình lập trình và khám phá sâu API của HIP

Tổng quan: Bài học này cung cấp một khám phá toàn diện về mô hình lập trình Heterogeneous-Compute Interface for Portability (HIP). Nó bao gồm API nền tảng cho quản lý bộ nhớ và thực thi kernel, các chi tiết tinh tế của ngôn ngữ kernel HIP (bao gồm các định danh và biến tích hợp), và các tính năng nâng cao như các công cụ mức warp, nhóm hợp tác, và các phép toán toán học chuyên biệt.

Kết quả học tập:

  • Cấu hình và quản lý bộ nhớ GPU bằng cách sử dụng phân bổ bộ nhớ HIP, kiểm soát tính nhất quán, và khả năng nhìn thấy bộ nhớ chủ không sao chép (zero-copy).
  • Phát triển các kernel hiệu suất cao bằng các định danh hàm/biến đặc thù HIP, kiểu vector, và các công cụ đồng bộ hóa.
  • Triển khai các thuật toán song song nâng cao sử dụng các chức năng như warp shuffle, vote, ballot, và nhóm hợp tác.

🔹 Bài học 4: Chuyển đổi và chuyển đổi ứng dụng CUDA sang HIP

Tổng quan: Bài học này đề cập đến quy trình hệ thống chuyển đổi mã nguồn CUDA sang khung HIP (Heterogeneous-Compute Interface for Portability). Nó chi tiết hóa việc sử dụng các công cụ tự động hóa như HIPIFY, chiến lược chuyển đổi dự án, nhận diện hành vi biên dịch riêng biệt theo nền tảng (HIP-Clang so với NVIDIA), và quản lý sự khác biệt kiến trúc.

Kết quả học tập:

  • Tự động hóa việc chuyển đổi mã CUDA sang HIP bằng công cụ HIPIFY và quản lý việc chuyển đổi dự án tại chỗ.
  • Phân biệt giữa các nền tảng mục tiêu AMD và NVIDIA cũng như các trình biên dịch bằng các macro tiền xử lý và truy vấn môi trường.
  • Triển khai kiểm tra tính năng kiến trúc (HIP_ARCH) và áp dụng các giải pháp khắc phục cho các hàm CUDA đặc biệt như memcpyToSymbol.