大数跨境
0
0

ROCm 7.1 深度解析:从HIP内存到多GPU通信的关键进化

ROCm 7.1 深度解析:从HIP内存到多GPU通信的关键进化 AMD开发者中心
2025-11-21
2

今年早些时候,我们发布了ROCm 7.0 [1]。这一版本是一个重要里程碑:通过提供更高的性能、更丰富的数据类型支持(包括 FP4 与 FP6),以及与 PyTorch、TensorFlow、Triton 等框架的更深入集成,为 AI 与 HPC 基础设施带来了显著的性能提升。

在此基础上,ROCm 7.1 [2] 带来了多项有针对性的增强,重点是让平台 更快、更可靠,并且对开发者和系统集成商来说也更易用。本文介绍ROCm 7.1 如何在 AMD 生态中持续提升 GPU 性能、可扩展性和开发效率。本次版本更新通过更智能的 HIP 运行时(用于加速数据传输、优化统一内存与多 GPU 控制)、对新操作系统版本的扩展支持、在 AMD GPU 加速卡上启用灵活的 GPU 分区能力、增强 RCCL 通信库以提升多 GPU 训练吞吐,并升级分析与调试工具,为 AI 与 HPC 工作负载提供了更完善的支撑。

提升 HIP 运行时,实现更快、更智能的 GPU 性能

ROCm 7.1 扩展了 HIP,在内存与流(stream)控制方面进一步与 CUDA 对齐,同时加入运行时优化,以降低启动开销,加速多 GPU 工作流。

在内存方面,HIP 新增了 2D memset 变体,包括 hipMemsetD2D8/16/32 及其异步版本,并引入 hipMemcpyBatchAsync hipMemcpy3DBatchAsync,用于降低大规模张量和批量传输的配置开销。同时,新增3D 设备间拷贝接口 hipMemcpy3DPeer hipMemcpy3DPeerAsync,以优化设备到设备的数据流水线。

在托管(Managed)和统一内存方面,通过新的 hipMemPrefetchAsync_v2 hipMemAdvise_v2,应用可以根据实际访问模式发出预取和放置提示,使统一内存的性能表现更加可预测,有利于开发者调优。

在部署与编排方面,hipModuleLoadFatBinary hipModuleGetFunctionCount 等模块工具简化了fat binary 的加载与自省;新的流属性接口(hipStreamSetAttribute,以及hipStreamGetAttribute hipStreamGetId)则允许开发者调整同步策略、查询优先级和ID,以更好地调度并发的 GPU kernel 和内存拷贝,从而提升跨设备的数据传输吞吐量。

对于从CUDA 迁移而来的开发者,本次更新还扩展了 cooperative groups 功能——现在支持嵌套 tile 分区,使精细线程协作语义与 CUDA 更加一致。关于这些 API 的详细说明和使用指南,可在 HIP 文档中查阅:

  • Stream Management [3]

  • Module Management [4]

  • Managed / Unified Memory [5]

  • Cooperative Groups [6]


在底层实现上,HIP 通过降低模块加载延迟、加快 kernel 元数据获取速度,缩短了“首次 kernel 启动”时间;同时优化了 doorbell 路径,使其在图执行(graph launches)时能更高效地批量提交包,从而提升大量短生命周期 kernel 或图密集型工作负载的吞吐。

ROCm 7.1 发布说明 [2] 还记录了 stream capture 行为的修复(例如:使 legacy stream 的入队语义与 CUDA 对齐,解决跨 stream 捕获时的错误),有助于提升复杂图捕获 / 回放流程的可移植性。完整改动可参考 HIP Changelog [2] 。

使用 hipBLAS 与 hipBLASLt 加速矩阵计算

ROCm 7.1 对 hipBLAS hipBLASLt 库进行了重要更新,在提升AMD GPU 加速卡上精度覆盖和模型兼容性的同时,也改进了开发者的使用体验。


hipBLASLt 1.1.0:为训练与推理工作负载深度优化

hipBLASLt 1.1.0 带来了一系列面向下一代AMD GPU 训练与推理工作负载的性能和功能增强:

  • 新增融合尾处理(fused epilogue)路径——Clamp 和 Clamp + Bias,可在 GEMM 操作中直接完成激活与 bias 融合(HIPBLASLT_EPILOGUE_CLAMP_EXTHIPBLASLT_EPILOGUE_CLAMP_BIAS_EXT),减少额外kernel 调度开销,提升算子整体效率;

  • 支持在FP16 和 BF16 精度下捕获 ReLU 和 Clamp 激活的辅助输出(auxiliary outputs),便于在反向传播中复用激活掩码,对部分框架尤为重要。


