AMD HIP 프로그래밍 가이드
Heterogeneous-compute Interface for Portability(HIP)를 위한 포괄적인 기술 매뉴얼입니다. 이 매뉴얼은 개발자가 단일 소스 코드에서 AMD 및 NVIDIA GPU용 포터블 애플리케이션을 개발할 수 있도록 하는 C++ 런타임 API와 커널 언어를 제공합니다. 가이드에서는 설치, 환경 설정, 프로그래밍 모델, 메모리 할당 및 CUDA 코드를 HIP로 마이그레이션하는 데 필요한 도구에 대해 다룹니다.
수업
Lesson
강좌 개요
📚 콘텐츠 요약
다양한 컴퓨팅 인터페이스를 위한 포터블성(hip)에 대한 종합적인 기술 매뉴얼입니다. 이 매뉴얼은 단일 소스 코드에서 AMD 및 NVIDIA GPU용 포터블 애플리케이션을 개발할 수 있도록 해주는 C++ 런타임 API와 커널 언어를 제공합니다. 가이드는 설치, 환경 구성, 프로그래밍 모델, 메모리 할당, 그리고 CUDA 코드를 HIP로 이식하기 위한 도구를 다룹니다.
포터블 GPU 프로그래밍 마스터: 하나의 소스로 AMD와 NVIDIA 플랫폼 모두 지원.
저자: Advanced Micro Devices, Inc. (AMD)
감사의 말씀: AMD, AMD Arrow 로고, AMD Instinct, Radeon, ROCm 및 이들의 조합은 Advanced Micro Devices, Inc.의 상표입니다. Linux는 Linus Torvalds의 등록 상표입니다. PCIe는 PCI-SIG Corporation의 등록 상표입니다.
🎯 학습 목표
- HIP 프레임워크의 주요 기능과 가치 제안을 정의한다.
- 시스템 도구를 사용하여 HIP 환경에 접근하고 쿼리하는 방법을 보여준다.
- HIP 포터블성과 컴파일러 기술 간의 아키텍처적 관계를 설명한다.
- NVIDIA 및 AMD 환경에 맞는 플랫폼별 설치를 수행한다.
- 여러 저장소를 통합하여 HIP 소스 코드에서 빌드하는 과정을 조율한다.
- 시스템 구성 및 검증 도구를 활용하여 성공적인 설치 여부를 확인한다.
- HIP 할당, 일관성 제어, 제로-코피 호스트 메모리 가시성 등을 통해 GPU 메모리를 구성하고 관리한다.
- HIP 전용 함수/변수 퀄리파이어, 벡터 타입, 동기화 원시 기능을 사용해 고성능 커널을 개발한다.
- 워프 샤프르, 보이트, 볼랏, 협업 그룹 기능을 활용한 고급 병렬 알고리즘을 구현한다.
- HIPIFY 도구를 사용하여 CUDA 코드를 자동으로 변환하고, 프로젝트 내부에서의 변환을 관리한다.
🔹 수업 1: HIP 포터블성과 아키텍처 소개
개요: 본 수업에서는 이종 컴퓨팅 인터페이스 포터블성(HIP)의 기초 개념을 다룹니다. 핵심 기능을 정의하는 요소들, HIP 환경에 접근하는 주요 방법, 그리고 다양한 GPU 아키텍처(AMD 및 NVIDIA) 간의 원활한 포터블성을 가능하게 하는 기반 컴파일러 기술에 대해 설명합니다.
학습 결과:
- HIP 프레임워크의 주요 기능과 가치 제안을 정의한다.
- 시스템 도구를 사용하여 HIP 환경에 접근하고 쿼리하는 방법을 보여준다.
- HIP 포터블성과 컴파일러 기술 간의 아키텍처적 관계를 설명한다.
🔹 수업 2: HIP 환경 설치 및 검증
개요: 본 수업은 다양한 하드웨어 플랫폼에서 HIP(Heterogeneous-compute Interface for Portability) 환경을 설정하는 기술적 안내서입니다. AMD 및 NVIDIA 백엔드에 대한 구체적인 설치 절차, HIP 런타임을 소스 저장소에서 빌드하는 복잡한 과정, 그리고 GPU 개발을 위한 시스템 준비 상태를 확인하기 위한 최종 검증 절차를 다룹니다.
학습 결과:
- NVIDIA 및 AMD 환경에 맞는 플랫폼별 설치를 수행한다.
- 여러 저장소를 통합하여 HIP 소스 코드에서 빌드하는 과정을 조율한다.
- 시스템 구성 및 검증 도구를 활용하여 성공적인 설치 여부를 확인한다.
🔹 수업 3: HIP 프로그래밍 모델 및 API 심층 분석
개요: 본 수업은 이종 컴퓨팅 인터페이스 포터블성(HIP) 프로그래밍 모델에 대한 종합적인 탐색을 제공합니다. 메모리 관리 및 커널 실행을 위한 기초 API, HIP 커널 언어의 세부 사항(퀄리파이어 및 내장 변수 포함), 워프 레벨 원시 기능, 협업 그룹, 특수 수학 인트린식 등의 고급 기능을 다룹니다.
학습 결과:
- HIP 할당, 일관성 제어, 제로-코피 호스트 메모리 가시성 등을 사용하여 GPU 메모리를 구성하고 관리한다.
- HIP 전용 함수/변수 퀄리파이어, 벡터 타입, 동기화 원시 기능을 사용해 고성능 커널을 개발한다.
- 워프 샤프르, 보이트, 볼랏, 협업 그룹 기능을 활용한 고급 병렬 알고리즘을 구현한다.
🔹 수업 4: CUDA 애플리케이션에서 HIP으로 전환 및 마이그레이션
개요: 본 수업은 CUDA 소스 코드를 이종 컴퓨팅 인터페이스 포터블성(HIP) 프레임워크로 시스템적으로 마이그레이션하는 과정을 다룹니다. 자동화 도구인 HIPIFY의 사용법, 프로젝트 변환 전략, 플랫폼별 컴파일러 행동 차이(예: HIP-Clang 대 비디오 카드) 파악, 아키텍처 차이 관리 방법을 설명합니다.
학습 결과:
- HIPIFY 도구를 사용하여 CUDA 코드를 자동으로 변환하고, 프로젝트 내부에서의 변환을 관리한다.
- 전처리기 매크로 및 환경 쿼리를 활용하여 AMD 및 NVIDIA 대상 플랫폼과 컴파일러를 구분한다.
- 아키텍처 기능 체크(HIP_ARCH)를 구현하고,
memcpyToSymbol같은 특수한 CUDA 함수에 대한 대응 방안을 적용한다.