恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
ROCm 系统优化指南:基于 legacy-rocm-build 的 AMD Instinct、Radeon 与通用系统调优实践
首页
资讯中心
/
ROCm 系统优化指南:基于 legacy-rocm-build 的 AMD Instinct、Radeon 与通用系统调优实践
ROCm 系统优化指南:基于 legacy-rocm-build 的 AMD Instinct、Radeon 与通用系统调优实践
发布时间:2026/9/17 22:05:27
ROCm 系统优化指南基于 legacy-rocm-build 的 AMD Instinct、Radeon 与通用系统调优实践【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build本指南系统讲解 AMD GPU 平台面向 HPC 与工作站负载的整机级设置与调优建议内容按硬件架构组织AMD InstinctCDNA、AMD Radeon/RyzenRDNA以及跨硬件通用的系统设置。读完本文你将掌握基于环境变量、容器与虚拟化的 GPU 隔离方法理解 BAR 物理寻址限制与 P2P 配置要点能够完成 RDNA3.5 APU 的共享内存GART/GTT/TTM调优并可在 RDNA2 平台上搭建 SR-IOV 虚拟化环境。指南总览按硬件划分的优化路径本仓库中该指南的入口文档位于 docs/reference/system-optimization/index.rst它将全部优化内容划分为三大板块板块覆盖硬件仓库内对应文档AMD Instinct™MI355X / MI350X / MI325X / MI300X / MI300A / MI250 / MI250X / MI210 / MI100cdna.rst内容经远程引入聚合AMD Radeon™ 与 Ryzen™RDNA3.5gfx1150/1151/1152、RDNA2Radeon PRO V620 / W6800rdna3-5.rst、rdna2.md通用系统设置任意 AMD GPU 平台gpu-isolation.md、bar-access-limits.rst此外rdna.rst 与 common.rst 分别作为 Radeon/Ryzen 与通用设置的子索引归纳各自下辖主题。以下按这三个板块逐层展开。AMD InstinctCDNA系统优化Instinct 板块的优化指南以远程内容remote-content的方式聚合自 ROCm 的 amdgpu-docs 项目详见 cdna.rst 中的.. remote-content::指令覆盖每一代 Instinct 数据中心 GPU包括 MI355X、MI350X、MI325X、MI300X、MI300A、MI250/MI250X、MI210 与 MI100。这些 GPU 属于 CDNA 架构采用独立的 HBM 显存池与专用计算单元系统优化重心通常是 PCIe P2P 访问、多卡拓扑与显存 BAR 配置后者正是下文通用系统设置中 BAR 一节的核心场景。若需深入了解各代 Instinct 的硬件架构细节可直接阅读本仓库 docs/reference/gpu-arch 目录下的对应文档mi350.rstMI350 系列与 mi350-performance-counters.rstmi300.mdMI300 系列与 mi300-mi200-performance-counters.rstmi250.mdMI200 系列与 mi100.mdMI100。AMD Radeon 与 RyzenRDNA系统优化RDNA3.5Ryzen APU 的共享内存调优gfx1150 / gfx1151 / gfx1152RDNA3.5 架构的 AMD Ryzen APU 将高性能 CPU 核心与集成显卡结合支持 LPDDR5X-8000 或 DDR5 内存特别适合 LLM 开发与推理系统、高性能工作站、承载多个 VM 的虚拟化宿主、GPU 计算与并行处理、游戏系统以及家庭服务器 / AI 开发平台。本节内容源于 rdna3-5.rst。GPUVM 内存模型GART 与 GTT 的本质RDNA3.5 APULLVM 目标为 gfx1150、gfx1151、gfx1152通过 GPU Virtual MemoryGPUVM处理内存访问为每个进程提供独立的 GPU 虚拟地址空间VMID而非一块独立的显存池。因此这类 APU 上的内存是映射而非物理划分的。Graphics Address Remapping TableGART与 Graphics Translation TableGTT描述的是系统内存可以被映射进 GPU 地址空间的上限、以及由谁使用而不是两种不同类型的物理内存GART定义可被映射进内核驱动所用 GPU 虚拟地址空间的平台地址空间系统 RAM 或 MMIO大小。在 CPU 与 GPU 物理共享内存的系统中这部分映射内存实际充当 GPU 的显存。GART 通常保持较小以限制 GPU 页表规模主要用于驱动内部操作。GTT定义可被映射进用户进程 GPU 虚拟地址空间的系统 RAM 大小即 PyTorch 等 AI/计算负载使用的内存池。GTT 分配是动态的、不永久保留GPU 不使用时操作系统可以回收。默认 GTT 上限约为系统总内存的 50%。术语说明在物理共享内存的平台上固件菜单、文档与社区讨论中经常混用 VRAM、Carve-out、GART、Dedicated GPU memory、Firmware-reserved GPU memory 等词。本文沿用原文约定统一以 VRAM 指代这部分共享内存。调整 GPU 可用内存的方式可以通过两种方式调整 GPU 可用的内存量在 BIOS 中增大 VRAMUMA Frame Buffer预留将配置的GTT 上限调小到小于预留量。若 GTT 上限大于 VRAMAMD GPU 驱动会采用 GTT 背书的分配方式GTT-backed allocations执行显存分配对应内核提交 759e764。由于内存物理共享这里不存在独立显卡那种专用显存远快于系统内存的性能差异固件虽然也可以预留一部分内存仅供 GPU 专用但对大多数负载收益甚微反而会永久性地减少可用系统内存。因此AI 框架在统一内存架构下配合 GTT-backed 分配工作更高效——GTT 支持大规模、灵活的映射而不必永久预留内存整体系统利用率更高。在 Linux 上配置共享内存上限TTM pages_limit可通过修改内核Translation Table ManagerTTM页上限来增大共享 GPU 可访问内存的最大值。该设置控制可映射供 GPU 使用的系统内存页数暴露在/sys/module/ttm/parameters/pages_limit注意该值的单位是页pages而非字节或 GB。官方建议将 BIOS 中的专用 VRAM 预留保持较小例如 0.5 GB转而增大共享TTM/GTT上限。仓库提供了一套辅助工具amd-ttm简化配置其完整操作流程如下安装pipxsudo apt install pipx pipx ensurepath安装 AMD 调试工具集pipx install amd-debug-tools查询当前共享内存配置amd-ttm设置可用共享内存单位为 GBamd-ttm --set NUM重启使更改生效。amd-ttm会自动完成页数与 GB 之间的换算。以下为文档中的完整示例输出。查看当前设置amd-ttm Current TTM pages limit: 16469033 pages (62.82 GB) Total system memory: 125.65 GB修改可用共享内存❯ amd-ttm --set 100 Successfully set TTM pages limit to 26214400 pages (100.00 GB) Configuration written to /etc/modprobe.d/ttm.conf ○ NOTE: You need to reboot for changes to take effect. Would you like to reboot the system now? (y/n): y恢复内核默认值❯ amd-ttm --clear Configuration /etc/modprobe.d/ttm.conf removed Would you like to reboot the system now? (y/n): y操作系统支持与必需内核版本ROCm 整体操作系统要求可参见仓库的 os-support-table.md 与 core-sdk-components-linux.rst。而 AMD Ryzen AI Max 系列 APUgfx1151有额外的内核版本要求其支持依赖于修正 AMD KFD 驱动内部限制的内核补丁这些补丁更新了队列创建与内存可用性检查的限额缺少它们时GPU 计算负载可能无法初始化或表现出不可预测的行为。所需内核提交为7f26af7与7445db6对应的最低内核版本为Ubuntu 24.04 Hardware EnablementHWE6.17.0-19.19~24.04.2或更高Ubuntu 24.04 Original Equipment ManufacturerOEM6.14.0-1018或更高其他发行版Linux 内核6.18.4或更高。下表仅反映 AMD 官方发布的预构建 ROCm 二进制的兼容性发行版自带原生 ROCm 打包时支持级别可能不同图例为 ❌ 不支持组合、⚠️ 不稳定/实验性组合、✅ 稳定且受支持组合ROCm 版本Ubuntu 24.04 HWE 6.17.0-19.19~24.04.2、Ubuntu 24.04 OEM 6.14.0-1018或 Ubuntu 26.04 Generic其他发行版 6.18.4其他发行版 6.18.47.11.0 或 7.12.0✅✅⚠️7.9.0 或 7.10.0❌❌⚠️7.2.1、7.2.2 或 7.2.3✅✅⚠️7.2.0✅✅❌7.1.x❌❌⚠️6.4.x❌❌⚠️需要注意早于6.17.0-19.19~24.04.2的 Ubuntu 24.04 HWE 内核与早于6.14.0-1018的 Ubuntu 24.04 OEM 内核均不受 RDNA3.5 APU 支持。另外以下发行版已在原生打包中包含所需修复与 AMD 预构建二进制无关Fedora 43、Ubuntu 26.04、Arch Linux 2026.02.01。RDNA2工作站负载与 SR-IOV 虚拟化RDNA2 部分rdna2.md针对 Radeon PRO 系列 GPU覆盖将其用于 Single Root I/O VirtualizationSR-IOV与机器学习任务所需的软件要求与流程。工作站负载与 HPC 类似有图形与计算混合、认证、稳定性等独特要求。需要特别注意的是SR-IOV 在 V620 上受支持在 W6800 上不受支持。BIOS 设置开启虚拟化基础能力要在 V620 上启用 ROCm 虚拟化需先在 BIOS 中配置 SR-IOV 及相关特性。下表为文档给出的推荐设置SBIOS 需更新到 1.2a 版本菜单路径选项值说明Advanced / North Bridge ConfigurationIOMMUEnabledInput-output Memory Management UnitAdvanced / North Bridge ConfigurationACS EnableEnabledAccess Control ServiceAdvanced / PCIe/PCI/PnP ConfigurationSR-IOV SupportEnabledSingle Root I/O VirtualizationAdvanced / ACPI settingsPCI AER SupportEnabledAdvanced Error Reporting操作系统设置一套已验证的参考配置文档给出了一套经测试的主机/客户机配置组合项目值服务器SMC 4124 [AS-4124GS-TNR]宿主机 OSUbuntu 20.04.3 LTS宿主机内核5.4.0-97-genericCPUAMD EPYC 7552 48-Core ProcessorGPURDNA2 V620D603GLXESBIOSVersion SMC_r_1.2aVBIOS113-D603GLXE-077客户机 OS 1Ubuntu 20.04.5 LTS客户机 OS 2RHEL 9.0GIM 驱动gim-dkms_1.0.0.1234577_allVM CPU 核数32VM 内存64 GB宿主机部署步骤安装 KVM 虚拟化软件包sudo apt-get -y install qemu-kvm qemu-utils bridge-utils virt-manager gir1.2-spiceclientgtk* gir1.2-spice-client-gtk* libvirt-daemon-system dnsmasq-base sudo virsh net-start default在 GRUB 配置/etc/default/grub中启用 IOMMUAMD CPU 平台GRUB_CMDLINE_LINUX_DEFAULTquiet splash更新 GRUB 并重启sudo update-grub sudo reboot随后安装 GPU-IOV 模块GIMIOV 即 I/O Virtualization驱动并加载创建虚拟功能VFsudo dpkg -i gim_driver sudo reboot # Load Host Driver to Create 1VF sudo modprobe gim vf_num1 # Note: 若 GIM 驱动加载成功可在 dmesg 中看到 gim info:(gim_init:213) *****Running GIM***** lspci -d 1002:lspci应输出类似如下结果其中03:02.0即为创建的 VF01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Device 1478 02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Device 1479 03:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 73a1 03:02.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 73ae → VF客户机安装将 VF 直通给虚拟机将 GPU 虚拟功能VF分配给 VM 的步骤如下停止 VM运行virt-manager在Virtual Machine Manager界面中选择目标 VM 并点击Open进入虚拟机管理主窗口见下图;在 VM 界面中进入Show Virtual Hardware Details Add Hardware配置硬件在Add Hardware PCI Host Device中选择对应的 VF 并点击Finish。随后启动 VM并参照 Linux 安装指南 在客户机内安装 ROCm 即可。通用系统设置GPU 隔离技术GPU 隔离gpu-isolation.md用于限制应用对部分 GPU 的访问把 GPU 资源从程序中隐藏起来。默认情况下程序只会使用暴露的 GPU忽略系统中其余隐藏的GPU。ROCm 软件栈提供多种隔离方式它们在适用范围与安全性上各有不同。基于环境变量的隔离ROCm 软件栈的各运行时通过读取下列环境变量来选择向应用暴露的设备完整的变量参考见 环境变量索引。需要强调的是环境变量不应用来隔离不受信任的应用——应用可以在初始化运行时之前重置这些变量。ROCR_VISIBLE_DEVICES暴露给应用的设备索引或 UUID 列表。运行时ROCm Software Runtime适用于所有使用用户态 ROCm 软件栈的应用。# 示例暴露第 1 个设备以及一个按 UUID 指定的设备 export ROCR_VISIBLE_DEVICES0,GPU-4b2c1a9f-8d3e-6f7a-b5c9-2e4d8a1f6c3bGPU_DEVICE_ORDINAL暴露给 OpenCL 与 HIP 应用的设备索引。运行时ROCm Compute Language RuntimeROCclr适用于使用ROCclr抽象层的应用与运行时包括 HIP 与 OpenCL 应用。# 示例暴露系统中的第 1 个和第 3 个设备 export GPU_DEVICE_ORDINAL0,2HIP_VISIBLE_DEVICES暴露给 HIP 应用的设备索引。运行时HIP runtime仅适用于在 AMD 平台上使用 HIP 的应用。# 示例暴露系统中的第 1 个和第 3 个设备 export HIP_VISIBLE_DEVICES0,2CUDA_VISIBLE_DEVICES为 CUDA 兼容性提供在 AMD 平台上与HIP_VISIBLE_DEVICES效果相同。运行时HIP 或 CUDA Runtime适用于 AMD/NVIDIA 平台上的 HIP 应用以及 CUDA 应用。OMP_DEFAULT_DEVICEOpenMP target offloading 使用的默认设备。运行时OpenMP Runtime仅适用于使用 OpenMP offloading 的应用。# 示例将默认设备设置为第三个设备 export OMP_DEFAULT_DEVICE2基于 Docker 的隔离Docker 利用 Linux 内核命名空间为应用提供隔离环境这种隔离默认适用于绝大多数设备包括 GPU。要访问 GPU必须在容器中显式授予访问权限如需只暴露全部 GPU 中的子集则需进行相应限制配置。Docker 隔离比环境变量更安全且适用于所有通过amdgpu内核模块接口访问 GPU 的程序——即使是使用 OpenGL 或 Vulkan 的图形应用不经过 ROCm 运行时也只能访问暴露给容器的 GPU。GPU 直通到虚拟机虚拟机提供最高级别的隔离因为连虚拟机自身的内核都与宿主机隔离。物理安装在宿主机中的设备可通过 PCIe passthrough 传递给虚拟机从而可以在客户机中运行不同操作系统例如从 Linux 宿主机运行 Windows 客户机。PCIe passthrough 的配置方式取决于所采用的虚拟机监控程序hypervisorROCm 对部分 GPU 支持 VMware ESXi。BAR 访问限制与物理寻址Direct Memory AccessDMA通过 Base Address RegisterBAR访问 PCIe 设备时可能因物理寻址限制而受限进而导致系统组件间的数据访问失败。Peer-to-PeerP2PDMA 用于在设备间访问寄存器、内存等资源PCIe 设备需要内存映射 I/OMMIO空间来完成 DMA这些 MMIO 空间就定义在 PCIe BAR 中。本节内容源于 bar-access-limits.rst。问题根源BAR 与物理寻址限制BAR 是一组 32 位或 64 位寄存器用于定义 PCIe 设备提供的资源CPU 与其他系统设备也通过它访问 PCIe 设备的资源。P2P DMA 仅在设备 A 能直接访问设备 B 的本地 BAR 内存时才成立。一旦某个 BAR 内存的地址超过了设备的物理寻址限制设备无论是访问自己的 BAR 还是系统中其他设备的 BAR都将无法访问该 BAR。因此在处理 BAR 访问问题时必须同时了解设备的物理寻址限制与 AMD GPU 的 BAR 配置这在为系统物理地址空间中的 PCIe 设备配置额外 MMIO 窗口时尤为重要。处理物理寻址限制的两种途径系统启动时BIOS 会为系统组件包括系统内存与 MMIO 窗口分配物理地址空间。现代 64 位平台上通常存在两个或更多 MMIO 窗口一个位于 4 GB 以下供 32 位兼容使用一个或多个位于 4 GB 以上供需要更多空间的设备使用。高 MMIO 窗口的内存地址可在 BIOS 配置选项中控制将其与物理寻址限制对齐即可让设备间 P2P DMA 正常工作。例如若某 PCIe 设备仅支持 44 位物理寻址应确保 MMIO 窗口位于系统物理地址空间的 44 位以内。具体有两种处理方式确保高 MMIO 窗口位于系统中各设备物理寻址限制之内。例如设备为 44 位物理寻址限制时在 BIOS 中将MMIO High Base与MMIO High Size配置为使窗口落在 44 位地址范围内并确保Above 4G Decoding选项为 Enabled。启用 IOMMU。当 IOMMU 以非透传non-passthrough模式启用时它会为系统中每个设备创建虚拟 I/O 地址空间并保证该空间内的所有虚拟地址都在设备的物理寻址限制之内。AMD GPU 的 BAR 配置下表展示了 AMD GPU 的 BAR 配置方式BAR 类型值说明BAR0-1 寄存器64 位PrefetchableGPU 内存视 GPU 而定为 8 GB 或 16 GB。设置为小于 2^44以支持来自 44 位物理寻址限制的其他 GPU 的 P2P 访问。Prefetchable 内存通过预取同一数据源的连续数据即使请求尚未发出实现更快的读操作从而提升高性能计算HPC性能。BAR2-3 寄存器64 位PrefetchableDoorbell设置为小于 2^44以支持来自 44 位物理寻址限制的其他 GPU 的 P2P 访问。作为 Doorbell BAR它向 GPU 指示其队列中有待处理的新操作。BAR4 寄存器可选非引导设备BAR5 寄存器32 位Non-prefetchableMMIO设置为小于 4 GB。实例GFX8 GPU 的 BAR 配置以 40 位物理寻址限制的 GFX8 GPUFiji / Radeon R9 FURY / NANO 系列为例系统 BIOS 设置的 BAR 布局如下lspci输出11:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Fiji [Radeon R9 FURY / NANO Series] (rev c1) Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device 0b35 Flags: bus master, fast devsel, latency 0, IRQ 119 Memory at bf40000000 (64-bit, prefetchable) [size256M] Memory at bf50000000 (64-bit, prefetchable) [size2M] I/O ports at 3000 [size256] Memory at c7400000 (32-bit, non-prefetchable) [size256K] Expansion ROM at c7440000 [disabled] [size128K]各 BAR 的详细说明如下GPU Frame Buffer BARMemory at bf40000000 (64-bit, prefetchable) [size256M]示例中大小为 256 MB通常该 BAR 大小为 GPU 内存大小典型 4 GB 以上。依据 AMD GPU 代际与物理寻址限制该 BAR 可设置在 2^40、2^44 或 2^48 以下。Doorbell BARMemory at bf50000000 (64-bit, prefetchable) [size2M]这一代 GPU 的该 BAR 大小通常应小于 10 MB示例中设为 2 MB。它被放置在 2^40 以下以允许其他代际 AMD GPU 的 peer-to-peer 访问。I/O BARI/O ports at 3000 [size256]用于传统 VGA 与引导设备支持。由于这些 GPU 不连接显示器非 VGA 设备即便系统 BIOS 未配置也不受影响。MMIO BARMemory at c7400000 (32-bit, non-prefetchable) [size256K]AMD 驱动访问配置寄存器所必需。由于该 BAR 剩余空间仅 1 个 DWORD32 位因此被设置在 4 GB 以下示例中固定为 256 KB。Expansion ROMExpansion ROM at c7440000 [disabled] [size128K]AMD 驱动访问 GPU video-BIOS 所必需示例中固定为 128 KB。小结本文以 system-optimization 索引 为骨架完整覆盖了 ROCm 系统优化的三大方向面向 Instinct CDNA 系列的数据中心级优化入口、面向 Radeon/Ryzen RDNA 系列的内存与虚拟化调优以及跨平台的 GPU 隔离与 BAR 物理寻址配置。实际部署时建议先依据硬件代际确认内核与 ROCm 版本兼容性参考 版本说明再结合负载类型HPC、AI 推理、虚拟化选择对应的调优手段统一内存平台优先调整 GTT/TTM 共享上限多 GPU 平台优先核对 BAR 布局与 P2P 可达性多租户场景则按安全级别从环境变量、容器逐步升级到 PCIe 直通。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考