在性能方面,hipBLASLt 针对 AMD GPU 集成了优化的 TF32 kernel,并为 AMD GPU 提供了更高效的 FP32 / FP16 / BF16 kernel,在训练和推理场景中都能带来可观的吞吐提升。

在大规模LLM 兼容性方面,本次更新包含对 Llama 2 70B 稳定性的修复,以及针对 AMD GPU的Mixtral-8x7B启发式调优。开发者可以通过hipBLASLt API Reference [9] 查看这些专项 kernel 路径。


hipBLAS 3.1.0:现代化构建与部署

hipBLAS 3.1.0 则在构建与部署方面进行了现代化升级:

  • 新增--clients-only 构建模式,使团队可以只编译客户端应用,直接链接预编译库,适合 CI/CD 环境;

  • 在这一模式下,hipBLAS 还为 Windows 引入了 Fortran 支持,扩展了 GPU 支持范围,并缩短了客户端构建时间。


这些改动使hipBLAS 的模块化构建方式与其他 ROCm 数学库保持一致,这一理念在 ROCm Core SDK 与 TheRock 构建系统博客 [10] 中有详细说明。

更多信息可在发布说明中查阅:

  • hipBLAS Changelog [2]

  • hipBLASLt Changelog [2]


扩展系统支持能力

ROCm 7.1 面向 AMD GPU 加速卡家族,拓展了系统和虚拟化支持,让开发者可以在更多样化的基础设施上部署 AI 与 HPC 工作负载。

本次版本新增并扩展了对以下发行版的官方支持:

  • Debian 13、Ubuntu 24.04.4 LTS、RHEL 10.1

  • SLES 15 SP7

  • Oracle Linux 9/10


这使得在企业级与开源环境中部署和维护ROCm 更加顺畅,尤其适合在现代数据中心中组合多种 Linux 发行版,却仍希望统一在同一 ROCm 软件栈下进行管理的场景。完整兼容矩阵可参考文档中的:

  • 支持的操作系统 [13]

  • 支持的GPU [14]


此外,ROCm 7.1 的 Kernel Fusion Driver(KFD)现已能够高效处理 NPS2 + CPX 分区模式,提升多插槽服务器及异构计算环境中的GPU 资源管理能力。

在支持GPU 分区能力的 AMD 数据中心 GPU 加速卡上,用户现在可以配置 2 或 8 个 GPU 分区,适用于裸机和虚拟化等多种部署场景。这种更细粒度的分区方式,可以在同一物理资源上并行运行 AI、HPC 或混合工作负载,减少相互干扰,在最大化 GPU 利用率的同时降低总体拥有成本(TCO)。

ROCm 7.1 还在部分 AMD 数据中心 GPU 加速卡上新增了对基于 RHEL 10.0 的 Guest OS 的 KVM SR-IOV 支持。该功能允许在虚拟机内安全地进行 GPU 直通和分区访问,适合多租户云环境以及 AI 研究集群。开发者可以在虚拟机或容器内,以接近原生的性能运行工作负载,并统一由 AMD GPU Virtualization Host Driver 管理。

关于虚拟化与GPU 分区的更多信息,可以参考:

  • 虚拟化更新 [2]

  • 虚拟化支持[16]


通过 RCCL 强化多 GPU 通信与性能

ROCm 7.1 对 AMD ROCm 通信集合库(RCCL)[17] 做了重要增强,旨在提升多 GPU 工作负载的性能与可扩展性。本次更新带来了更高吞吐、更低延迟,以及在多 GPU、多节点配置下更好的扩展表现。RCCL 2.27.7 新增了直接all-gather 以及一系列调优后的集合算法,用于降低小规模与中等规模传输下的启动延迟——这对大规模 AI 训练和梯度同步场景尤为关键。

通过对通道数(channel count)的更智能选择以及内联优化,多种关键集合操作(包括 AllReduce、AllGather、ReduceScatter)的延迟进一步降低;同时,动态通道负载均衡对于通过 XGMI 与 InfiniBand 互联的多 GPU 系统,可进一步提升整体效率。

为让开发者对通信行为有更多掌控,ROCm 7.1 新增了用于 P2P 批处理的环境变量:

  • RCCL_P2P_BATCH_ENABLE=1 —— 为小消息(最大 4 MB)开启 P2P 批处理;

  • RCCL_P2P_BATCH_THRESHOLD=<bytes> —— 设置参与批处理的消息大小上限。


