Giới thiệu về Lập trình ROCm và HIP: Một Bài Hướng Dẫn Thực Hành
Một hướng dẫn thực tế, hiện đại về lập trình GPU AMD với ROCm và HIP. Bao gồm toàn bộ stack phần mềm, cài đặt, quy trình xây dựng, lập trình kernel, quản lý bộ nhớ, kỹ thuật tối ưu hiệu suất, sử dụng thư viện, chuyển đổi từ CUDA và các phương pháp gỡ lỗi sản xuất.
Tổng quan khóa học
📚 Tóm tắt nội dung
Một hướng dẫn thực tế, hiện đại về lập trình GPU AMD với ROCm và HIP. Bao gồm toàn bộ stack phần mềm, cài đặt, quy trình xây dựng, lập trình kernel, quản lý bộ nhớ, kỹ thuật hiệu suất, sử dụng thư viện, chuyển đổi từ CUDA, và các thực hành gỡ lỗi sản xuất.
Thành thạo lập trình GPU AMD và khả năng chuyển đổi từ CUDA sang HIP qua bài phân tích chuyên sâu kỹ thuật này.
Tác giả: EvoClass
Ghi nhận: Tài liệu chính thức của AMD về ROCm và HIP, bao gồm các dự án như ROCm, HIP, và ROCm LLVM.
🎯 Mục tiêu học tập
- Định nghĩa HIP và vai trò của nó trong hệ sinh thái ROCm bằng một câu ngắn gọn, súc tích.
- Phân biệt giữa ROCm (nền tảng), HIP (giao diện), và các thư viện ROCm (các khối xây dựng).
- Xác định các lớp phân cấp kiến trúc ROCm từ phần cứng đến các khung ứng dụng.
- Định nghĩa mối quan hệ giữa SDK HIP và nền tảng ROCm trên các hệ điều hành khác nhau.
- Thực hiện quy trình cài đặt có hệ thống, bao gồm kiểm tra ma trận hỗ trợ và cấu hình đường dẫn sau khi cài đặt.
- Biên dịch và chạy chương trình xác minh tối thiểu để khắc phục các vấn đề phổ biến liên quan đến driver và truy cập môi trường.
- Hiểu tại sao chiến lược xây dựng mạnh mẽ là thiết yếu để cân bằng tính di động nguồn mã với hiệu suất đặc thù kiến trúc.
- Triển khai khởi tạo kernel có thể di chuyển bằng macro
hipLaunchKernelGGLnhư một lựa chọn thay thế cho cú pháp dấu ngoặc ba góc của CUDA. - Cấu hình các dự án CMake cấp độ sản xuất nhắm đến các kiến trúc ROCm cụ thể và quản lý các phụ thuộc thư viện bên ngoài.
- Xác định cấu tạo của một kernel HIP và áp dụng công thức thực thi cơ bản để chỉ định chỉ số luồng.
Bài học 共 10 课时 · 预计 30.0h
Bài học
Lesson
This lesson introduces the ROCm platform and the HIP programming model as a bridge for porting CUDA applications to AMD hardware. Students will learn how to use automated tools like hipify to migrate code while understanding the importance of architecture-aware tuning to achieve optimal performance.
This lesson covers the essential steps for installing and configuring the ROCm software stack, including dependency management, environment variable setup, and user permission requirements. Students will learn how to verify their system environment and ensure successful hardware-software communication through diagnostic tools and proper configuration.
This lesson explores the distinction between source portability and binary performance in the ROCm ecosystem, emphasizing that while HIP code is functionally portable, achieving peak throughput requires architecture-specific compilation. Students will learn to utilize the hipcc toolchain and CMake to manage build configurations that optimize code for specific hardware instruction sets.
This lesson introduces the HIP programming model, focusing on the transition from sequential CPU iteration to spatial GPU parallelism using the Parallel Pivot approach. Students will learn to map independent data tasks to thread grids, manage memory, and implement kernel execution with proper boundary checks and error handling.
AI024: Memory Management and Data Patterns (Lesson 5) explores the memory-centric nature of GPU performance, focusing on the Roofline Model and the critical importance of minimizing data movement between host and device. Students will learn to distinguish between memory-bound and compute-bound kernels while mastering strategies to optimize data residence and bandwidth utilization.
This lesson explores the transition from synchronous to asynchronous GPU execution, focusing on how to use HIP streams to decouple CPU and GPU tasks. Students will learn to optimize performance by implementing non-blocking memory transfers and kernel launches to maximize hardware utilization and eliminate execution bottlenecks.
This lesson introduces a systematic, data-driven approach to performance engineering on AMD GPUs, emphasizing the use of tools like rocprofv3 to identify bottlenecks rather than relying on intuition. Students will learn to follow a six-step scientific workflow to optimize memory access, instruction throughput, and hardware utilization while avoiding common performance "superstitions."
This lesson introduces the Library-First Engineering Principle, which emphasizes using optimized ROCm libraries like rocBLAS and rocFFT to reduce technical debt and ensure hardware portability. Students will learn to prioritize these vendor-tuned solutions over custom kernel development to achieve better performance and easier maintenance across evolving GPU architectures.
AI024: Porting CUDA Applications to HIP (Lesson 9) covers the systematic, incremental migration of CUDA code to the HIP platform using tools like HIPIFY-Clang and HIPIFY-Perl. Students will learn to distinguish between mechanical API translations and architectural optimizations, such as adjusting for warp-size differences, to ensure functional and performance parity on AMD ROCm hardware.
This lesson explores the GPU Developer’s Creed, which prioritizes functional correctness and architectural isolation over raw performance when working with ROCm and HIP. Students will learn to implement systematic debugging, testing, and CI/CD practices to ensure stable, reproducible, and accurate GPU kernel deployments.