ROCm Core SDK 7.14.0 release notes#
2026-07-15
69 min read time
ROCm Core SDK 7.14.0 transitions ROCm to TheRock, a build and release system that introduces a modular architecture to improve flexibility, maintainability, and alignment with community use cases:
Leaner core: The Core SDK focuses on essential runtime and development components.
Use case-specific expansions: Optional domain-specific SDKs for AI, data science, and HPC.
Modular installation: Install only the components required for your workflow.
This approach streamlines installation, reduces footprint, and accelerates innovation through independently released packages. To learn more, see the transition guide.
Note
ROCm 7.14.0 follows the versioning discontinuity that began with the 7.9.0 preview release.
Release highlights#
This release focuses on AI inference, distributed workloads, and profiling across AMD Instinct™, Radeon™, and Ryzen™ AI platforms. Highlights include inference-ready vLLM images and packages, ROCprofiler-SDK adoption across AI profiling workflows, expanded system telemetry and validation coverage, and updates to math, sparse, and communication libraries.
Platform and hardware support#
This release expands GPU, operating system, virtualization, and partitioning support.
Expanded AMD GPU support#
ROCm 7.14.0 adds support for the following AMD APUs:
For the complete list of supported AMD hardware, see AMD hardware support.
Expanded operating system support#
ROCm 7.14.0 adds support for RHEL 10.2 and RHEL 9.8 on AMD Instinct and Radeon GPUs. RHEL 10.2 replaces RHEL 10.1 as the validated RHEL 10 release; RHEL 9.8 replaces RHEL 9.7 as the validated RHEL 9 release.
SUSE Linux Enterprise Server (SLES) 15 SP7, SLES 16, and Debian 13 are now supported on AMD Instinct MI350P.
For the full list of supported Linux distributions, see Operating system support.
Expanded GPU virtualization support for Radeon GPUs#
ROCm 7.14.0 adds support for the following virtualization configurations on AMD Radeon GPUs.
On Radeon AI PRO R9700S: KVM Passthrough with Ubuntu 24.04 host OS and Ubuntu 24.04 guest OS.
On Radeon PRO V710: KVM SR-IOV with Ubuntu 24.04 host OS and Ubuntu 24.04 guest OS.
Supported Single Root I/O Virtualization (SR-IOV) configurations require the AMD GPU Virtualization Driver (GIM) 9.1.0.K. For details, see GPU virtualization support.
Expanded Instinct GPU partitioning support#
ROCm 7.14.0 has enabled and optimized multi-VF partition modes for the following GPU partitioning configurations in SR-IOV deployments:
On MI355X and MI350X:
DPX compute partition mode with NPS2 memory partitioning.
CPX compute partition mode with NPS2 memory partitioning.
For details, see GPU partitioning support.
AI inference and frameworks#
This release enables support for the following frameworks:
PyTorch 2.12.0
JAX 0.10.0
vLLM 0.23.0
SGLang 0.5.13
TensorFlow 2.21
The updated framework support replaces the previous PyTorch 2.9.1, JAX 0.8.2, vLLM 0.19.1, and SGLang 0.5.9 support.
For details, see AI ecosystem support.
Developer tools, profiling, and validation#
This release improves ROCm developer workflows with new HIP APIs, expanded profiling and tracing capabilities, and broader telemetry coverage.
HIP feature highlights#
The following are notable enhancements to HIP:
HIP execution context support: HIP now supports Execution Context APIs, enabling GPU compute resource partitioning and lightweight execution-context management on a single device. These APIs allow you to query and partition device resources (primarily CU count for HIP runtime), create execution contexts on resource subsets, and create streams and events scoped to those contexts. For more information, see Execution Context Management.
HIP API additions for CUDA parity:
Batch memory management: New batch asynchronous memory management APIs let applications discard (
hipMemDiscardBatchAsync), prefetch (hipMemPrefetchBatchAsync), or combine both operations (hipMemDiscardAndPrefetchBatchAsync) across multiple memory ranges in a single call, reducing API call overhead. Both HIP runtime and HIP driver variants are available.Library management: New library management APIs return the device pointer and size of a device global (
hipLibraryGetGlobal) and the host pointer and size of a managed variable (hipLibraryGetManaged) defined in ahipLibrary_t, improving parity with CUDA library APIs.
Faster HIP graph replay for asynchronous memory allocations: HIP graph replay now reduces overhead for graphs that interleave asynchronous memory allocations with compute. Allocation nodes no longer block during replay. Physical memory is reused across nodes instead of being mapped and unmapped on each launch, eliminating the gaps between kernels this pattern previously caused. For background on HIP graphs, see Graph Management.
For more information, see the HIP section in the ROCm component changelogs.
ROCprofiler-SDK feature highlights#
The following are notable enhancements to ROCprofiler-SDK:
ROCprofiler-SDK integration with PyTorch Profiler#
Starting with PyTorch 2.12, rocprofiler-sdk is used as the ROCm profiling backend for PyTorch Profiler on supported ROCm configurations, replacing the legacy roctracer-based profiling path. This enables PyTorch users to collect GPU activity traces through the rocprofiler-sdk infrastructure and provides a stronger foundation for correctness, stability, and future profiling capabilities. The integration also positions PyTorch Profiler to benefit from additional rocprofiler-sdk capabilities as framework-level support continues to evolve.
ROCprofiler-SDK beta support for Streaming Performance Monitors#
rocprofiler-sdk and rocprofv3 add beta support for Streaming Performance Monitors (SPM), enabling selected hardware counters to be sampled over time while workloads execute. Unlike traditional counter collection, which captures a single aggregated value per kernel dispatch, SPM provides time-resolved hardware counter data. This is useful for analyzing long-running workloads and training jobs where temporal behavior matters as much as aggregate metrics. ROCpd support is planned for a future release.
In ROCm 7.14.0, SPM support is available through the rocprofiler-sdk API and rocprofv3. To enable SPM in rocprofv3, use the --spm-beta-enabled flag or set the ROCPROFILER_SPM_BETA_ENABLED environment variable. For API-based usage, set ROCPROFILER_SPM_BETA_ENABLED.
Supported hardware: AMD Instinct MI300X, MI325X, MI350X, and MI355X GPUs.
For more information, see the SPM API reference guide and the SPM usage guide for rocprofv3.
Warning
SPM is a beta capability under active development and may affect system stability, including unexpected reboots. Do not use in production environments. See ROCm known issues for current limitations.
Selective ROCTx region profiling with counter collection#
rocprofiler-sdk and rocprofv3 include support for profiling selected ROCTx regions, allowing users to focus profiling on specific application phases instead of collecting data for the entire workload. By inserting roctxProfilerPause and roctxProfilerResume markers in application code and using the --selected-regions option, only the GPU activity within the marked regions is captured. This helps reduce profiling noise and output size while making it easier to isolate performance behavior in targeted code paths. This is particularly useful for long-running workloads where full-execution traces are impractical.
Counter collection for selected regions is available in ROCm 7.14.0. For details on --selected-regions, including usage with RCCL collectives and ROCTx markers, see Using ROCprofiler-SDK ROCTx.
Improved attach and re-attach profiling workflows#
rocprofiler-sdk and rocprofv3 improve attach-based profiling workflows, allowing the profiler to connect to already-running GPU applications without requiring a restart. This supports production-style and long-running workloads where starting the application under the profiler is not always practical. Overall reliability and stability are also improved. Repeated attach and re-attach sessions now generate separate output files, making it easier to manage results from iterative profiling sessions. For details, see Dynamic process attachment using rocprofv3.
Reduced profiling overhead for counter collection#
rocprofiler-sdk reduces profiling overhead in ROCm 7.14.0, including customer-driven improvements for rocprofv3 and SDK-based profiling paths. These changes make profiling more practical for performance-sensitive workflows and produce more representative trace data.
ROCprof Trace Decoder decoupled from the ROCprofiler-SDK API#
rocprof-trace-decoder now has an independent public API, separate from the core rocprofiler-sdk API. The SQTT decoding API has moved into rocprof-trace-decoder; use the decoder’s public API directly rather than rocprofiler-sdk for SQTT decoding. Previously, rocprof-trace-decoder was an internal plugin within rocprofiler-sdk, tightly coupling the two. The independent API can be versioned separately, allowing tools such as rocpd to consume the decoder without depending on the full SDK runtime. The rocprofv3 end-user experience is unchanged.
Quality and stability improvements#
This release includes a range of quality and stability improvements across rocprofiler-sdk and rocprofv3. These include corrections to hardware counter reporting on specific GPU architectures, improvements to trace output accuracy, build fixes on newer GPU targets, expanded platform coverage in aqlprofile, and strengthened build and test support in TheRock CI. These changes improve the robustness and correctness of the profiling stack across supported hardware configurations.
Queue interposition as a lighter alternative to queue interception#
rocprofiler-sdk introduces queue interposition, a mechanism that virtualizes HSA queue write-pointer operations without modifying the ROCR-Runtime or requiring full queue interception. For workloads that do not use dispatch counter collection, dispatch thread trace, or PC sampling, rocprofiler-sdk now defaults to this lighter interposition path, which reduces profiling overhead and improves overall stability. The legacy queue interception path remains in use when any of those features are active. The default behavior can be controlled via the ROCPROFILER_QUEUE_INTERPOSITION environment variable.
ROCprof Compute Viewer 0.2.0 release#
ROCprof Compute Viewer (RCV) 0.2.0 adds the ability to open raw .att and .out thread trace directories directly without a JSON conversion step, and introduces a Flamegraph view with per-CU and SIMD source and ISA stack rollups replacing the previous Explorer view. This release also adds hidden latency analysis for gfx10+ and Navi thread traces, SQTT instrumentation marker visualization, and a heuristic GPU Utilization derived counter, alongside fixes for scaling issues, Global View misalignments, and real-time alignment for both JSON and raw .att inputs. Installers are available for Windows (.exe) and macOS ARM64 (.sh), with GitHub Actions CI and release workflows now in place.
ROCm Compute Profiler feature highlights#
The following are notable enhancements to the ROCm Compute Profiler (rocprofiler-compute):
PyTorch operator statistics (experimental): The PyTorch tracing (
--torch-trace) now includes a per-operator statistics summary table, making it easier to spot hot operators and per-dispatch variance. The trace now also captures backward-pass and nested operators that were previously missed or misattributed.Faster analysis: Analyze mode now processes profiling data more efficiently, reducing analysis time and memory usage on large workloads.
Improved metric averaging accuracy: Metric values across multiple kernel dispatches are now correctly weighted-averaged, eliminating errors that occurred when aggregating metrics with varying values across individual dispatches.
pip installation support: ROCm Compute Profiler is now available as a pip-installable Python package. A new
rocm-profilerwheel on the ROCm Python package index lets you install ROCm Compute Profiler into a custom Python environment without building ROCm from source. The wheel package installs both ROCm Compute Profiler and ROCm Systems Profiler binaries. For installation instructions, see Install ROCm Compute Profiler.
For more information, see the ROCm Compute Profiler section in the ROCm component changelogs.
ROCm Systems Profiler feature highlights#
The following are notable enhancements to ROCm Systems Profiler:
GPU hardware counter sampling: ROCm Systems Profiler now supports periodic sampling of Performance Metric Counters (PMCs). This lets you collect performance metrics at regular time intervals without serializing kernel dispatches, enabling profiling with significantly reduced overhead. For details, see the GPU metrics section in Configuring runtime options.
Unified memory profiling: ROCm Systems Profiler now adds unified memory profiling with statistics on page migrations and page faults through a dedicated report section. The report displays aggregated transfer counts, sizes, and timing to help you identify performance bottlenecks caused by host-device memory migrations and page faults. Page table events are collected through ROCprofiler-SDK using the Kernel Fusion Driver (KFD) events API, replacing the previous page-migration API, with page migration and page fault events exposed directly in the profiler output. For details, see Unified memory profiling.
SDMA engine activity profiling: ROCm Systems Profiler can now collect System Direct Memory Access (SDMA) engine activity through AMD SMI, reporting per-process DMA usage to expose data-movement bottlenecks across GPU interconnects in multi-GPU workloads. This metric is opt-in and requires AMDGPU driver version 6.19.14 or later.
Selective MPI rank profiling: In MPI jobs, you can now restrict profile and trace output to a chosen subset of ranks, while unselected ranks run undisturbed. This cuts data volume and speeds up post-run analysis, and works across MPI implementations such as MPICH and Open MPI, including heterogeneous and multi-node environments. For details, see the rank filtering section in Communication runtime profiling.
MPI rank console log control: You can now limit console output to a specified subset of ranks while profiling and tracing continue on every rank. This reduces console log noise in large multi-rank runs without sacrificing collection coverage. Existing behavior is preserved when no rank-selection option is set.
Selective ROCTx region profiling: When your application is instrumented with ROCTx region push and pop APIs, you can now include or exclude specific named regions to scope collection to the code paths you’re investigating.
pip installation support: ROCm Systems Profiler is now available as a pip-installable Python package, letting you install and use the profiler in custom Python environments without rebuilding from source. The package supports multiple Python versions and provides the same functionality as traditional distributions, reducing setup time and complexity. For installation instructions, see Install ROCm Systems Profiler.
For more information, see the ROCm Systems Profiler section in the ROCm component changelogs.
AMD SMI feature highlights#
The following are notable enhancements to AMD SMI:
Per-partition GPU metrics: AMD SMI now reports temperature, clock, and usage at the partition level through the new
amd-smi metric --partitionflag, giving partition-level observability where previously only socket-level metrics were available. For CLI usage, see AMD SMI CLI tool; for partitioning concepts, see GPU partitioning.Compute partition memory allocation mode: AMD SMI now controls memory allocation behavior at the compute partition level through the new
amd-smi set --compute-partition-mem-alloc-modecommand. The current mode is visible inamd-smi static --partitionoutput, and new C and Python APIs expose the same controls programmatically.APU CLI metrics: AMD SMI now surfaces APU-specific data through the existing
amd-smi metricflags when APU metrics are available.amd-smi monitoradds temperature and clock fallbacks when standard discrete GPU sensors report N/A.APU VRAM carve-out and GTT tuning: AMD SMI now tunes APU memory from the command line, consolidating the get and set controls previously handled by the standalone
amd-ttmtool and adding VRAM carve-out configuration. Carve-out and GTT changes take effect after the next reboot, and AMD SMI rebuilds the initramfs automatically so the new configuration is applied at boot. For details, see the memory tuning section in AMD SMI CLI tool.PID-grouped process listing: AMD SMI now groups multi-GPU process output by PID with
amd-smi process --sort-by-pidandamd-smi monitor --sort-by-pid, merging each process’s per-GPU usage into a single row. A new C and Python API,amdsmi_get_gpu_process_list_by_pid(), exposes the same data programmatically.Fabric clock (FCLK) capping on MI300A: You can now cap the maximum fabric clock (FCLK) on AMD Instinct MI300A APUs to steer power, using the new
fclkclock type foramd-smi set --clk-limit. Only a maximum limit is supported.Go bindings for CPU telemetry: AMD SMI now exposes EPYC System Management Interface (ESMI) CPU functionality through its Go bindings, so Go applications can query CPU telemetry in-process without invoking external binaries or embedding C or Python runtimes. This simplifies integrating AMD CPU observability into Go-based control planes. For details, see AMD SMI Go interface.
For more information, see the AMD SMI section in the ROCm component changelogs.
RDC expands telemetry coverage for DME parity#
ROCm Data Center (RDC) adds 59 telemetry fields, bringing its metric coverage near parity with the Device Metrics Exporter (DME). New fields cover energy, temperature, clocks, memory, PCIe, engine activity, error correction code (ECC), and health and throttle metrics. Some metrics require recent driver and hardware support. For the available field groups and how to monitor them, see Using RDC features.
For more information, see the RDC section in the ROCm component changelogs.
ROCm Bandwidth Test (RBT) reaches end-of-life#
ROCm Bandwidth Test (RBT) is deprecated and reaches end-of-life with the TheRock-based ROCm 7.14.0 release. Active development has ceased, and no further feature enhancements or fixes are planned. For equivalent and expanded functionality, transition to TransferBench and the ROCm Validation Suite (RVS).
For more details, refer to the ROCm Bandwidth Test documentation.
Libraries#
This release updates ROCm math, sparse compute, and communication libraries with additional routines, expanded datatype support, and performance improvements. It also adds the hipFile storage library.
hipFile direct storage I/O support#
hipFile is now included in the ROCm Core SDK, enabling direct data transfers between storage and GPU memory as part of AMD Infinity Storage. hipFile enables storage-intensive workloads to bypass host-side copies, reducing latency and command overhead for high-throughput GPU I/O.
hipFile is supported on Linux with AMD Instinct GPUs. See the ROCm hipFile examples and the hipFile documentation to get started.
Per-matrix bias support in hipBLASLt batched GEMM#
hipBLASLt now supports applying a unique bias vector to each matrix in a strided batched GEMM. Set the new HIPBLASLT_MATMUL_DESC_BIAS_BATCH_STRIDE matmul descriptor attribute to specify the stride between consecutive bias vectors in device memory when HIPBLASLT_EPILOGUE_BIAS is set in the epilogue. A stride of 0 (the default) preserves the previous behavior of broadcasting a single bias vector to all matrices in the batch.
For more information, see the hipBLASLt documentation.
Per-batch scalar coefficients for Level 2 batched BLAS#
rocBLAS and hipBLAS now support per-batch scalar coefficients for Level 2 batched and strided-batched routines in device pointer mode. Each batch index uses its own device-resident scalar rather than a single value shared across the entire batch:
GEMV: per-batch alpha and beta.
GER, GERU, and GERC: per-batch alpha.
S, D, C, and Z precision variants are available for all routines.
For more information, see the rocBLAS section and hipBLAS section in the ROCm component changelogs.
Per-batch alpha for axpy_batched and axpy_strided_batched#
rocBLAS adds per-batch alpha support for axpy_batched, axpy_strided_batched, and their _ex variants via rocblas_set_batch_alpha_stride in device pointer mode.
For more information, see the rocBLAS section in the ROCm component changelogs.
hipSPARSE feature highlights#
The following are notable enhancements to hipSPARSE:
BSR format support in hipSPARSE generic routines: hipSPARSE adds Block Sparse Row (BSR) format support to its generic sparse compute routines:
hipsparseSpMM(sparse matrix-matrix multiplication) andhipsparseSpMV(sparse matrix-vector multiplication). Two new descriptor functions,hipsparseCreateBsrandhipsparseCreateConstBsr, let you construct BSR-format sparse matrices for use with the generic API. This brings hipSPARSE to parity with the equivalent NVIDIA cuSPARSE routines, where BSR was previously available only through the rocSPARSE API.Legacy SpGEAM routines deprecated: The legacy hipSPARSE
csrgeamroutines (hipsparseXcsrgeamNnz,hipsparseScsrgeam,hipsparseDcsrgeam,hipsparseCcsrgeam, andhipsparseZcsrgeam) are deprecated and will be removed in a future release. Use thecsrgeam2routines instead:hipsparseScsrgeam2_bufferSizeExt,hipsparseDcsrgeam2_bufferSizeExt,hipsparseCcsrgeam2_bufferSizeExt,hipsparseZcsrgeam2_bufferSizeExt,hipsparseXcsrgeam2Nnz,hipsparseScsrgeam2,hipsparseDcsrgeam2,hipsparseCcsrgeam2, andhipsparseZcsrgeam2.
rocSPARSE feature highlights#
The following are notable enhancements to rocSPARSE:
Incomplete LDLᵀ factorization: rocSPARSE adds the
rocsparse_spildlt0routine, which computes an incomplete LDLᵀ factorization with zero fill-in (ILDLT(0)) for symmetric real or Hermitian complex sparse matrices in CSR format. The routine supports strided batched computation for factoring multiple matrices in a single call, a common building block for preconditioning iterative sparse solvers.rocsparse_indextype_u16index type deprecated: Therocsparse_indextype_u16field of therocsparse_indextypeenum is deprecated in this release. Code usingrocsparse_indextype_u16now produces deprecation warnings at compile time. Migrate torocsparse_indextype_i32orrocsparse_indextype_i64;rocsparse_indextype_u16will be removed in a future release.
RCCL feature highlights#
The following are notable enhancements to RCCL:
Hierarchical AllGather: RCCL adds a hierarchical AllGather algorithm for large multi-node jobs by separating inter-node from intra-node communication, relieving the concurrency pressure that constrains the existing ring and direct algorithms across many GPUs. On AMD Instinct MI350X GPUs, hierarchical AllGather is enabled by default for multi-node configurations. To disable it, set
RCCL_HIERARCHICAL_ALLGATHER=0.Direct reduce-scatter: RCCL adds a direct reduce-scatter algorithm for small-to-medium message sizes on AMD Instinct MI350X GPUs, as an alternative to the existing ring-based implementation. RCCL selects it automatically for multi-node reduce-scatter operations within a configurable message-size threshold.
Copy Engine collectives (Preview): RCCL now offloads collective data movement to the GPU copy engine on AMD Instinct MI355X GPUs through new Copy Engine collectives. This frees compute units during communication-bound collectives, so compute and communication can overlap. RCCL uses a batched copy path when available, falls back to multi-stream or single-stream transfers otherwise, and preserves correct behavior during HIP graph capture.
For more information, see the RCCL section in the ROCm component changelogs.
AMD hardware support#
The following table lists supported AMD Instinct GPUs, Radeon GPUs, and Ryzen APUs. Each supported device is listed with its corresponding GPU microarchitecture and LLVM target.
Note
If your GPU is not listed, it might be community-enabled through TheRock nightly builds. For more information, see TheRock supported GPUs. For installation guidance, see TheRock releases.
|
Device series |
Device |
LLVM target |
Architecture |
|---|---|---|---|
| AMD Instinct MI350 Series |
gfx950 |
CDNA 4 | |
| AMD Instinct MI300 Series |
gfx942 |
CDNA 3 | |
| AMD Instinct MI200 Series |
gfx90a |
CDNA 2 | |
| AMD Instinct MI100 Series | Instinct MI100 |
gfx908 |
CDNA |
|
Device series |
Device |
LLVM target |
Architecture |
|---|---|---|---|
| AMD Radeon AI PRO R9000 Series |
gfx1201 |
RDNA 4 | |
| AMD Radeon RX 9000 Series |
gfx1201 |
||
|
gfx1200 |
|||
| AMD Radeon PRO W7000 Series |
gfx1100 |
RDNA 3 | |
|
gfx1101 |
|||
| AMD Radeon RX 7000 Series |
gfx1100 |
||
|
gfx1101 |
|||
|
gfx1102 |
|||
| AMD Radeon PRO V Series |
gfx1101 |
||
|
gfx1030 |
RDNA 2 | ||
| AMD Radeon PRO W6000 Series |
gfx1030 |
Operating system support#
ROCm supports the following Linux distributions and Microsoft Windows versions. If you’re running ROCm on Linux, ensure your system is using a supported kernel version.
Important
The following table is a general overview of supported operating systems. Actual support might vary by AMD GPU or APU. Use the Compatibility matrix to verify support for your specific setup before installation.
|
Linux distribution |
Supported versions |
Linux kernel version |
|---|---|---|
|
Ubuntu |
26.04 |
GA 7.0 |
|
24.04.4 |
GA 6.8 |
|
|
22.04.5 |
GA 5.15 |
|
|
Debian |
13 |
6.12 |
|
12 |
6.1.0 |
|
|
Red Hat Enterprise Linux (RHEL) |
10.2 |
6.17 |
|
10.0 |
6.12.0-55 |
|
|
9.8 |
6.17 |
|
|
9.6 |
5.14.0-570 |
|
|
9.4 |
5.14.0-427 |
|
|
8.10 |
4.18.0-553 |
|
|
Oracle Linux |
10 |
UEK 8.1 |
|
9 |
UEK 8 |
|
|
8 |
UEK 7 |
|
|
Rocky Linux |
9 |
5.14.0-570 |
|
SUSE Linux Enterprise Server (SLES) |
16.0 |
6.12 |
|
15.7 |
6.4.0-150700.51 |
|
Operating system |
Supported versions |
Linux kernel version |
|---|---|---|
|
Ubuntu |
26.04 |
GA 7.0 |
|
24.04.4 |
GA 6.8 |
|
|
22.04.5 |
GA 5.15 |
|
|
Red Hat Enterprise Linux (RHEL) |
10.2 |
6.17 |
|
9.8 |
6.17 |
|
|
Windows |
11 25H2 |
— |
|
Operating system |
Supported versions |
Linux kernel version |
|---|---|---|
|
Ubuntu |
26.04 |
GA 7.0 |
|
24.04.4 |
HWE 6.17 |
|
|
Windows |
11 25H2 |
— |
Installation updates#
ROCm 7.14.0 introduces several improvements to the Runfile Installer:
Multi-architecture GPU support#
The installer provides multi-architecture support, allowing you to install ROCm components for one or more GPU architectures. This is particularly useful for heterogeneous GPU environments or when deploying across multiple systems with different GPU types.
Install single or multiple GPU architectures in one installation.
Autodetect GPU and install matching architecture.
Query available and installed architectures.
Selectively uninstall specific architectures while keeping others.
Flexible component selection#
Choose exactly which ROCm components to install, reducing installation time and disk space requirements:
core: Essential runtime libraries and tools (default)
core-dev: Development headers and files
dev-tools: Debugging and profiling utilities
core-sdk: Comprehensive SDK with libraries and development tools
opencl: OpenCL runtime support
Graphics support#
Optional graphics support for Mesa and OpenGL workloads is now available. When enabled, the installer includes the amdgpu-lib package for graphics capabilities.
Build and manifest information#
Display TheRock build information including commit hash, GitHub run ID, and build date
View complete manifest of all components and their versions included in the installer
Query components by specific GPU architecture
Universal installer#
A single installer file now supports all Linux distributions, eliminating the need to download distribution-specific builds.
Kernel driver and firmware bundle support#
ROCm requires a coordinated stack of compatible firmware, driver, and user-space components. Maintaining version alignment between these layers ensures correct GPU operation and performance, especially for AMD data center products. While AMD publishes the AMD GPU driver and ROCm user space components, your server OEM (original equipment manufacturer) or infrastructure provider distributes the firmware packages. AMD supplies those firmware images (platform level data model (PLDM) bundles), which the OEM integrates and distributes.
|
AMD device |
PLDM Bundle (Firmware) |
Linux driver |
|---|---|---|
|
Instinct MI355X |
01.26.01.03 (or later)
[*] |
AMD GPU Driver (amdgpu) |
|
Instinct MI350X |
||
|
Instinct MI350P |
BKC11.0 (IFWI PRD1008B) or later
[*] |
|
|
Instinct MI325X |
01.26.01.02 (or later)
[*] |
|
|
Instinct MI300X |
01.26.00.04 (or later)
[*] |
|
|
Instinct MI300A |
BKC 27 (or later)
[*] |
|
|
Instinct MI250X |
Maintenance update (MU) 5 with IFWI 75 (or later) |
|
|
Instinct MI250 |
||
|
Instinct MI210 |
||
|
Instinct MI100 |
VBIOS D3430401-037 |
|
Linux driver |
Windows driver |
|---|---|
|
AMD GPU Driver (amdgpu) |
AMD Software: Adrenalin Edition 26.6.4
Windows OEM Driver |
|
Linux driver |
Windows driver |
|---|---|
|
Inbox kernel driver (Ubuntu 26.04) |
AMD Software: Adrenalin Edition 26.6.4
Windows OEM Driver |
GPU virtualization support#
AMD Instinct data center GPUs support virtualization in the following configurations. Supported SR-IOV configurations require the AMD GPU Virtualization Driver (GIM) 9.1.0.K—see the AMD Instinct Virtualization Driver documentation for more information.
|
AMD GPU |
Hypervisor |
Virtualization technology |
Virtualization driver |
Host OS |
Guest OS |
|---|---|---|---|---|---|
|
Instinct MI355X |
KVM |
Passthrough |
— |
Ubuntu 24.04 |
Ubuntu 24.04 |
|
SR-IOV |
GIM 9.1.0.K |
Ubuntu 24.04 |
Ubuntu 24.04 |
||
|
RHEL 10.0 |
|||||
|
RHEL 9.6 |
|||||
|
ESXi |
SR-IOV |
— |
VMware ESXi 9.1 |
Ubuntu 24.04 |
|
|
Instinct MI350X |
KVM |
Passthrough |
— |
Ubuntu 24.04 |
Ubuntu 24.04 |
|
SR-IOV |
GIM 9.1.0.K |
Ubuntu 24.04 |
Ubuntu 24.04 |
||
|
RHEL 9.6 |
|||||
|
Instinct MI325X |
KVM |
SR-IOV |
GIM 9.1.0.K |
Ubuntu 22.04 |
Ubuntu 22.04 |
|
Instinct MI300X |
KVM |
Passthrough |
— |
Ubuntu 22.04 |
Ubuntu 22.04 |
|
SR-IOV |
GIM 9.1.0.K |
Ubuntu 24.04 |
Ubuntu 24.04 |
||
|
Ubuntu 22.04 |
Ubuntu 22.04 |
||||
|
Instinct MI210 |
KVM |
Passthrough |
— |
RHEL 9.4 |
Ubuntu 22.04 |
|
SR-IOV |
GIM 9.1.0.K |
RHEL 9.4 |
Ubuntu 22.04 |
||
|
RHEL 9.4 |
|
AMD GPU |
Hypervisor |
Virtualization technology |
Virtualization driver |
Host OS |
Guest OS |
|---|---|---|---|---|---|
|
Radeon AI PRO R9700S |
KVM |
Passthrough |
— |
Ubuntu 24.04 |
Ubuntu 24.04 |
|
Radeon PRO V710 |
SR-IOV |
GIM 9.1.0.K |
Ubuntu 24.04 |
Ubuntu 24.04 |
GPU partitioning support#
The following compute partition and NUMA-per-socket (NPS) configurations are available on AMD Instinct GPUs in bare metal deployments.
|
Deployment |
Device |
Compute partition mode |
Memory partition mode |
|---|---|---|---|
|
Bare metal |
Instinct MI355X, MI350X |
CPX |
NPS2 |
|
DPX |
NPS2 |
||
|
QPX |
NPS2 |
||
|
Instinct MI350P |
CPX |
NPS1 |
|
|
SPX |
NPS1 |
||
|
Instinct MI300X |
CPX |
NPS4 |
|
|
DPX |
NPS2 |
The following configurations are available on AMD Instinct GPUs in SR-IOV deployments. See GPU virtualization support for driver support information.
|
Deployment |
Device |
VFs per GPU |
Compute partition mode |
Memory partition mode |
|---|---|---|---|---|
|
KVM SR-IOV |
Instinct MI355X, MI350X |
1 |
SPX (Default) |
NPS1 |
|
1 or 8[*] |
CPX |
NPS2 |
||
|
1 or 2[*] |
DPX |
NPS2 |
||
|
Instinct MI325X |
1 |
SPX |
NPS1 |
|
|
Instinct MI300X |
1 |
SPX |
NPS1 |
|
|
8 [*] |
CPX |
NPS4 |
See the AMD GPU partitioning topic in the AMD GPU Driver documentation to learn more.
AI ecosystem support#
ROCm 7.14.0 provides optimized support for popular deep learning frameworks and AI inference engines. The following table lists supported frameworks and libraries, their compatible operating systems, and validated versions.
Important
The following table is a general overview of supported frameworks and AI inference engines. Actual support might vary by AMD GPU or APU. Use the Compatibility matrix to verify support for your specific setup.
|
Framework |
Supported versions |
Supported OS |
Supported Python versions |
|---|---|---|---|
| PyTorch |
2.12.0, 2.11.0, 2.10.0 |
Linux |
3.14, 3.13, 3.12, 3.11 |
|
2.12.0 |
Windows |
||
| JAX |
0.10.0, 0.9.1 |
Linux |
3.14, 3.13, 3.12, 3.11 |
| vLLM |
0.23.0 |
Linux |
3.14 (requires PyTorch 2.11.0) |
| SGLang |
0.5.13 |
Linux |
3.14 (requires PyTorch 2.11.0) |
| MIGraphX |
2.16 |
Linux |
3.12 |
| ONNX Runtime |
1.23.2 |
Linux |
3.12 |
ROCm Core SDK components#
The following table lists core tools and libraries included in the ROCm 7.14.0 release.
Important
The following table is a general overview of ROCm Core SDK components. Actual support for these libraries and tools can vary by GPU and OS. Use the Compatibility matrix to verify support for your specific setup.
Component group |
Component name |
Version |
Supported platforms |
|
|---|---|---|---|---|
|
Math and compute libraries |
hipBLAS | 3.4.0 ⇒ 3.5.0 | Linux/Windows · Instinct/Radeon/Ryzen | |
| hipBLASLt | 1.3.0 ⇒ 1.4.1 | |||
| hipCUB | 4.4.0 ⇒ 4.5.0 | |||
| hipFFT | 1.0.23 ⇒ 1.0.24 | |||
| hipRAND | 3.3.0 ⇒ 3.4.0 | |||
| hipSOLVER | 3.4.0 ⇒ 3.5.0 | |||
| hipSPARSE | 4.5.0 ⇒ 4.6.0 | |||
| MIOpen | 3.5.1 ⇒ 3.5.2 | |||
| rocBLAS | 5.4.0 ⇒ 5.5.0 | |||
| rocFFT | 1.0.37 ⇒ 1.0.38 | |||
| rocRAND | 4.4.0 ⇒ 4.5.0 | |||
| rocSOLVER | 3.34.0 ⇒ 3.35.0 | |||
| rocSPARSE | 4.6.0 ⇒ 4.7.0 | |||
| rocPRIM | 4.4.0 ⇒ 4.5.0 | |||
| rocThrust | 4.4.0 ⇒ 4.5.0 | |||
| rocWMMA | 2.2.0 ⇒ 2.2.1 | |||
| Composable Kernel | 1.2.0 | Linux/Windows · Instinct/Radeon | ||
| hipSPARSELt | 0.2.8 ⇒ 0.2.9 | Linux · Instinct (gfx950/gfx942) | ||
|
Communication libraries |
RCCL | 2.28.3 ⇒ 2.30.4 | Linux · Instinct/Radeon/Ryzen | |
| rocSHMEM | 3.4.0 ⇒ 3.5.0 | Linux · Instinct (gfx950/gfx942/gfx90a) · Radeon (gfx1201/gfx1200/gfx1100/gfx1101 (except Radeon PRO V710)/gfx1102) | ||
|
Media libraries |
rocDecode | 1.8.0 | Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152/gfx1153) | |
| rocJPEG | 1.5.0 ⇒ 1.6.0 | |||
|
Storage libraries |
hipFile | 0.3.0 | Linux · Instinct | |
|
Runtimes and compilers |
HIP | 7.13 ⇒ 7.14 | Linux/Windows · Instinct/Radeon/Ryzen | |
| HIPIFY | 7.14 | |||
| LLVM | 23.0.0 | |||
| SPIRV-LLVM-Translator | 23.0.0 | |||
| ROCr Runtime | 1.21.0 | Linux · Instinct/Radeon/Ryzen | ||
|
Profiling and debugging tools |
ROCm Compute Profiler (rocprofiler-compute) | 3.6.0 ⇒ 3.7.0 | Linux · Instinct · Ryzen (gfx1150/gfx1151/gfx1152/gfx1153) | |
| ROCm Systems Profiler (rocprofiler-systems) | 1.6.0 ⇒ 1.7.0 | |||
| ROCprofiler-SDK | 1.3.0 ⇒ 1.3.2 | Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152/gfx1153) | ||
| ROCdbgapi | 0.80.0 | Linux · Instinct/Radeon | ||
| ROCm Debugger (ROCgdb) | 16.3 | |||
| ROCr Debug Agent | 2.1.0 | |||
|
Control and monitoring tools |
AMD SMI (BM) | 26.4.0 ⇒ 26.5.0 | Linux · Instinct/Radeon | |
| rocminfo | 1.0.0 | Linux · Instinct/Radeon/Ryzen | ||
| ROCm Data Center Tool (RDC) | 1.3.0 ⇒ 1.3.1 | Linux · Instinct |
ROCm component changelogs#
The following sections describe key changes to ROCm Core SDK components.
AMD SMI (26.5.0)#
Added#
NIC processor discovery and information API surface.
New C APIs:
amdsmi_get_nic_processor_handles(),amdsmi_get_nic_device_bdf(),amdsmi_get_nic_fw_info(),amdsmi_get_nic_port_statistics(), andamdsmi_get_nic_vendor_statistics().amdsmi_get_nic_processor_handles()enumerates NIC processors by socket; the BDF, firmware, and port/vendor statistics getters are reserved and currently returnAMDSMI_STATUS_NOT_YET_IMPLEMENTED.
Exposed APU metrics through the CLI and Python interface.
amd-smi metricnow surfaces APU-specific data under--usage,--power,--clock,--temperature,--fan,--voltage, and--throttlewhen APU metrics are available.amd-smi monitorprovides APU temperature and clock fallbacks when standard dGPU sensors report N/A.On APU systems, the
--pcie,--ecc-blocks,--voltage-curve,--overdrive,--xgmi-err, and--energysections are not applicable and are omitted.
The
--partitionflag toamd-smi metricfor partition-scoped metrics.The
-X/--partitionflag switches the temperature, clock, and usage categories to partition-level data sources; throttle metrics are already partition-aware.Reuses the existing temperature/clock/usage section schema and adds partition-only AID/XCP/MID entries within it; socket-only fields with no partition equivalent report
N/A.When
--partitionis set with--temperature: adds MID and per-XCP/XCD temperatures.When
--partitionis set with--clock: sources GFX/VCLK/DCLK/SOCCLK from partition metrics and adds per-AID and per-XCP clock entries with their limits.When
--partitionis set with--usage: reports per-XCP GFX/JPEG/VCN activity.
--foldersupport toamd-smi ras --afid.amd-smi ras --afid --folder <DIR>decodes every*.cperin a directory and prints afile_name | list of afidstable (or a JSON array under--json).Records with no AFIDs show
-; files that cannot be parsed showdecode failed.
Wrapped ESMI functions in
amdsmi_go_shim.Go callers can now access ESMI CPU functionality through the existing
amdsmi_go_shiminterface.
GPU partitioning conceptual guide and usage examples.
New guide at
docs/conceptual/partition.mdcovering accelerator partition modes (SPX/DPX/TPX/QPX/CPX), memory partition modes (NPS1/NPS2/NPS4/NPS8), API generations, device enumeration after partition, and BDF encoding.New C++ example:
example/amd_smi_partition_example.cc.New Python example:
example/amd_smi_partition_example.py.
An alias for
amd-smi set -C/--compute-partitionasamd-smi set --accelerator-partition.Compute and accelerator partitions are fundamentally the same, so users can now use
--accelerator-partitionto set the compute/accelerator partition.
Input validation for CPU
setcommands.Out-of-range values are now rejected with a clear error showing the valid range:
--cpu-xgmi-link-width(0-1)--cpu-gmi3-link-width(0-2)--cpu-lclk-dpm-level(0-3)--cpu-disable-apb(0-3)
--cpu-pwr-limitvalues above the socket maximum are now reduced to the maximum and applied, with a warning.
A compute partition memory allocation mode API.
New
amd-smi static --partitionoutput includesCOMPUTE_PARTITION_MEM_ALLOC_MODEfield.New
amd-smi set --compute-partition-mem-alloc-mode [CAPPING|ALL]to control memory allocation mode (requires sudo).New APIs:
amdsmi_get_gpu_compute_partition_mem_alloc_mode(),amdsmi_set_gpu_compute_partition_mem_alloc_mode().New enum:
amdsmi_compute_partition_mem_alloc_mode_t(AMDSMI_COMPUTE_PARTITION_MEM_ALLOC_CAPPING,AMDSMI_COMPUTE_PARTITION_MEM_ALLOC_ALL).Reads/writes sysfs:
/sys/class/drm/cardN/device/compute_partition_mem_alloc_mode.
AMDSMI_LINK_TYPE_NUMAandAMDSMI_LINK_TYPE_XNUMAtoamdsmi_link_type_t.Represent NIC-to-GPU links that cross different PCIe switches on the same CPU (NUMA) or across CPUs (XNUMA).
PID-grouped process listing across GPUs.
amd-smi process --sort-by-pidandamd-smi monitor --sort-by-pidgroup output by PID, merging each PID’s per-GPU usage into one row.New C and Python API
amdsmi_get_gpu_process_list_by_pid().
Changed#
Normalized JSON/CSV key casing in
amd-smi metricclock and temperature sections.The
uclk_aid,socclks_mid, and temperaturexcdkeys are now lowercase (aid_<N>,mid_<N>,xcp_<N>) in JSON and CSV output, matching the existingxcp_<N>usage keys; they were previously uppercase (AID_<N>,MID_<N>,XCP_<N>).Human-readable output is unchanged, since it uppercases all keys.
Normalized JSON/CSV key casing in the
amd-smi topologyNIC-GPU access table.The per-GPU columns are now lowercase (
gpu_<N>for the BDF header row,gpu_<N>_topofor each NIC’s status row) in JSON and CSV output, matching the existinggpu_<N>keys in the GPU-to-GPU access matrix; they were previously uppercase (GPU<N>,GPU<N>_Topo).Human-readable output is unchanged, since it uppercases all keys.
Renamed “AINIC version” to “ionic version” in
amd-smi versionoutput.The label now correctly reflects that it shows the ionic kernel driver version.
Removed#
Removed the non-functional
--decodeflag fromamd-smi ras. Out-of-band CPER decoding is available viaamd-smi ras --afid --cper-file <path>or--afid --folder <DIR>.Removed the unused
amdsmi_nic_link_type_tenum from the public header. No API or struct referenced it; NIC link types are reported throughamdsmi_link_type_t, which gainsAMDSMI_LINK_TYPE_NUMAandAMDSMI_LINK_TYPE_XNUMAin this release.
Optimized#
Improved Python test runner behavior:
Added
-l/--listflag to list all available tests and exit without running them.Added shadow detection: if
amdsmiloads from a path other than the resolved expected path (AMDSMI_PATH,ROCM_HOME,ROCM_PATH, or/opt/rocmdefault), tests exit early with a clear error message and remediation steps.Non-root invocations now exit with code 1 immediately with a clear message instead of failing mid-test.
Resolved Issues#
amd-smi set --power-caprejecting the minimum allowed value.The lower bound is now inclusive, so setting the power cap to the exact minimum of the reported range (for example,
210when the range is 210-300W) succeeds instead of failing validation, matching the inclusive range shown in the error message.
Corrected invalid AMD SMI status-code names in exception messages and documentation.
Some
AmdSmiLibraryExceptionmessages and API documentation entries were misspelled; they now use the correctAMDSMI_STATUS_*names.
A crash in
amdsmi_get_gpu_vram_vendor()and madeamdsmi_get_gpu_vram_info()resilient to DRM failures.amdsmi_get_gpu_vram_vendor()now validates the output buffer and only writes it on success, fixing a null-pointer dereference on the not-supported path.amdsmi_get_gpu_vram_info()now reads the VRAM vendor from sysfs first and treats the DRM ioctl (VRAM type/bit width/bandwidth) as best effort, so the vendor is still returned when the DRM path is unavailable.
AMD GPU manufacturer name display in
amd-smi static --board.The CLI now displays the canonical vendor name
Advanced Micro Devices, Inc. [AMD/ATI]when the board manufacturer name is reported as the raw AMD PCI vendor ID (0x1002) because the hostpci.idslookup is unavailable. The C and Python APIs continue to return the raw value unchanged.Standardized the hardcoded AMD vendor string on the canonical
pci.idsspelling (with the comma) soVENDOR_NAMEandMANUFACTURER_NAMEare consistent withlspci.
amd-smi ras --cper/amdsmi_get_gpu_cper_entries()crash (free(): invalid pointer/SIGABRT) whenlibamd_smi.soisLD_PRELOAD-ed under a host with a different libstdc++ (for example, device-metrics-exporter /gpuagent).amd-smi ras --cperfailing withAMDSMI_STATUS_FILE_ERRORon an empty CPER ring. An empty ring (no RAS records) now reports no CPER records;amdsmi_get_gpu_cper_entries()returnsAMDSMI_STATUS_SUCCESSwithentry_count == 0.amdsmi_init()aborting entirely when CPU/ESMI initialization fails.populate_amd_cpus()treated anesmi_init()failure (non-AMD CPU, missing/unsupported energy or HSMP driver, or a CPU/SMU in a bad state) as fatal, causing all ofamdsmi_init()to fail so GPU and NIC functionality became unusable. ESMI/CPU discovery is now non-fatal and is skipped on failure, mirroring the NIC discovery paths.Removed an incorrect
static_cast<amdsmi_status_t>(esmi_init())that conflated the unrelatedesmi_status_tandamdsmi_status_tenums.Added checks for the previously ignored return values of
get_nr_cpu_sockets(),get_nr_cpu_cores(), andget_nr_threads_per_core(), plus a guard against a divide-by-zero when a misbehaving driver reports zero sockets or threads.
amd-smi statichanging indefinitely on gfx1153 and gfx950.Added a 60-second timeout to
amdsmi_init()in the CLI so the process exits with a clear error message instead of hanging when the GPU driver is unresponsive.Added
O_NONBLOCKto DRM device open during initialization soopen()returns immediately if the device is wedged.
amd-smi ras --afid --cper-file <file>not showing AFIDs for correctable errors.aca_decode_corrected_errorwas receiving the count ofuint32_telements wheredecode_afidexpected the count ofuint64_telements, causingdecode_error_infoto returnNULLfor all non-standard section types.
amd-smi ras --cper --jsonproducing invalid JSON.Multi-GPU runs emitted a separate JSON array per GPU instead of a single unified array, and
--followmode printed an empty[]every iteration when no new entries existed. Both are now consolidated into a single JSON document.
Exposed
amdsmi_get_afids_from_cperin the Python package.The CPER AFID API was implemented but missing from
py-interface/__init__.py, making it unavailable to Python callers usingfrom amdsmi import ....
Python unittest scripts now append a GTest-style summary after test output.
All
*_test.pyandunit_tests.pyscripts print a colored[PASSED]/[SKIPPED]/[FAILED]block after the standard unittest output. Colors are automatically suppressed when output is not a TTY (for example, file redirection, CI log capture).
Corrected the documented unit of
amdsmi_frequencies_t::frequency.The struct comment claimed frequencies were in MHz, but
amdsmi_get_clk_freq()returns them in Hz. The comment now reads “List of frequencies in Hz”.Also removed the incorrect “in MHz” note from the
currentfield, which is a frequency index, not a frequency value.Updated the Python API reference to state the unit is Hz.
Fabric telemetry APIs returning the wrong status on non-IFoE systems.
amdsmi_alloc_fabric_telemetry(),amdsmi_get_fabric_telemetry_data(), andamdsmi_free_fabric_telemetry()now returnAMDSMI_STATUS_NOT_SUPPORTEDon systems without fabric hardware, consistent withamdsmi_get_gpu_fabric_info().
amd-smi static --clockCSV and human-readable formatting to output frequency levels as strings instead of dictionary objects.
Upcoming changes#
amdsmi_get_gpu_vram_vendor()is deprecated in favor ofamdsmi_get_gpu_vram_info()and will be removed in a future ROCm release. It now emits aDeprecationWarningfrom the Python interface and functions as a wrapper ofamdsmi_get_gpu_vram_info().See AMD SMI deprecations.
HIP (7.14)#
Added#
New HIP APIs:
Execution Context Management: Support for the following APIs for parity with corresponding CUDA APIs:
hipDeviceGetDevResourcereturns the device resource of a given type for a device.hipDevSmResourceSplitByCountsplits SM resources into groups with at least a minimum SM count.hipDevSmResourceSplitsplits SM resources into groups with configurable per-group parameters.hipDevResourceGenerateDescgenerates a resource descriptor from one or more device resources.hipGreenCtxCreatecreates a green context from a resource descriptor.hipExecutionCtxDestroydestroys an execution context.hipDeviceGetExecutionCtxreturns the default execution context for a device.hipExecutionCtxStreamCreatecreates a stream on an execution context with specified flags and priority.hipExecutionCtxGetDevResourcereturns the device resource of a given type for an execution context.hipExecutionCtxGetDevicereturns the device associated with an execution context.hipExecutionCtxGetIdreturns a unique identifier for an execution context.hipStreamGetDevResourcereturns the device resource of a given type for a stream.hipExecutionCtxRecordEventrecords an event on an execution context.hipExecutionCtxSynchronizeblocks until all work on an execution context has completed.hipExecutionCtxWaitEventmakes an execution context wait on an event.
Module Management: Support for the following APIs for parity with corresponding CUDA APIs:
hipLibraryGetGlobalreturns the device pointer and size of a__device__global defined in ahipLibrary_t. MirrorscudaLibraryGetGlobal/cuLibraryGetGlobal.hipLibraryGetManagedreturns the host pointer and size of a__managed__variable defined in ahipLibrary_t. MirrorscudaLibraryGetManaged/cuLibraryGetManaged.
Memory Management: Support for the following APIs for parity with corresponding CUDA APIs:
hipMemDiscardBatchAsyncdiscards a batch of memory ranges asynchronously, allowing the runtime to reclaim resources. MirrorscudaMemDiscardBatchAsync.hipDrvMemDiscardBatchAsyncdriver API variant ofhipMemDiscardBatchAsync, usinghipDeviceptr_tpointers. MirrorscuMemDiscardBatchAsync.hipMemDiscardAndPrefetchBatchAsynccombines discard and prefetch in a single call, enabling the runtime to optimize data movement. MirrorscudaMemDiscardAndPrefetchBatchAsync.hipDrvMemDiscardAndPrefetchBatchAsyncdriver API variant ofhipMemDiscardAndPrefetchBatchAsync, usinghipDeviceptr_tpointers. MirrorscuMemDiscardAndPrefetchBatchAsync.
Introduced an exported no-op function
__hipOnError(void *err_info), invoked fromHIP_UPDATE_ERROR_STATEwhen an API returns a non-success status, enabling debuggers to set breakpoints on a stable symbol. The symbol is exported on ELF (Executable and Linkable Format) platforms via a version script and on Windows viaamdhip.def. Theerr_infoparameter is a pointer to a struct containing the error code, name, and descriptive string.
Optimized#
Enhanced HIP graph replay performance for asynchronous memory allocations. HIP graph replay now reduces overhead for graphs that interleave asynchronous memory allocations with compute. Allocation nodes no longer block during replay — physical memory is reused across nodes instead of being mapped and unmapped on each launch, eliminating the gaps between kernels this pattern previously caused.
Enhanced debug information for illegal memory access errors. In multi-node and multi-GPU environments, it can be difficult to identify the source of a fault. The HIP runtime now includes the hostname, GPU index, and kernel name in GPU fault error messages, improving issue identification and debugging.
Resolved issues#
Resolved an issue where graph allocations that escape their originating graph (that is, allocation nodes without a corresponding free node) failed to remain valid after the graph and its executable instance were destroyed. Allocations created via stream capture were not properly tracked and were incorrectly classified as reusable, leading to premature unmapping during
hipGraphExecDestroyand resulting in memory faults on subsequent access.Resolved an issue where an error propagated from the
hipModuleGetFunctionAPI, causing behavior inconsistent with the corresponding CUDA API. The HIP runtime now suppresses this propagated error to align with expected behavior.Resolved an issue where a stream entering an invalid state during capture could not recover, even after calling
hipStreamEndCapture. The stream failed to return to a clean (None) state, and subsequent calls tohipStreamIsCapturingcontinued to report an invalidated state, preventing reuse. This behavior is now aligned with CUDA semantics.Resolved a race condition in HIP graph nodes. The HIP runtime now correctly manages graph node IDs within each
GraphNodeconstructor to ensure thread safety. This prevents duplicate ID assignment when multiple threads concurrently construct graph nodes (for example, during XLA command-buffer fusion). As a result, nodes are no longer silently dropped from dispatched packets, eliminating uninitialized output buffers and preventing out-of-bounds or corrupted values.Segmentation fault in the
hipMemRetainAllocationHandleAPI when a pointer allocated withhipMallocwas passed. The HIP runtime now validates non-VMM allocations and returns an appropriate error instead.Resolved an issue where
__managed__global variables were misclassified by thehipPointerGetAttributesAPI both before and after kernel access. This behavior has been corrected to align with CUDA semantics.Resolved an issue in the classic graph execution path (RunOneNode and RunNodes) where missing synchronization for child graph nodes caused data races and incorrect results when executing graphs with child nodes under multi-stream parallelism. The HIP runtime now properly synchronizes child graph nodes within the execution path.
Issue in
hipGraphMemsetNodethat caused incorrect validation for flat allocations. For 2Dmemsets, theuserDatawidth/height/depthextents are only initialized byhipMallocPitchandhipMalloc3D; allocations fromhipMallocleave these fields unset, leading to spurious validation failures. The HIP runtime now skipsuserData-based checks when extents are zero and relies onihipMemset3D_validatefor accurate size validation. Additionally, the exec flag is propagated throughihipGraphNodeSetParamsto ensure executable graph updates use the correct validation path.Deadlock caused by
hipMemMapandhipMemUnmapoperations on the null stream that could lead to hangs. The HIP runtime now implements proper synchronization to all devices with access to a mapped pointer before unmapping it.Resolved an issue where streams created within an execution context remained usable after the context was destroyed, which did not align with CUDA behavior. The HIP runtime now flags such streams as detached when their execution context is destroyed and returns
hipErrorStreamDetachedif they are subsequently used.
Known issues#
Kernels using
cooperative_groups::reduce()with block dimensions whose .y or .z component is different from 1 may produce incorrect results or fail to launch.
hipBLAS (3.5.0)#
Added#
The following APIs have been added:
hipblasSetBatchAlphaStride()hipblasGetBatchAlphaStride()hipblasSetBatchBetaStride()hipblasGetBatchBetaStride()hipblasGetVersion()hipblasGetProperty()
Resolved issues#
Guarded x86-specific code and compiler options.
hipBLASLt (1.4.1)#
Added#
Introduced a new API:
hipBLASLt-ext::isSolutionSupported(). This API is used by the new hipBLASLt integration from rocBLAS to check if a given solution is supported for a specific GPU and problem type.
hipCUB (4.5.0)#
Added#
Support for the gfx1250 architecture.
Upcoming changes#
CCCL 2.8.x compatibility is deprecated. hipCUB and rocThrust will be brought forward to CCCL 3.0.x compatibility in an upcoming release.
hipFFT (1.0.24)#
Added#
Support for the gfx1250 architecture.
hipRAND (3.4.0)#
Added#
Support for the gfx1250 architecture.
hipSOLVER (3.5.0)#
Changed#
Minor internal changes.
hipSPARSE (4.6.0)#
Added#
hipsparseCreateBsrandhipsparseCreateConstBsrto enable BSR format support in generic routines.BSR format support to
hipsparseSpMVandhipsparseSpMM.
Resolved issues#
Issue where calling
hipsparseSpMVmultiple times with differenthipsparseOperation_t,hipsparseSpMVAlg_t, or compute-datatypes using the same sparse matrix descriptor resulted in errors.
Upcoming changes#
The routines
hipsparseXcsrgeamNnz,hipsparseScsrgeam,hipsparseDcsrgeam,hipsparseCcsrgeam, andhipsparseZcsrgeamhave been deprecated and will be removed in a future release. UsehipsparseScsrgeam2_bufferSizeExt,hipsparseDcsrgeam2_bufferSizeExt,hipsparseCcsrgeam2_bufferSizeExt,hipsparseZcsrgeam2_bufferSizeExt,hipsparseXcsrgeam2Nnz,hipsparseScsrgeam2,hipsparseDcsrgeam2,hipsparseCcsrgeam2, andhipsparseZcsrgeam2instead.
hipSPARSELt (0.2.9)#
Added#
Support for the following data type combinations for the LLVM target gfx942:
FP8_FNUZ(E4M3_FNUZ) inputs, F32 output, and F32 Matrix Core accumulation.
BF8_FNUZ(E5M2_FNUZ) inputs, F32 output, and F32 Matrix Core accumulation.
MIOpen (3.5.2)#
Changed#
[Conv] Naive convolution solvers are now skipped by default during find when any non-naive solver succeeds across any algorithm. Set
MIOPEN_NAIVE_DISABLE_IF_ALT=0to restore the previous behavior.
Resolved Issues#
[RNN] RNN workspace tensor descriptor integer overflow.
[Conv] Enabled grouped Composable Kernel (CK) xdlops fwd, bwd, and wrw convolution (2D and 3D) for tensors whose strides exceed the int32 range.
[Conv]
miopenStatusInternalErrorthrown by Find on depthwise NHWC grouped convolutions underMIOPEN_FIND_MODE=NORMAL.
RCCL (2.30.4)#
Added#
Compatibility with NCCL 2.30.4, NCCL 2.29.7, and NCCL 2.28.9
Proxytrace profiler plugin and core proxy-diagnostics hooks (
RCCL_PROXYTRACE).ncclBarrierSessionLSA validation for barrier sessions.Symmetric-memory ReduceScatter kernel (
RailA2A_LsaLD) on gfx942/gfx950.Bias (accumulation)
AllReduceon gfx1250.Optimized scale-up
ReduceScatter,AllGather, andAllToAllkernels.ROCprofiler-SDK coverage for
ncclCommGrowandncclCommGetUniqueId.Auto-enabled P2P batching for gfx950 in combination with non-AINIC NICs.
Display HIP/ROCm runtime versions in
NCCL_DEBUGoutput.Detect ROCm version via core symlink for multi-architecture installs.
Skip DDA IPC initialization for directMode and MNNVL topologies.
Load versioned
libamd_smiSONAME instead of an unversioned symlink.Pythonic API bindings under
bindings/nccl4py/(RCCL fork of NVIDIAnccl4pyv0.2.0). Provides Python access to RCCL collectives via Cython bindings, an on-diskcuda.coreHIP shim for ROCm hosts withoutcuda-bindings/cuda-core, and RCCL-only collective wrappers (ncclAllReduceWithBias,ncclAllToAllv).RCCL examples to the repository.
RCCL host APIpull-in from NCCL 2.30.
Changed#
Enabled WarpSpeed auto mode for grow communicators.
Refactored AllGather algorithm selection; hierarchical AllGather now enabled by default for multi-node.
Swapped legacy
net_ibwith thenet_ibimplementation from NCCL 2.29.Skip per-warp channel LDS copy when
warpCommis disabled.Hardened proxy RPC setup against malformed peer input.
Changed the bootstrap AllGather to use the bidirectional ring (N/2 steps) by default on the socket OOB path.
NCCL_BOOTSTRAP_BIDIR_ALLGATHERnow defaults to1; set it to0to fall back to the unidirectional ring. The net OOB path (NCCL_OOB_NET_ENABLE) and its bidirectional variant (NCCL_BOOTSTRAP_BIDIR_NET) remain off by default.NCCL_PXN_C2Cis kept default-off (0); upstream NCCL defaults it to1since 2.28. The C2C PXN routing path is currently not applicable on AMD hardware.
Removed#
Removed NPKit profiling support (build option
ENABLE_NPKIT, headers, device and proxy instrumentation, install script flag--npkit-enable, and related documentation and tooling). Use the profiler plugin API for profiling instead.Removed Kernel COLLTRACE support, including the
COLLTRACEbuild option, device-side collective trace buffers, debug kernel variants, and related install/CI wiring. The host latency profiler is unchanged.Removed legacy
ENABLE_PROFILINGdevice profiling support and thePROFILEbuild option. Use the profiler plugin API instead.
Optimized#
Tuned symmetric memory kernels.
Parallelized communicator destruction across child processes to reduce teardown latency.
Resolved issues#
ncclCommGrowchannel-count divergence causing incorrect collective routing.A
ncclCommGrowhang when growing to an 8-rank single-node communicator.Symmetric LDS under-reservation in legacy (non-device-linker) builds.
LL128 protocol correctness for gfx1250.
XGMI topology mapping for multi-system (NPS) nodes.
gfx950 collective hang caused by a tuner race condition.
net_ib_cast: gate CTS offload path on per-connection state.net_ib: avoid flagging a non-fatal Isend CTS no-match as a fatal error.Acquire-tail polling for gfx950 P2P host staging.
LDS overflow in device-linker builds.
Symmetric memory correctness issues.
ncclCommFreeto free symmetric window objects automatically (NCCL 2.29.7 defect).DDA IPC initialization skip on architectures that do not run DDA.
Static build (
BUILD_SHARED_LIBS=OFF) failing withinstall(EXPORT "rccl-targets" ...)error whenfmtis fetched viaFetchContent. Thefmt-header-onlytarget is now scoped to the build interface and excluded from RCCL’s exported usage requirements.Proxy channel staging buffers ignoring the new GDR mode selection on HIP < 7.12 builds. The legacy
#elsebranch insendProxyConnect/recvProxyConnectnow honorsresources->useDmaBuf, so peermem-equipped hosts on older HIP no longer fall through tohsa_amd_portable_export_dmabufwhen peermem was selected in*ProxySetup. Workaround for affected RCCL builds:NCCL_DMABUF_ENABLE=0.RCCL initialization failing (
Failed to find ROCm runtime library) on runtime-only ROCm trees that ship no unversionedlibhsa-runtime64.sodeveloper symlink (e.g. TheRock multi-arch pip-wheel/opt/rocm-lessdeployments). RCCL no longerdlopens the HSA runtime by name; instead it directly linkshsa-runtime64::hsa-runtime64(already a hard transitive dependency via the HIP runtime) and bindshsa_init,hsa_system_get_info,hsa_status_string, andhsa_amd_portable_export_dmabufto those symbols. The linker recordsDT_NEEDED libhsa-runtime64.so.1and resolves it through librccl’s existing RPATH, removing the SONAME version-string fragility and load-scope (RTLD_LOCAL) issues. TheRCCL_ROCR_PATHoverride is no longer needed and has been removed.
Known issues#
Elastic-buffer support for GIN (multi-segment symmetric memory windows backed by a mix of device and CPU/
HOST_NUMAmemory, exposed throughNCCL_ELASTIC_BUFFER_REGISTERandNCCL_SYM_REUSE_SYSMEM_HANDLES) was newly synced from upstream and compiles on ROCm, but is unverified on AMD hardware.
RDC (1.3.1)#
Added#
59 new telemetry fields to close the gap with Device Metrics Exporter (DME).
Energy:
RDC_FI_GPU_ENERGY— total energy consumed viaamdsmi_get_energy_count().Temperature:
RDC_FI_GPU_JUNCTION_TEMP— dedicated junction/hotspot temperature field.Clock ranges:
RDC_FI_GPU_CLOCK_MIN,RDC_FI_GPU_CLOCK_MAX— min/max GPU clock frequencies. Additional clock types:RDC_FI_SOC_CLOCK,RDC_FI_VCLK0,RDC_FI_DCLK0.Memory:
RDC_FI_GPU_MEMORY_FREE(free VRAM), visible VRAM (RDC_FI_GPU_VIS_VRAM_TOTAL/USED/FREE), GTT memory (RDC_FI_GPU_GTT_TOTAL/USED/FREE).PCIe:
RDC_FI_PCIE_SPEED,RDC_FI_PCIE_MAX_SPEED,RDC_FI_PCIE_REPLAY_ROLLOVER,RDC_FI_PCIE_BANDWIDTH_BIDIRwith sentinel value handling for APU platforms.Instantaneous activity:
RDC_FI_GPU_GFX_BUSY_INST,RDC_FI_GPU_VCN_BUSY_INST,RDC_FI_GPU_JPEG_BUSY_INSTfromgpu_metrics.xcp_stats.ECC deferred errors: 19 per-block deferred error fields (
RDC_FI_ECC_*_DE) plusRDC_FI_ECC_DEFERRED_TOTAL, readingdeferred_countfromamdsmi_error_count_t.Violation/throttle metrics: 19 new
RDC_HEALTH_*fields covering accumulated counts and percentages for processor hot, PPT power, socket/VR/HBM thermal, gfx clock host limits, and low utilization violations viaamdsmi_get_violation_status(). Driver 1.8 XCP/XCC fields return NOT_SUPPORTED on older platforms.
An automated DME-RDC metric sync check.
New script
tools/dme_rdc_metric_sync_check.pyparses DME’s protobuf metric definitions and compares against RDC field enums via a curated mapping file (tools/dme_rdc_metric_mapping.json).New GitHub Action (
.github/workflows/rdc-dme-sync-check.yml) runs weekly and on PRs touching metric definitions. Automatically creates GitHub issues when DME adds metrics not yet tracked in RDC.
Changed#
Bumped gRPC from 1.67.1 to 1.78.1. See ROCm/TheRock#4172.
Removed#
Removed RVS integration. RVS is built independently of RDC and TheRock, so its integration has been disabled.
BUILD_RVSnow defaults toOFF(#7116).
Resolved Issues#
The
Failed to insert module: N3amd3rdc10RdcRVSLibEerror.
rocBLAS (5.5.0)#
Added#
Per-batch
alpha/betasupport for Level 2 batched and strided-batchedgemvviarocblas_set_batch_alpha_strideandrocblas_set_batch_beta_stride(device pointer mode).Per-batch
alphasupport for Level 2 batched and strided-batchedger,geru, andgercviarocblas_set_batch_alpha_stride(device pointer mode).Per-batch
alpha(scalar vector) API support foraxpy_batched,axpy_strided_batched, and their_exforms throughrocblas_set_batch_alpha_stridewhenrocblas_handleis inrocblas_pointer_mode_device.Support custom build with CMake arguments
GPU_TARGET=amdgcnspirvwhen usingBUILD_WITH_TENSILE=OFF.
Resolved issues#
Incorrect results on gfx12 in
trsv,asum, andnrm2with largebatch_countexceeding 65536.gemmwith very largeKor inner product leading dimension for which element byte offset overflowedint32.install.sh/rmake.pybuilds whenCMAKE_GENERATOR=Ninjais set.
rocFFT (1.0.38)#
Added#
Generalized multi-device computations for transforms such that each length dimension is fully covered either in all the input field’s bricks or in all the output field’s bricks, regardless of the type and placement of the transform. Specifically for real transforms, the innermost length dimension must be fully covered in all the input (respectively, output) field’s bricks for real forward (respectively, inverse) transforms.
Support for the gfx1250 architecture.
Optimized#
Improved performance of even-length real transforms with real lengths between 512 and 8192, extending to larger lengths (up to around 32768) on devices with more LDS.
Changed#
Modified the
rocfft_plan_get_work_buffer_sizeandrocfft_execution_info_set_work_bufferfunctions to get and set work memory for the current HIP device.Multi-device transforms can require work memory on any of the devices used for input or output bricks, and the current device set at plan creation. Users should loop over the set of devices used by the input/output of the transform and check the work memory requirements for each device.
Resolved issues#
Possible incorrect results for multi-dimensional real transforms with small lengths (for example, smaller than 128) along the two fastest-varying dimensions.
ROCgdb (16.3)#
Added#
Improved core dumping speed for AMD GPU programs with the
gcorecommand, particularly for kernels that use small amounts of VRAM.A new
catch hiperrcommand that stops the inferior when a HIP API call returns an error. The convenience variable$_hiperrholds the error code at the catchpoint.
rocJPEG (1.6.0)#
Added#
A logging mechanism for core APIs that can be controlled by setting the
ROCJPEG_LOG_LEVELenvironment variable.
ROCm Compute Profiler (3.7.0)#
Added#
--bench-onlyprofile mode option to run the roofline microbenchmark standalone (without profiling an application or collecting performance counters). No application run is required. Useful for regeneratingroofline.csvin an existing workload directory or running the microbenchmark on systems where only HIP is available but ROCprofiler-SDK is not.LDS arithmetic intensity as a roofline plot point and analysis database field.
Backward compatibility for live attach mode to work with older ROCm 7.x.x releases.
Support for GPU metrics on gfx1150 and gfx1152 hardware.
Roofline benchmarking support for gfx1150 and gfx1152 hardware.
Operator statistics and per-operator summary table in the analysis output of torch operator profiling, including the following statistics for every torch operator and its children:
Number of invocations.
Number of kernel dispatches.
Min/Max/Mean and Total duration of kernel dispatches.
Changed#
Moved
--guiand--tuianalyze options to experimental status. These features now require the--experimentalflag to be enabled (for example,rocprof-compute analyze --experimental --gui).--output-format csvin analyze mode now uses the database analysis workflow and produces one CSV per analysis view. Requires--format-rocprof-output rocpdand no longer prints the report to the terminal (matchingdbformat).Changed ratio metric aggregation from
AVG(A/B)(arithmetic mean of per-dispatch ratios) toSUM(A)/SUM(B)(ratio of totals) across all analysis YAML configurations and all GPU architectures.SUM(A)/SUM(B)is a weighted average where each dispatch contributes proportionally to its denominator magnitude (duration, access count, cycle count). Single-dispatch workloads are unaffected (mathematically identical). Multi-dispatch workloads with different kernels or varying durations will see corrected values.--torch-tracenow captures backward-pass and nested operators that were previously missed or misattributed. The first run builds and caches a helper under~/.cache/rocprofiler-compute/, so it takes longer than later runs.Profile workload output folder name for Strix Halo series (gfx1151) changed from
strix_halotordna35_halo.Unified accumulator handling across profile and analyze so each
_ACCUM-suffixed counter is preserved instead of collapsing toSQ_ACCUM_PREV_HIRES.Reworded the N/A metric-evaluation warning to “divide-by-zero or empty counter data” (the prior “missing counter data” message could only fire for non-missing causes).
PC sampling in profile mode now opts in via the
--experimental --pc-samplingoption. Explicit-b 21/--block 21is no longer accepted on its own.PC sampling profiling now emits only
ps_file_results.json. The per-sample, kernel-trace, and agent-info CSV artifacts are no longer produced or consumed by analysis.PC sampling analysis without
-know shows the full per-instruction table across all kernels (with aKernel_Namecolumn), identical in schema to the single-kernel view, instead of a collapsed source-line summary.--pc-sampling-intervalnow defaults to a method-appropriate value (512 microseconds forhost_trap, 1048576 cycles forstochastic). Stochastic intervals are validated to be a power of 2 and at least 65536; previously invalid values were passed through silently.
Removed#
--pathand--subpathoptions have been removed from profile mode. Use--output-directoryinstead.Removed redundant
if (X != 0) else Nonedivide-by-zero guards from metric equations across all analysis YAML configurations. Division by zero is already handled by the metric evaluation engine, which returns"N/A"forinfandNaNresults.
Optimized#
Flattened the analyze-mode PMC dataframe to a single-index frame.
Eliminated “missing counter” warnings during analyze when profile-mode
-bwas used. Analyze now skips metrics outside the selected blocks.
Resolved issues#
Roofline panel L1/L2 bandwidth and arithmetic intensity on gfx942 and gfx950 now use the correct 128B cache line, matching the values reported in the Speed-of-Light and vL1D/L2 cache panels for the same run. Bandwidth values on these architectures are 2x and AI values are 0.5x compared to prior releases.
“ROCPROF_OUTPUT_PATH environment variable must be set” crash that aborted profiling when
ROCPROF_OUTPUT_PATHwas unset or empty (observed when profiling shell-script targets such asrocprof-compute profile -o /tmp/out -- bash run.sh). The collector now silently falls back to a documented default instead of aborting.infdisplay for metrics with zero-denominator counters (e.g., L2-Fabric Write Latency when no write requests are issued). The metric evaluation path now catchesinfscalar results and returns"N/A", consistent with existingNaNhandling.Kernels with missing counter data after iteration multiplexing imputation are now excluded from metrics calculations. A warning at analysis time lists the affected kernels. Their execution times remain visible in Top Stats.
Empirical roofline benchmark to correctly produce double the Matrix BF16 Gflop/s on gfx90a (AMD Instinct MI200 Series) GPUs.
PC sampling collection now runs when requested via the
pc_samplingblock alias (--block pc_sampling), instead of being silently skipped.
Upcoming changes#
Roofline support for RDNA3.5 gfx115x devices.
Known issues#
On gfx1151,
TCP_REQ_sumis zero in single-pass counter collection, so the relatedGL0metrics always reports zero. This will be fixed in a future release.On gfx1151,
$max_mclkis not automatically populated in sysinfo, so the related bandwidth metrics may be incorrect. Useamd-smito obtain the maximum memory clock and provide it via--specs-correction.In analyze mode,
--nodesis not suitable for multi-rank analysis. Use--pathwith the rank-specific path (for example,--path workload/1) instead of--path workload --nodes 1.
ROCm Systems Profiler (1.7.0)#
Added#
--output-formatflag forrocprof-sys-runandrocprof-sys-sampleto select output format(s) in a single, intuitive option:proto(Perfetto),rocpd(RocPD database), andjson/text(Timemory profile;txtaliasestext). Tokens are space- or comma-separated and authoritative — only the listed formats are produced. The existing--trace,--profile,--flat-profile, and--profile-formatflags and their environment variables remain available, but cannot be combined with--output-formaton the same command line.Unified-memory profiling reports (
unified_memory.txtandunified_memory.json) summarizing KFD page fault and page migration events, including per-GPU counts, trigger breakdown (gpu_page_fault,cpu_page_fault,prefetch), and Host-to-Device/Device-to-Host migration bandwidth. Enable withROCPROFSYS_USE_UNIFIED_MEMORY_PROFILING=ON; requiresHSA_XNACK=1on an XNACK-capable AMD GPU and ROCm 7.13 or later. For standalone ROCprofiler-SDK installations, ROCprofiler-SDK 1.2.2 or later. The required KFD tracing domains are enabled automatically.Dedicated
ROCPROFSYS_UNIFIED_MEMORY_OUTPUT_PATHsetting for routing unified-memory profiling reports to an explicit output directory.MPI-rank-based console output filtering features controlled with CLI arguments:
--rank-filter-logsand--rank-filter-id.GPU Hardware Performance Counter (PMC) sampling via the ROCprofiler-SDK device counting service. Periodic per-GPU hardware counters are collected alongside existing PMC sources and exposed in both Perfetto and RocPD outputs. Specify counters with
ROCPROFSYS_GPU_PERF_COUNTERS(comma-separated; suffix:device=Nto target a specific GPU). Requires ROCprofiler-SDK 0.6.0 or later (ROCm 6.4.0+).GPU graphics and memory clock frequency metrics (
gfx_clock,mem_clock) via AMD SMI, exposingcurrent_gfxclkandcurrent_uclkin MHz as PMC samples. Configure viaROCPROFSYS_AMD_SMI_METRICS=gfx_clock,mem_clock.Progress bars during trace cache post-processing: perfetto generation (
sequential dispatch) shows one bar per buffered_storage file in turn; rocpd generation (multithreaded dispatch) shows a single aggregate bar accumulating updates from all worker threads.Per-stream Perfetto tracks (
HIP Activity Stream {N}) for kernel dispatch, scratch memory, and memory copy events in the trace-cache path, matching the buffered tracing behavior. Controlled viaROCPROFSYS_ROCM_GROUP_BY_QUEUE(default:false— group by HIP stream).--list-domainsand--list-operations <domain>torocprof-sys-avail. These new options allow the user to query more information about available ROCm domains (used inROCPROFSYS_ROCM_DOMAINS) and their operations.rocprofsys_push_trace_with_args, a public API for pushing a user trace region with a pre-serialized argument string attached. The arguments are recorded in cached tracing mode (the default); in legacy tracing (ROCPROFSYS_TRACE_CACHED=OFF) they are ignored.
Changed#
Split PMC AMD SMI, ROCprofiler-SDK, and procfs wrappers into standalone internal backend targets under
source/lib/backends, replacing the old PMCdriverslayout.Removed Boost as a Dyninst dependency by replacing Boost usage with in-tree
dyncompatshims and C++17 standard library equivalents; Bundled Dyninst now requires GCC ≥ 10.The
trace-openmpconfiguration preset no longer includesHSA_API, by default.rocprof-sys-sample— Aligned flags withrocprof-sys-run. Renamed--freq,--cputimeand--realtimeto--sampling-freq,--sampling-cputimeand--sampling-realtime, respectively. Old flags are still handled as a part of backward compatibility.Allowed presets to use
--gpus/--cpu/--ai-nicsflags without--device/--hostflags.Minimum required C++ standard raised from C++17 to C++20. timemory now builds against the
rocprofiler-systems-cppstd20branch and spdlog was bumped to v1.17.0 (bundled fmt v12).Supported environment variables for rank detection: removed
MPI_RANKandMPI_LOCALRANKID, addedPMI_RANKandSLURM_PROCID.
Resolved issues#
An issue affecting the ElfUtils build on GCC 15.
Output directory of
rocpdfiles was not unique when re-attaching to the same process withrocprof-sys-attach. Now, each session will have a unique output folder.CPU-related counters (like CPU frequency) were missing from
rocpdoutput.The “group-by-queue” option was not handled correctly in the Perfetto generator.
The visualization of GPU counters made it look like there was activity between kernel dispatches.
A hang due to mismatched versions of
binutilsbetween system and bundled versions. Ensure that the vendored version ofbinutils’s symbols are hidden.The ASAN build on TheRock.
An issue that could cause certain events to appear in trace, when they should have been excluded due to roctx region filtering.
A CMake issue that caused the wrong version of
elfutilsto be linked when building for TheRock. The system version ofelfutilswas used, rather than the vendored version causing package install failures.Documentation and internal config handling that referenced the non-existent
ROCPROFSYS_USE_TRACE. The Perfetto tracing backend is controlled byROCPROFSYS_TRACE; settingROCPROFSYS_USE_TRACEhad no effect.A pre-main
rocprof-sys-runSIGSEGVinrocprofiler_configure()when profiling OpenMPI GPU-aware MPI workloads.
Known issues#
A push/pop trace count imbalance can occur for workloads that instrument runtime internals such as OMPT. When pushes exceed pops, rocprof-sys completes finalization, emits a warning, and omits any still-open trace regions from the generated trace output.
rocPRIM (4.5.0)#
Added#
generate_resource_spec.cppto the test directory, built as a new target by CMake. It generates the resource spec file required by CTest when running tests in parallel.Support for the gfx1250 architecture.
A parallel
device_topk, which finds the largest/smallest K elements from an input array of keys.
Changed#
Updated the documentation on how to run rocPrim tests on multiple GPUs in parallel.
Removed#
Removed the
GenerateResourceSpec.cmakescript - it is replaced by the addedgenerate_resource_spec.cppcode above.
ROCprofiler-SDK (1.3.2)#
Added#
API:
Streaming Performance Monitor (SPM) counter collection support (beta):
New experimental API in
rocprofiler-sdk/experimental/spm.h.GPU-timestamped counter values alongside kernel dispatch information.
spm_supportalong with reserved padding torocprofiler_counter_info_v1_t.
rocprofv3 (CLI):
SPM counter collection support in
rocprofv3(beta):--spm <counter>flag to specify counters for SPM collection.--spm-sample-intervaland--spm-sample-interval-unitparameters to configure sampling rate.--spm-beta-enabledflag or theROCPROFILER_SPM_BETA_ENABLEDenvironment variable to opt in to the beta SPM feature viarocprofv3. For API-based usage, setROCPROFILER_SPM_BETA_ENABLED.--spm-configoption inrocprofv3-availto list available SPM configurations.
JSON and rocpd output format support for SPM.
Documentation:
--spm-configdocumentation torocprofv3-availusage guide.
Changed#
Bumped rocpd schema to version 3.0.1 which supports NIC agent types.
rocRAND (4.5.0)#
Added#
Support for the gfx1250 architecture.
rocSHMEM (3.5.0)#
Added#
New APIs:
rocshmem_alignrocshmem_callocrocshmem_buffer_unregister_allrocshmem_buffer_register/unregisterfor GDA backendrocshmem_reduce_on_streamrocshmem_team_split_2D
Tile-granular RMA operations for the IPC backend.
Host-initiated RMA operations in the IPC backend for the non-MPI bootstrapping path.
Team creation using non-contiguous parent teams in the IPC backend.
Python bindings for memory-management APIs.
Python bindings coverage for team APIs.
Support for GPU-initiated operations using the SDMA engines.
ASAN build support.
Changed#
Changed default
ROCSHMEM_DEBUG_LEVELfromWARNtoERROR.Performance optimizations:
Separated put/get memcpy primitives to apply correct cache coherence semantics and fences.
Use constmem for backend variables and provider muxing.
Updated O(1) IPC availability check using pattern detection.
rocSOLVER (3.35.0)#
Added#
Support for the gfx1250 architecture.
Optimized#
Refined
potf2_run_smalldispatch byBS2to avoid over-generating specialized kernels while preserving runtime bounds checks onnb.
Resolved issues#
An out-of-bounds read in
bdsqr_lower2upper.An invalid kernel launch in the small-matrix LU factorization (GETF2/GETRF) for large batch counts.
A synchronization issue in GETRI and TRTRI on wave 32 architectures.
rocSPARSE (4.7.0)#
Added#
rocsparse_spildlt0routine for incomplete LDL’ factorization with zero fill-in (ILDLT(0)) for symmetric (real) or Hermitian (complex) sparse matrices in CSR format, with strided batched computations enabled.
Upcoming changes#
Deprecated the
rocsparse_indextype_u16index type. It is no longer supported and will be removed in a future release. Userocsparse_indextype_i32orrocsparse_indextype_i64instead.
rocThrust (4.5.0)#
Added#
Support for the gfx1250 architecture.
One-time runtime warning for hipstdpar algorithms running on GPUs that support xnack when
__HIPSTDPAR_INTERPOSE_ALLOC__or__HIPSTDPAR_INTERPOSE_ALLOC_V1__are not enabled and xnack is off.
Upcoming changes#
CCCL 2.8.x compatibility is deprecated. hipCUB and rocThrust will be brought forward to CCCL 3.0.x compatibility in an upcoming version.
rocWMMA (2.2.1)#
Added#
Support for the gfx1250 architecture.
ROCm known issues#
ROCm known issues are noted on GitHub. These issues will be fixed in a future ROCm release. For known issues related to individual components, review the ROCm component changelogs.
PyTorch might display a warning when libnuma is not installed#
PyTorch might display a warning when importing on Linux if the system libnuma package is not installed on some Radeon graphics products, such as Radeon AI PRO R9600D. As a workaround, install the system libnuma package or configure the library path to use the ROCm-bundled NUMA libraries.
Significantly longer LLM warmup times on some Radeon GPUs#
Significantly longer warmup times might be observed in some large language model inference workloads on AMD Radeon GPUs using vLLM versions v0.21.0 through v0.25.0. As a workaround, use a vLLM release earlier than v0.21.0 or upgrade to vLLM v0.26.0 or later, which includes a fix for this issue.
Lower-than-expected LLM inference performance on RDNA3 Radeon GPUs and Ryzen AI MAX / MAX+ Series Processors#
Lower-than-expected performance might be observed in some large language model inference workloads, including vLLM FP16 decode workloads with batch sizes of 8 or greater, on AMD Radeon RX 7900 Series Graphics, AMD Radeon RX 7800 XT Graphics, and AMD Ryzen AI MAX / MAX+ Series Processors when using PyTorch versions earlier than 2.14. As a workaround, set the TORCH_BLAS_PREFER_HIPBLASLT=1 environment variable to use the hipBLASLt backend. This setting becomes the default for these architectures in PyTorch 2.14.
SGLang default settings and some models might cause failures on Radeon GPUs#
ROCm 7.14 introduces initial SGLang support for AMD Radeon GPUs. Radeon GPU users should disable AITER and unset SGLANG_ROCM_FUSED_DECODE_MLA, as both are enabled by default in the SGLang Docker image and might cause some workloads to fail:
export SGLANG_USE_AITER=false
export SGLANG_ROCM_FUSED_DECODE_MLA=false
Additionally, some models might not function correctly on Radeon GPUs, including certain Mixture-of-Experts (MoE) models (such as GPT-OSS-20B and MiniMax-M2.7) and Qwen3-ASR models. Users experiencing these issues are recommended to use the latest upstream SGLang versions, which will include the necessary fixes once they are merged. See the SGLang environment variables reference for more details.
ROCProfiler SPM sessions can remain in a stale state after abrupt termination#
If a Streaming Performance Monitors (SPM) session is terminated abruptly (for example, with Ctrl+C), KFD-side SPM resources might not be released cleanly. When this happens, the KFD-side SPM resources can remain in a stale state, which might cause subsequent SPM profiling sessions to hang or fail to start with the error Unable to acquire KFD thread: 4096. To recover, if the profiling process is still running, terminate it manually. If the error persists, a system reboot is currently required to restore the GPU to a usable state for SPM profiling. This issue is under active investigation for a fix.
rocprof-compute might report inflated Avg values with per_kernel normalization#
When using rocprof-compute with per_kernel normalization, the reported Avg value for certain normalized metrics might be incorrectly inflated and can exceed the corresponding Min and Max values. This issue affects analysis results only. As a workaround, use an alternative normalization unit (-n/--normal-unit) until a fix is available.
rocALUTION and hipTensor are not included in the HPC Expansion tarball#
The amdrocm-hpc meta-package installs rocALUTION and hipTensor, but there is no dedicated HPC Expansion tarball for tarball-based installations. The standard ROCm tarballs include both libraries.
HIP SPIR-V kernels might segfault on first launch#
HIP kernels compiled with the SPIR-V target (--offload-arch=amdgcnspirv) might segfault on first kernel launch at hipLaunchKernel. The failure affects both library-level workloads such as rocBLAS and standalone HIP applications built against the SPIR-V offload bundle. Applications compiled for a native GPU architecture target are not affected. As a workaround, compile using a direct GPU architecture target instead of --offload-arch=amdgcnspirv.
RCCL might show degraded performance on multi-node configurations#
RCCL operations with message sizes in the 64 MB to 512 MB range might show suboptimal performance on multi-node configurations. This might severely impact production workloads. Llama 3 405B is a known affected workload; additional workloads might also be affected. As a workaround, disable the fault injection path in the RCCL CMake file:
option(FAULT_INJECTION "Enable fault injection" OFF)
Alternatively, add the following CMake flag during compilation:
-DFAULT_INJECTION=OFF
ROCm resolved issues#
The following notable issues have been fixed in ROCm 7.14.0.
ROCm Compute Profiler failed when profiling bash scripts or commands#
Previously, running a bash script or command as a target for ROCm Compute Profiler failed because bash overwrote the required environment variables.
LLVM-based compilers failed when compiling half-precision vector operations#
Previously, LLVM-based compilers failed, returning the Failed to find subregs! error message in SIInstrInfo::copyPhysReg, when compiling half-precision vector operations with optimization enabled at levels -O1 to -O3.
hipBLAS test suites returned non-zero exit codes on Windows#
Previously, when using hipBLAS on Windows, the test suites returned non-zero exit codes even when all mathematical correctness tests passed, blocking automated testing workflows.
Illegal memory address error when using placement new with device function returns#
Previously, HIP kernels that used placement new to construct objects in hipMalloc-allocated device memory crashed with a hipErrorIllegalAddress error when a __device__ function return value was passed as the constructor argument for non-trivially copyable types.
GPU kernels failed to launch in ASan builds with large thread counts#
Previously, when building GPU libraries with ASan enabled, kernels configured with large thread counts failed to launch with an HSA_STATUS_ERROR_INVALID_ISA error.
ASan prevented multi-architecture HIP binary builds from launching#
Previously, HIP applications built with ASan enabled and targeting multiple GPU architectures failed to launch with RuntimeError: .hipFatBinSegment size N is not a multiple of wrapper size (24) and RuntimeError: Unexpected magic 0x00000000 at wrapper i error messages.
ROCm Systems Profiler overwrote ROCPD output after process re-attachment#
Previously, when using rocprof-sys-attach to re-attach to a previously profiled process, the ROCPD output database files (.db) were written to the initial session’s output directory instead of a new timestamped directory.
hipCUB DeviceMerge large-size stress test failed with out-of-memory error on gfx1150#
Previously, on gfx1150 APUs, the hipCUB DeviceMerge large-size stress test (MergeLargeSizeIterators) failed with an out-of-memory error when running ROCm 7.12.0. Standard DeviceMerge test cases were not affected.
HIP kernel launch limit caused failures for some models#
Previously, with PyTorch 2.10, some models hit the HIP kernel launch limit of 2³² kernel launches within a single process, causing HIP kernel launch errors. One known affected model was black-forest-labs/flux.
Non-deterministic GPU memory faults when passing large data structures on MI300X#
Previously, applications running on AMD Instinct MI300X GPUs that passed large, complex data structures between device functions using scratch memory encountered non-deterministic GPU memory access faults and became unresponsive when compiler optimizations minimized the number of copy operations.
ROCm upcoming changes#
Future releases will add support for:
Additional ROCm Core SDK components.
Domain-specific expansion toolkits (data science, life sciences, finance, simulation, and other HPC domains).
More AMD hardware support.
AMD SMI deprecations#
The AMD SMI library will deprecate the following APIs. Certain APIs will be deprecated with or without a replacement; see the following tables for details. We suggest updating your code to use the replacement identifiers before the targeted removal releases.
Planned removal in the next release#
The following APIs, defines, enums, and struct fields are deprecated and scheduled for removal in the next major release.
APIs#
Deprecated |
Replacement |
|---|---|
|
No replacement; functionality removed |
|
|
|
No replacement; functionality removed |
|
Python: use the |
Defines and enums#
Deprecated |
Replacement |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
No replacement; constant removed |
|
No replacement; private symbol, do not use |
|
No replacement; private symbol, do not use |
amdsmi_gpu_metrics_t field type widening#
The following fields in amdsmi_gpu_metrics_t will change from uint32_t to uint64_t to support next generation AMD Instinct counter ranges:
gfx_activity_accmem_activity_accpcie_nak_sent_count_accpcie_nak_rcvd_count_accpcie_lc_perf_other_end_recovery
Recompile any code that reads these fields. Any assignments into fixed-width 32-bit variables must be updated to use 64-bit types.
Planned removal after the next release#
The following APIs, types, and enums are deprecated and will be removed sometime after the next major release.
APIs#
Deprecated |
Replacement |
|---|---|
|
|
|
|
|
|
|
|
|
|
Types#
amdsmi_compute_partition_type_tamdsmi_compute_partition_mem_alloc_mode_t
Enums#
Deprecated |
Replacement |
|---|---|
|
|
|
|
|
|
|
|
|
|