启用这些选项后,在大规模场景下,AllToAll 与 AllToAllv 的性能会显著提升,尤其是在包含大量小集合操作的 Transformer 模型中。面向 AMD 某些数据中心级 GPU 加速卡进行了大量调优,使其在单节点以及最多 16 节点的多节点配置中都获得了可观的吞吐提升。更高带宽的 XGMI 链路以及驱动层调度改进,也带来了计算与通信阶段更顺畅的重叠,从而提升大规模集群上的端到端训练效率。

最后,RCCL 2.27.7 在 API 层保持与 NCCL 2.27.7 的兼容性,并集成了用于层次化归约的 Parallel Aggregated Tree(PAT)算法。因此,基于NCCL 构建的上层框架可以平滑地将 RCCL 作为后端使用。

在本次版本中,对称内存(symmetric memory)相关的 kernel 仍处于禁用状态,AMD 正在通过 HIP 运行时完善统一内存支持。用户可以通过 ROCm 发布说明中的相关章节 [2] 追踪进度。

更强大的性能分析与调试工具

ROCm 7.1 在 AMD GPU 的性能分析与调试生态上迈出重要一步,为运行时与框架层面的性能提供更深的可见性。这些提升涵盖:

  • ROCprofiler-SDK

  • ROCm Compute Profiler

  • ROCgdb

  • ROCm Systems Profiler


上述工具共同构成一套统一的工具链,用于kernel 级分析、AI 工作负载跟踪以及跨进程性能关联。开发者现在可以在不重启应用的情况下,将分析器附加到正在运行的工作负载上。ROCm Compute Profiler 3.3.0 [2] 与 ROCprofiler-SDK 1.0.0 [2] 均支持按进程 ID(PID)进行动态附加。这一能力对于长时间运行或容器化的 AI 工作负载尤为关键,使得开发者可以在不中断执行的前提下进行实时性能采样和跟踪捕获。

Compute Profiler 新增了单次遍历(single-pass)计数器采集机制,在获取复杂指标组合时减少额外开销。用户可以通过 --set --list-sets 选项,使用预定义的指标集合,在一次运行中完成kernel 级分析。同时,新引入的 TUI(文本界面)提供了交互式指标说明、计算与内存吞吐的高层总览面板以及实时roofline 可视化。

分析结果会以全新的ROCm Profiling Datarocpd 格式存储(基于SQLite3 的数据库),便于在 ROCprof Compute Viewer 中进行高级后处理和可视化。详细说明见:ROCm Profiling Data(rocpd)输出 [21]。

ROCprofiler-SDK 引入了实验性的 Streaming Performance Monitor(SPM)支持,并强化了程序计数器(PC)采样能力,在事件级别上提供更精细的延迟诊断。对于面向 AMD 最新架构的开发者,本次更新添加了基于 host trap 的 PC 采样,以及 MultiKernelDispatch 线程跟踪支持,便于分析在多个着色引擎上的并发调度行为。线程跟踪数据中还新增了实时钟(RTC)对齐信息,以便更精确地关联 CPU 与 GPU 时间线。

ROCgdb [22] 的代码覆盖率现已达到约 80%,在 HIP kernel 的断点处理和调用栈分析上更加稳健,同时保持与现代 ROCm 运行时的兼容。

ROCm Systems Profiler [23](前身为 Omnitrace)现已完成对 JAX 和 PyTorch 框架的验证,默认使用 AMD SMI 进行遥测,并直接与 rocpd 集成,用于生成多进程汇总数据,非常适合对大规模分布式训练任务进行整体性能分析。

利用 AMD SMI 功率封顶优化能效

AMD SMI 中的 “Set Power Cap” 改进,在虚拟化环境下对支持该特性的 AMD 数据中心 GPU 的功耗管理提供了更细粒度的控制。在本次更新后,当相关 GPU 处于 1VF(单虚拟功能)配置时,虚拟机(VM)可以直接为该 GPU 设置功率上限。系统会自动取 Host、VM 和 APML(Advanced Platform Management Link)三者设置中的 最低值 作为实际功率上限,确保设备在安全范围内运行。这让用户能够根据不同工作负载的特性,在性能、散热和能效之间进行更灵活的权衡与调优。

总结

随着ROCm 7.1 [2] 的发布,ROCm 正在持续发展为一个成熟、可用于生产环境的 AI 与 HPC 软件生态。每一次版本更新,都在强化 ROCm 软件栈,为开发者提供更完备的工具和更强的性能,以便更高效地部署下一代工作负载。

欢迎开发者体验ROCm 7.1,加入不断壮大的开放 AI/HPC 社区,在开放平台上共同拓展 AI 的边界。

