返回课程
AI022 Professional

AMD HIP 编程指南

一份关于异构计算接口可移植性(HIP)的综合性技术手册。它提供了 C++ 运行时 API 和内核语言,使开发者能够从单一源代码创建可在 AMD 和 NVIDIA GPU 上运行的可移植应用程序。本指南涵盖安装、环境配置、编程模型、内存分配以及将 CUDA 代码迁移至 HIP 的工具。

4.9
12.0h
841 名学生
0 点赞
人工智能
开始学习

课程概述

📚 内容概要

一份关于异构计算可移植性接口(HIP)的综合性技术手册。它提供了一套 C++ 运行时 API 和内核语言,使开发者能够仅通过单一源代码,创建适用于 AMD 与 NVIDIA GPU 的可移植应用程序。本指南涵盖安装、环境配置、编程模型、内存分配以及将 CUDA 代码迁移至 HIP 的工具。

掌握可移植的 GPU 编程:一套源码,适配 AMD 与 NVIDIA 平台。

作者: 超威半导体公司(AMD)

致谢: AMD、AMD Arrow 标志、AMD Instinct、Radeon、ROCm 及其组合均为超威半导体公司(AMD)的商标。Linux 是林纳斯·托瓦兹的注册商标。PCIe 是 PCI-SIG 公司的注册商标。

🎯 学习目标

  1. 定义 HIP 框架的主要特性及其价值主张。
  2. 展示如何使用系统工具访问和查询 HIP 环境。
  3. 解释 HIP 可移植性与其编译器技术之间的架构关系。
  4. 执行针对 NVIDIA 与 AMD 环境的平台特定安装。
  5. 协调多仓库构建流程,从源码编译 HIP。
  6. 使用系统配置和验证工具确认安装成功。
  7. 配置和管理 GPU 内存,包括 HIP 内存分配、一致性控制以及零拷贝主机内存可见性。
  8. 使用 HIP 特有的函数/变量限定符、向量类型和同步原语开发高性能内核。
  9. 利用线程束洗牌、投票、投票位图和协作组功能实现高级并行算法。
  10. 使用 HIPIFY 工具自动化将 CUDA 代码转换为 HIP,并管理就地项目转换。

🔹 第 1 课:HIP 可移植性与架构简介

概述: 本课程介绍异构计算可移植性接口(HIP)的基础知识。重点讲解定义 HIP 的核心特性、访问 HIP 环境的主要方法,以及支持跨不同 GPU 架构(AMD 与 NVIDIA)无缝可移植性的底层编译器技术。

学习成果:

  • 定义 HIP 框架的主要特性及其价值主张。
  • 展示如何使用系统工具访问和查询 HIP 环境。
  • 解释 HIP 可移植性与其编译器技术之间的架构关系。

🔹 第 2 课:安装与验证 HIP 环境

概述: 本课程提供在不同硬件平台上设置 HIP(异构计算可移植性接口)环境的技术指南。涵盖 AMD 与 NVIDIA 后端的具体安装步骤、从源代码仓库构建 HIP 运行时的复杂过程,以及最终的验证程序,以确保系统已准备好进行 GPU 开发。

学习成果:

  • 执行针对 NVIDIA 与 AMD 环境的平台特定安装。
  • 协调多仓库构建流程,从源码编译 HIP。
  • 使用系统配置和验证工具确认安装成功。

🔹 第 3 课:HIP 编程模型与 API 深入解析

概述: 本课程全面探讨异构计算可移植性接口(HIP)的编程模型。内容包括内存管理与内核执行的基础 API,HIP 内核语言的细节(包括限定符与内置变量),以及高级功能如线程束级原语、协作组和专用数学内建函数。

学习成果:

  • 使用 HIP 内存分配、一致性控制和零拷贝主机内存可见性来配置和管理 GPU 内存。
  • 使用 HIP 特有的函数/变量限定符、向量类型和同步原语开发高性能内核。
  • 利用线程束洗牌、投票、投票位图和协作组功能实现高级并行算法。

🔹 第 4 课:将 CUDA 应用迁移至 HIP

概述: 本课程介绍将 CUDA 源代码系统性迁移至 HIP(异构计算可移植性接口)框架的过程。详细说明使用自动化工具(如 HIPIFY)的方法、项目转换策略、识别平台特定编译器行为(HIP-Clang 与 NVIDIA 区别),以及处理架构差异。

学习成果:

  • 使用 HIPIFY 工具自动化将 CUDA 代码转换为 HIP,并管理就地项目转换。
  • 通过预处理器宏和环境查询区分 AMD 与 NVIDIA 目标平台及编译器。
  • 实现架构特性检查(HIP_ARCH),并对特殊 CUDA 函数(如 memcpyToSymbol)应用变通方案。