更多信息,欢迎访问amd.com/ROCm [24],了解更多内容,并参与 ROCm 相关 AI/HPC 开源社区的建设。

免责声明

第三方内容由对应第三方直接授予用户使用许可,并非由AMD 将其授权给用户。所有链接的第三方内容均以“按现状(AS IS)”方式提供,不附带任何形式的担保。用户对该等第三方内容的使用完全出于其自主决定,在任何情况下,AMD 对第三方内容不承担任何责任。用户自行承担使用第三方内容的全部风险,并对因此产生的任何损害后果独立负责。

参考链接

[1] ROCm 7.0:https://rocm.docs.amd.com/en/docs-7.0.0/about/release-notes.html

[2] ROCm 7.1.0 release notes:https://www.amd.com/en.html

[3] Stream Management:https://rocm.docs.amd.com/projects/HIP/en/develop/reference/hip_runtime_api/modules/stream_management.html

[4] Module Management:https://rocm.docs.amd.com/projects/HIP/en/develop/reference/hip_runtime_api/modules/module_management.html#module-management-reference

[5] Managed / Unified Memory:https://rocm.docs.amd.com/projects/HIP/en/develop/reference/hip_runtime_api/modules/memory_management/unified_memory_reference.html#unified-memory-reference

[6] Cooperative Groups:https://rocm.docs.amd.com/projects/HIP/en/develop/reference/hip_runtime_api/modules/cooperative_groups_reference.html#cooperative-groups-reference

[7] ROCm 7.1 发布说明:https://rocm.docs.amd.com/en/docs-7.1.0/about/release-notes.html#id4

[8] HIP Changelog:https://rocm.docs.amd.com/en/docs-7.1.0/about/release-notes.html#hip-7-1-0

[9] hipBLASLt API Reference:https://rocm.docs.amd.com/projects/hipBLASLt/en/latest/

[10] ROCm Core SDK 与 TheRock 构建系统博客:https://rocm.blogs.amd.com/software-tools-optimization/therock/README.html

[11] hipBLAS Changelog:https://rocm.docs.amd.com/en/docs-7.1.0/about/release-notes.html#hipblas-3-1-0

[12] hipBLASLt Changelog:https://rocm.docs.amd.com/en/docs-7.1.0/about/release-notes.html#hipblaslt-1-1-0

[13] 支持的操作系统:https://rocm.docs.amd.com/projects/install-on-linux/en/docs-7.1.0/reference/system-requirements.html#supported-operating-systems

[14] 支持的GPU:https://rocm.docs.amd.com/projects/install-on-linux/en/docs-7.1.0/reference/system-requirements.html#supported-gpus

[16] 虚拟化支持:https://rocm.docs.amd.com/projects/install-on-linux/en/docs-7.1.0/reference/system-requirements.html#virtualization-support

[17] AMD ROCm 通信集合库(RCCL):https://github.com/ROCm/rccl

[21] ROCm Profiling Data(rocpd)输出:https://rocm.docs.amd.com/projects/rocprofiler-systems/en/docs-7.1.0/how-to/understanding-rocprof-sys-output.html#rocm-profiling-data-rocpd-output

[22] ROCgdb:https://rocm.docs.amd.com/projects/ROCgdb/en/docs-7.1.0/index.html

[23] ROCm Systems Profiler:https://rocm.docs.amd.com/projects/rocprofiler-systems/en/latest/index.html

[24] amd.com/ROCm:https://www.amd.com/en/products/software/rocm.html

[25] 原文Continuing the Momentum: Refining ROCm For The Next Wave Of AI and HPC:https://www.amd.com/en/developer/resources/technical-articles.html#sortCriteria=@amd_release_date%20descending&f-amd_blog_hardware_platforms=Instinct%20GPUs,Radeon%20Graphics&f-amd_blog_development_tools=ROCm%20Software

【声明】内容源于网络
0
0
AMD开发者中心
AMD开发者中心为开发者提供工具、技术和资源,助力构建AI解决方案。ROCm、Ryzen AI软件和ZenDNN,帮助您实现模型加速与部署。开发者可通过文档、SDK及教程快速上手。立即关注AMD开发者中心,开启智能未来!
内容 65
粉丝 0
AMD开发者中心 AMD开发者中心为开发者提供工具、技术和资源,助力构建AI解决方案。ROCm、Ryzen AI软件和ZenDNN,帮助您实现模型加速与部署。开发者可通过文档、SDK及教程快速上手。立即关注AMD开发者中心,开启智能未来!
总阅读66
粉丝0
内容65