Skip to content

ROCm Core SDK 7.14.1 Release

Choose a tag to compare

@JeniferC99 JeniferC99 released this 31 Aug 17:30
· 655 commits to main since this release
f51dc6c

ROCm Core SDK 7.14.1 release notes

Release highlights

The following are the notable changes in ROCm 7.14.1.

Restored RCCL collective performance on InfiniBand

RCCL's InfiniBand fault-injection test instrumentation, which was compiled and active by default in ROCm 7.14.0, has been disabled, restoring collective performance for distributed training workloads on AMD Instinct™ MI300X GPUs, including JAX-based Llama 3 and Llama 3.1 training.

Fixed OpenBLAS and LAPACK build failures with amdflang

An upstream LLVM regression in ScalarEvolution::LoopDisposition, which shipped in ROCm 7.14.0 before its upstream revert could be picked up, has been reverted in the ROCm LLVM fork, restoring amdflang builds of OpenBLAS and LAPACK.

ROCm 7.14.1 doesn't include any other significant changes. For additional release information, refer to the ROCm 7.14.0 release notes below.

ROCm Core SDK 7.14.0 release notes

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 Instinct and Radeon GPUs

ROCm 7.14.0 adds support for the following virtualization configurations on AMD Instinct and Radeon GPUs:

  • On MI350X: VMware ESXi 9.1 with Ubuntu 24.04 guest OS.

  • 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.

[*]

You might observe significantly longer LLM warmup times on some Radeon GPUs. Refer to the known issue for details.

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 a hipLibrary_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.

  • New HIP documentation topic on device properties: The HIP Device Properties and Topology on CDNA Architectures provides an overview of the CDNA architecture topology and its key hardware characteristics, helping developers better understand the underlying architecture and optimize the performance of their HIP applications.

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-profiler wheel 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 --partition flag, 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-mode command. The current mode is visible in amd-smi static --partition output, 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 metric flags when APU metrics are available. amd-smi monitor adds 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-ttm tool 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-pid and amd-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 fclk clock type for amd-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) and hipsparseSpMV (sparse matrix-vector multiplication). Two new descriptor functions, hipsparseCreateBsr and hipsparseCreateConstBsr, 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 csrgeam routines (hipsparseXcsrgeamNnz, hipsparseScsrgeam, hipsparseDcsrgeam, hipsparseCcsrgeam, and hipsparseZcsrgeam) are deprecated and will be removed in a future release. Use the csrgeam2 routines instead: hipsparseScsrgeam2_bufferSizeExt, hipsparseDcsrgeam2_bufferSizeExt, hipsparseCcsrgeam2_bufferSizeExt, hipsparseZcsrgeam2_bufferSizeExt, hipsparseXcsrgeam2Nnz, hipsparseScsrgeam2, hipsparseDcsrgeam2, hipsparseCcsrgeam2, and hipsparseZcsrgeam2.

rocSPARSE feature highlights

The following are notable enhancements to rocSPARSE:

  • Incomplete LDLᵀ factorization: rocSPARSE adds the rocsparse_spildlt0 routine, 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_u16 index type deprecated: The rocsparse_indextype_u16 field of the rocsparse_indextype enum is deprecated in this release. Code using rocsparse_indextype_u16 now produces deprecation warnings at compile time. Migrate to rocsparse_indextype_i32 or rocsparse_indextype_i64; rocsparse_indextype_u16 will 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.

(release-supported-hw)=

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.
:::

:parser: myst

(release-supported-os)=

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 {doc}Compatibility matrix </compatibility/compatibility-matrix> to verify support for your specific setup before installation.
:::

:parser: myst

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.

(release-supported-fw)=

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.

:parser: myst

(release-virtualization-support)=

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.

:parser: myst

(release-gpu-partitioning-support)=

GPU partitioning support

:parser: myst

See the AMD GPU partitioning topic in the AMD GPU Driver documentation to learn more.

(release-ai-ecosystem)=

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 {doc}Compatibility matrix </compatibility/compatibility-matrix> to verify support for your specific setup.
:::

:parser: myst

(release-components)=

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 {doc}Compatibility matrix </compatibility/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 (Strix Point only)/gfx1151/gfx1152 (Krackan Point only))
ROCm Systems Profiler (rocprofiler-systems) 1.6.0 ⇒ 1.7.0 Linux · Instinct/Radeon/Ryzen (gfx1150 (Strix Point only)/gfx1151/gfx1152 (Krackan Point only))
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.

For a historical overview of ROCm component updates, see the {doc}`ROCm consolidated changelog </release/changelog>`.

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(), and amdsmi_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 return AMDSMI_STATUS_NOT_YET_IMPLEMENTED.
  • Exposed APU metrics through the CLI and Python interface.

    • amd-smi metric now surfaces APU-specific data under --usage, --power, --clock, --temperature, --fan, --voltage, and --throttle when APU metrics are available.
    • amd-smi monitor provides 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 --energy sections are not applicable and are omitted.
  • The --partition flag to amd-smi metric for partition-scoped metrics.

    • The -X/--partition flag 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 --partition is set with --temperature: adds MID and per-XCP/XCD temperatures.
    • When --partition is set with --clock: sources GFX/VCLK/DCLK/SOCCLK from partition metrics and adds per-AID and per-XCP clock entries with their limits.
    • When --partition is set with --usage: reports per-XCP GFX/JPEG/VCN activity.
  • --folder support to amd-smi ras --afid.

    • amd-smi ras --afid --folder <DIR> decodes every *.cper in a directory and prints a file_name | list of afids table (or a JSON array under --json).
    • Records with no AFIDs show -; files that cannot be parsed show decode failed.
  • Wrapped ESMI functions in amdsmi_go_shim.

    • Go callers can now access ESMI CPU functionality through the existing amdsmi_go_shim interface.
  • GPU partitioning conceptual guide and usage examples.

    • New guide at docs/conceptual/partition.md covering 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-partition as amd-smi set --accelerator-partition.

    • Compute and accelerator partitions are fundamentally the same, so users can now use --accelerator-partition to set the compute/accelerator partition.
  • Input validation for CPU set commands.

    • 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-limit values 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 --partition output includes COMPUTE_PARTITION_MEM_ALLOC_MODE field.
    • 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_NUMA and AMDSMI_LINK_TYPE_XNUMA to amdsmi_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-pid and amd-smi monitor --sort-by-pid group 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 metric clock and temperature sections.

    • The uclk_aid, socclks_mid, and temperature xcd keys are now lowercase (aid_<N>, mid_<N>, xcp_<N>) in JSON and CSV output, matching the existing xcp_<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 topology NIC-GPU access table.

    • The per-GPU columns are now lowercase (gpu_<N> for the BDF header row, gpu_<N>_topo for each NIC's status row) in JSON and CSV output, matching the existing gpu_<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 version output.

    • The label now correctly reflects that it shows the ionic kernel driver version.
Removed
  • Removed the non-functional --decode flag from amd-smi ras. Out-of-band CPER decoding is available via amd-smi ras --afid --cper-file <path> or --afid --folder <DIR>.

  • Removed the unused amdsmi_nic_link_type_t enum from the public header. No API or struct referenced it; NIC link types are reported through amdsmi_link_type_t, which gains AMDSMI_LINK_TYPE_NUMA and AMDSMI_LINK_TYPE_XNUMA in this release.

Optimized
  • Improved Python test runner behavior:
    • Added -l/--list flag to list all available tests and exit without running them.
    • Added shadow detection: if amdsmi loads from a path other than the resolved expected path (AMDSMI_PATH, ROCM_HOME, ROCM_PATH, or /opt/rocm default), 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-cap rejecting 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, 210 when 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 AmdSmiLibraryException messages and API documentation entries were misspelled; they now use the correct AMDSMI_STATUS_* names.
  • A crash in amdsmi_get_gpu_vram_vendor() and made amdsmi_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 host pci.ids lookup is unavailable. The C and Python APIs continue to return the raw value unchanged.
    • Standardized the hardcoded AMD vendor string on the canonical pci.ids spelling (with the comma) so VENDOR_NAME and MANUFACTURER_NAME are consistent with lspci.
  • amd-smi ras --cper / amdsmi_get_gpu_cper_entries() crash (free(): invalid pointer / SIGABRT) when libamd_smi.so is LD_PRELOAD-ed under a host with a different libstdc++ (for example, device-metrics-exporter / gpuagent).

  • amd-smi ras --cper failing with AMDSMI_STATUS_FILE_ERROR on an empty CPER ring. An empty ring (no RAS records) now reports no CPER records; amdsmi_get_gpu_cper_entries() returns AMDSMI_STATUS_SUCCESS with entry_count == 0.

  • amdsmi_init() aborting entirely when CPU/ESMI initialization fails.

    • populate_amd_cpus() treated an esmi_init() failure (non-AMD CPU, missing/unsupported energy or HSMP driver, or a CPU/SMU in a bad state) as fatal, causing all of amdsmi_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 unrelated esmi_status_t and amdsmi_status_t enums.
    • Added checks for the previously ignored return values of get_nr_cpu_sockets(), get_nr_cpu_cores(), and get_nr_threads_per_core(), plus a guard against a divide-by-zero when a misbehaving driver reports zero sockets or threads.
  • amd-smi static hanging 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_NONBLOCK to DRM device open during initialization so open() returns immediately if the device is wedged.
  • amd-smi ras --afid --cper-file <file> not showing AFIDs for correctable errors.

    • aca_decode_corrected_error was receiving the count of uint32_t elements where decode_afid expected the count of uint64_t elements, causing decode_error_info to return NULL for all non-standard section types.
  • amd-smi ras --cper --json producing invalid JSON.

    • Multi-GPU runs emitted a separate JSON array per GPU instead of a single unified array, and --follow mode printed an empty [] every iteration when no new entries existed. Both are now consolidated into a single JSON document.
  • Exposed amdsmi_get_afids_from_cper in the Python package.

    • The CPER AFID API was implemented but missing from py-interface/__init__.py, making it unavailable to Python callers using from amdsmi import ....
  • Python unittest scripts now append a GTest-style summary after test output.

    • All *_test.py and unit_tests.py scripts 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 current field, 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(), and amdsmi_free_fabric_telemetry() now return AMDSMI_STATUS_NOT_SUPPORTED on systems without fabric hardware, consistent with amdsmi_get_gpu_fabric_info().
  • amd-smi static --clock CSV 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 of amdsmi_get_gpu_vram_info() and will be removed in a future ROCm release. It now emits a DeprecationWarning from the Python interface and functions as a wrapper of amdsmi_get_gpu_vram_info().

  • See {ref}AMD SMI deprecations <amd-smi-deprecations>.

HIP (7.14)

Added
  • New HIP APIs:

    • Execution Context Management: Support for the following APIs for parity with corresponding CUDA APIs:
      • hipDeviceGetDevResource returns the device resource of a given type for a device.
      • hipDevSmResourceSplitByCount splits SM resources into groups with at least a minimum SM count.
      • hipDevSmResourceSplit splits SM resources into groups with configurable per-group parameters.
      • hipDevResourceGenerateDesc generates a resource descriptor from one or more device resources.
      • hipGreenCtxCreate creates a green context from a resource descriptor.
      • hipExecutionCtxDestroy destroys an execution context.
      • hipDeviceGetExecutionCtx returns the default execution context for a device.
      • hipExecutionCtxStreamCreate creates a stream on an execution context with specified flags and priority.
      • hipExecutionCtxGetDevResource returns the device resource of a given type for an execution context.
      • hipExecutionCtxGetDevice returns the device associated with an execution context.
      • hipExecutionCtxGetId returns a unique identifier for an execution context.
      • hipStreamGetDevResource returns the device resource of a given type for a stream.
      • hipExecutionCtxRecordEvent records an event on an execution context.
      • hipExecutionCtxSynchronize blocks until all work on an execution context has completed.
      • hipExecutionCtxWaitEvent makes an execution context wait on an event.
    • Module Management: Support for the following APIs for parity with corresponding CUDA APIs:
      • hipLibraryGetGlobal returns the device pointer and size of a __device__ global defined in a hipLibrary_t. Mirrors cudaLibraryGetGlobal / cuLibraryGetGlobal.
      • hipLibraryGetManaged returns the host pointer and size of a __managed__ variable defined in a hipLibrary_t. Mirrors cudaLibraryGetManaged / cuLibraryGetManaged.
    • Memory Management: Support for the following APIs for parity with corresponding CUDA APIs:
      • hipMemDiscardBatchAsync discards a batch of memory ranges asynchronously, allowing the runtime to reclaim resources. Mirrors cudaMemDiscardBatchAsync.
      • hipDrvMemDiscardBatchAsync driver API variant of hipMemDiscardBatchAsync, using hipDeviceptr_t pointers. Mirrors cuMemDiscardBatchAsync.
      • hipMemDiscardAndPrefetchBatchAsync combines discard and prefetch in a single call, enabling the runtime to optimize data movement. Mirrors cudaMemDiscardAndPrefetchBatchAsync.
      • hipDrvMemDiscardAndPrefetchBatchAsync driver API variant of hipMemDiscardAndPrefetchBatchAsync, using hipDeviceptr_t pointers. Mirrors cuMemDiscardAndPrefetchBatchAsync.
  • Support for non-Host Transparent (nHT) fabric handles in HIP Virtual Memory Management (VMM) APIs, enabling efficient cross-device memory sharing over Infinity Fabric over Ethernet (IFoE). This allows peer devices to directly access shared memory without routing data through the host, reducing data movement overhead and improving performance for multi-GPU and distributed workloads.

  • Introduced an exported no-op function __hipOnError(void *err_info), invoked from HIP_UPDATE_ERROR_STATE when 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 via amdhip.def. The err_info parameter 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 hipGraphExecDestroy and resulting in memory faults on subsequent access.
  • Resolved an issue where an error propagated from the hipModuleGetFunction API, 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 to hipStreamIsCapturing continued 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 GraphNode constructor 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 hipMemRetainAllocationHandle API when a pointer allocated with hipMalloc was 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 the hipPointerGetAttributes API 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 hipGraphMemsetNode that caused incorrect validation for flat allocations. For 2D memsets, the userData width/height/depth extents are only initialized by hipMallocPitch and hipMalloc3D;
    allocations from hipMalloc leave these fields unset, leading to spurious validation failures. The HIP runtime now skips userData-based checks when extents are zero and relies on ihipMemset3D_validate
    for accurate size validation. Additionally, the exec flag is propagated through ihipGraphNodeSetParams to ensure executable graph updates use the correct validation path.
  • Deadlock caused by hipMemMap and hipMemUnmap operations 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 hipErrorStreamDetached if 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
  • hipsparseCreateBsr and hipsparseCreateConstBsr to enable BSR format support in generic routines.
  • BSR format support to hipsparseSpMV and hipsparseSpMM.
Resolved issues
  • Issue where calling hipsparseSpMV multiple times with different hipsparseOperation_t, hipsparseSpMVAlg_t, or compute-datatypes using the same sparse matrix descriptor resulted in errors.
Upcoming changes
  • The routines hipsparseXcsrgeamNnz, hipsparseScsrgeam, hipsparseDcsrgeam, hipsparseCcsrgeam, and hipsparseZcsrgeam have been deprecated and will be removed in a future release. Use hipsparseScsrgeam2_bufferSizeExt, hipsparseDcsrgeam2_bufferSizeExt, hipsparseCcsrgeam2_bufferSizeExt, hipsparseZcsrgeam2_bufferSizeExt, hipsparseXcsrgeam2Nnz, hipsparseScsrgeam2, hipsparseDcsrgeam2, hipsparseCcsrgeam2, and hipsparseZcsrgeam2 instead.

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=0 to 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] miopenStatusInternalError thrown by Find on depthwise NHWC grouped convolutions under MIOPEN_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).
  • ncclBarrierSession LSA validation for barrier sessions.
  • Symmetric-memory ReduceScatter kernel (RailA2A_LsaLD) on gfx942/gfx950.
  • Bias (accumulation) AllReduce on gfx1250.
  • Optimized scale-up ReduceScatter, AllGather, and AllToAll kernels.
  • ROCprofiler-SDK coverage for ncclCommGrow and ncclCommGetUniqueId.
  • Auto-enabled P2P batching for gfx950 in combination with non-AINIC NICs.
  • Display HIP/ROCm runtime versions in NCCL_DEBUG output.
  • Detect ROCm version via core symlink for multi-architecture installs.
  • Skip DDA IPC initialization for directMode and MNNVL topologies.
  • Load versioned libamd_smi SONAME instead of an unversioned symlink.
  • Pythonic API bindings under bindings/nccl4py/ (RCCL fork of NVIDIA nccl4py v0.2.0). Provides Python access to RCCL collectives via Cython bindings, an on-disk cuda.core HIP shim for ROCm hosts without cuda-bindings / cuda-core, and RCCL-only collective wrappers (ncclAllReduceWithBias, ncclAllToAllv).
  • RCCL examples to the repository.
  • RCCL host API pull-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_ib with the net_ib implementation from NCCL 2.29.
  • Skip per-warp channel LDS copy when warpComm is 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_ALLGATHER now defaults to 1; set it to 0 to 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_C2C is kept default-off (0); upstream NCCL defaults it to 1 since 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 COLLTRACE build option, device-side collective trace buffers, debug kernel variants, and related install/CI wiring. The host latency profiler is unchanged.
  • Removed legacy ENABLE_PROFILING device profiling support and the PROFILE build option. Use the profiler plugin API instead.
Optimized
  • Tuned symmetric memory kernels.
  • Parallelized communicator destruction across child processes to reduce teardown latency.
Resolved issues
  • ncclCommGrow channel-count divergence causing incorrect collective routing.
  • A ncclCommGrow hang 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.
  • ncclCommFree to 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 with install(EXPORT "rccl-targets" ...) error when fmt is fetched via FetchContent. The fmt-header-only target 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 #else branch in sendProxyConnect / recvProxyConnect now honors resources->useDmaBuf, so peermem-equipped hosts on older HIP no longer fall through to hsa_amd_portable_export_dmabuf when 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 unversioned libhsa-runtime64.so developer symlink (e.g. TheRock multi-arch pip-wheel /opt/rocm-less deployments). RCCL no longer dlopens the HSA runtime by name; instead it directly links hsa-runtime64::hsa-runtime64 (already a hard transitive dependency via the HIP runtime) and binds hsa_init, hsa_system_get_info, hsa_status_string, and hsa_amd_portable_export_dmabuf to those symbols. The linker records DT_NEEDED libhsa-runtime64.so.1 and resolves it through librccl's existing RPATH, removing the SONAME version-string fragility and load-scope (RTLD_LOCAL) issues. The RCCL_ROCR_PATH override 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_NUMA memory, exposed through NCCL_ELASTIC_BUFFER_REGISTER and NCCL_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 via amdsmi_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_BIDIR with 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_INST from gpu_metrics.xcp_stats.
    • ECC deferred errors: 19 per-block deferred error fields (RDC_FI_ECC_*_DE) plus RDC_FI_ECC_DEFERRED_TOTAL, reading deferred_count from amdsmi_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 via amdsmi_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.py parses 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
Removed
  • Removed RVS integration. RVS is built independently of RDC and TheRock, so its integration has been disabled.
    • BUILD_RVS now defaults to OFF (#7116).
Resolved issues
  • The Failed to insert module: N3amd3rdc10RdcRVSLibE error.

rocBLAS (5.5.0)

Added
  • Per-batch alpha/beta support for Level 2 batched and strided-batched gemv via rocblas_set_batch_alpha_stride and rocblas_set_batch_beta_stride (device pointer mode).
  • Per-batch alpha support for Level 2 batched and strided-batched ger, geru, and gerc via rocblas_set_batch_alpha_stride (device pointer mode).
  • Per-batch alpha (scalar vector) API support for axpy_batched, axpy_strided_batched, and their _ex forms through rocblas_set_batch_alpha_stride when rocblas_handle is in rocblas_pointer_mode_device.
  • Support custom build with CMake arguments GPU_TARGET=amdgcnspirv when using BUILD_WITH_TENSILE=OFF.
Resolved issues
  • Incorrect results on gfx12 in trsv, asum, and nrm2 with large batch_count exceeding 65536.
  • gemm with very large K or inner product leading dimension for which element byte offset overflowed int32.
  • install.sh/rmake.py builds when CMAKE_GENERATOR=Ninja is 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_size and rocfft_execution_info_set_work_buffer functions 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 gcore command,
    particularly for kernels that use small amounts of VRAM.
  • A new catch hiperr command that stops the inferior when a HIP API
    call returns an error. The convenience variable $_hiperr holds
    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_LEVEL environment variable.

ROCm Compute Profiler (3.7.0)

Added
  • --bench-only profile mode option to run the roofline microbenchmark standalone (without profiling an application or collecting performance counters). No application run is required. Useful for regenerating roofline.csv in 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 --gui and --tui analyze options to experimental status. These features now require the --experimental flag to be enabled (for example, rocprof-compute analyze --experimental --gui).

  • --output-format csv in analyze mode now uses the database analysis workflow and produces one CSV per analysis view. Requires --format-rocprof-output rocpd and no longer prints the report to the terminal (matching db format).

  • Changed ratio metric aggregation from AVG(A/B) (arithmetic mean of per-dispatch ratios) to SUM(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-trace now 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_halo to rdna35_halo.

  • Unified accumulator handling across profile and analyze so each _ACCUM-suffixed counter is preserved instead of collapsing to SQ_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-sampling option. Explicit -b 21 / --block 21 is 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 -k now shows the full per-instruction table across all kernels (with a Kernel_Name column), identical in schema to the single-kernel view, instead of a collapsed source-line summary.

  • --pc-sampling-interval now defaults to a method-appropriate value (512 microseconds for host_trap, 1048576 cycles for stochastic). Stochastic intervals are validated to be a power of 2 and at least 65536; previously invalid values were passed through silently.

Removed
  • --path and --subpath options have been removed from profile mode. Use --output-directory instead.

  • Removed redundant if (X != 0) else None divide-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" for inf and NaN results.

Optimized
  • Flattened the analyze-mode PMC dataframe to a single-index frame.

  • Eliminated "missing counter" warnings during analyze when profile-mode -b was 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_PATH was unset or empty (observed when profiling shell-script targets such as rocprof-compute profile -o /tmp/out -- bash run.sh). The collector now silently falls back to a documented default instead of aborting.

  • inf display for metrics with zero-denominator counters (e.g., L2-Fabric Write Latency when no write requests are issued). The metric evaluation path now catches inf scalar results and returns "N/A", consistent with existing NaN handling.

  • 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_sampling block alias (--block pc_sampling), instead of being silently skipped.

Upcoming changes
  • Roofline support for gfx1153 devices.
Known issues
  • On gfx1151, TCP_REQ_sum is zero in single-pass counter collection, so the related GL0 metrics always report zero. This issue will be fixed in a future release.

  • On gfx1151, $max_mclk is not automatically populated in sysinfo, so the related bandwidth metrics may be incorrect. Use amd-smi to obtain the maximum memory clock and provide it via --specs-correction.

  • In analyze mode, --nodes is not suitable for multi-rank analysis. Use --path with the rank-specific path (for example, --path workload/1) instead of --path workload --nodes 1.

ROCm Systems Profiler (1.7.0)

Added
  • --output-format flag for rocprof-sys-run and rocprof-sys-sample to select
    output format(s) in a single, intuitive option: proto (Perfetto), rocpd
    (RocPD database), and json / text (Timemory profile; txt aliases text).
    Tokens are space- or comma-separated and authoritative — only the listed
    formats are produced. The existing --trace, --profile, --flat-profile,
    and --profile-format flags and their environment variables remain available,
    but cannot be combined with --output-format on the same command line.

  • Unified-memory profiling reports (unified_memory.txt and
    unified_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 with ROCPROFSYS_USE_UNIFIED_MEMORY_PROFILING=ON; requires
    HSA_XNACK=1 on 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_PATH setting for routing
    unified-memory profiling reports to an explicit output directory.

  • MPI-rank-based console output filtering features controlled with CLI arguments:
    --rank-filter-logs and --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=N to 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, exposing current_gfxclk and current_uclk in MHz as PMC samples.
    Configure via ROCPROFSYS_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 via ROCPROFSYS_ROCM_GROUP_BY_QUEUE
    (default: false — group by HIP stream).

  • --list-domains and --list-operations <domain> to rocprof-sys-avail.
    These new options allow the user to query more information about available
    ROCm domains (used in ROCPROFSYS_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
    PMC drivers layout.
  • Removed Boost as a Dyninst dependency by replacing Boost usage with in-tree
    dyncompat shims and C++17 standard library equivalents; Bundled Dyninst now
    requires GCC ≥ 10.
  • The trace-openmp configuration preset no longer includes HSA_API,
    by default.
  • rocprof-sys-sample — Aligned flags with rocprof-sys-run. Renamed --freq,
    --cputime and --realtime to --sampling-freq, --sampling-cputime and
    --sampling-realtime, respectively. Old flags are still handled as a part of
    backward compatibility.
  • Allowed presets to use --gpus/--cpu/--ai-nics flags without
    --device/--host flags.
  • Minimum required C++ standard raised from C++17 to C++20. timemory now builds
    against the rocprofiler-systems-cppstd20 branch and spdlog was bumped to
    v1.17.0 (bundled fmt v12).
  • Supported environment variables for rank detection: removed MPI_RANK and
    MPI_LOCALRANKID, added PMI_RANK and SLURM_PROCID.
Resolved issues
  • An issue affecting the ElfUtils build on GCC 15.
  • Output directory of rocpd files was not unique when re-attaching to the same process
    with rocprof-sys-attach. Now, each session will have a unique output folder.
  • CPU-related counters (like CPU frequency) were missing from rocpd output.
  • 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 binutils between system and bundled
    versions. Ensure that the vendored version of binutils'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 elfutils to be linked when
    building for TheRock. The system version of elfutils was 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 by
    ROCPROFSYS_TRACE; setting ROCPROFSYS_USE_TRACE had no effect.
  • A pre-main rocprof-sys-run SIGSEGV in rocprofiler_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.cpp to 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.cmake script - it is replaced by the added generate_resource_spec.cpp code 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_support along with reserved padding to rocprofiler_counter_info_v1_t.

rocprofv3 (CLI):

  • SPM counter collection support in rocprofv3 (beta):
    • --spm <counter> flag to specify counters for SPM collection.
    • --spm-sample-interval and --spm-sample-interval-unit parameters to configure sampling rate.
    • --spm-beta-enabled flag or the ROCPROFILER_SPM_BETA_ENABLED environment variable to opt in to the beta SPM feature via rocprofv3. For API-based usage, set ROCPROFILER_SPM_BETA_ENABLED.
    • --spm-config option in rocprofv3-avail to list available SPM configurations.
  • JSON and rocpd output format support for SPM.

Documentation:

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_align
    • rocshmem_calloc
    • rocshmem_buffer_unregister_all
    • rocshmem_buffer_register/unregister for GDA backend
    • rocshmem_reduce_on_stream
    • rocshmem_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_LEVEL from WARN to ERROR.
  • 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_small dispatch by BS2 to avoid over-generating specialized kernels while preserving runtime bounds checks on nb.
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_spildlt0 routine 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.
Known issues
  • The HIP graph capture/launch path for the factorization routines bsric0, bsrilu0, csric0 and csrilu0 can fail with hipErrorOutOfMemory at hipGraphLaunch on memory-constrained GPUs such as the gfx110X family. The corresponding graph_test cases are marked known_bug and excluded from the standard test suites until the fix lands.
Upcoming changes
  • Deprecated the rocsparse_indextype_u16 index type and will be removed in a future release. Use rocsparse_indextype_i32 or rocsparse_indextype_i64 instead.

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 {fab}github 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. See GitHub issue #7895.

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. See GitHub issue #7896.

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. See GitHub issue #7897.

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. See GitHub issue #7898.

ROCprofiler-SDK 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. See GitHub issue #7899.

ROCm Compute Profiler might report inflated Avg values with per_kernel normalization

When using ROCm Compute Profiler 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. See GitHub issue #7900.

rocALUTION and hipTensor have no dedicated 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. See GitHub issue #7901.

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. See GitHub issue #7902.

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, multi-threaded configurations. This issue affects the packaged binary distribution and might severely impact production workloads. Known affected workloads include Llama 3 405B and JAX stack; additional workloads might also be affected. Single-node (scale-up) configurations are not affected.
To work around this issue, recompile RCCL from the ROCm 7.14 source with fault injection disabled (see Building and installing RCCL). You can either set the option in the RCCL CMake file:

option(FAULT_INJECTION         "Enable fault injection"           OFF)

Alternatively, add the following CMake flag during compilation:

-DFAULT_INJECTION=OFF

See GitHub issue #7903.

AMD SMI NIC telemetry supports Pollara 400 adapters only

In ROCm 7.14.0, AMD SMI NIC telemetry only supports AMD AI NIC Pollara 400 adapters. Broadcom NIC support is planned for a future release. See GitHub issue #7904.

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)=

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 major release

The following APIs, defines, enums, and struct fields are deprecated and
scheduled for removal in the next major release.

APIs
Deprecated Replacement
amdsmi_get_cpusocket_handles() No replacement; functionality removed
amdsmi_get_gpu_vram_vendor() amdsmi_get_gpu_vram_info()
amdsmi_gpu_driver_reload() No replacement; functionality removed
amdsmi_get_xgmi_plpd() Python: use the policy attribute instead of plpds
amdsmi_set_gpu_clk_range() amdsmi_set_gpu_clk_limit()
Types
Deprecated Replacement
amdsmi_fabric_info_ver_t Moved inside amdsmi_fabric_info_t
amdsmi_nic_fw_t amdsmi_nic_fw_entry_t
Defines and enums
Deprecated Replacement
MAX_NUMBER_OF_AFIDS_PER_RECORD AMDSMI_MAX_NUMBER_OF_AFIDS_PER_RECORD
MAX_SVI3_RAIL_INDEX AMDSMI_MAX_SVI3_RAIL_INDEX
MAX_SVI3_RAIL_SELECTION AMDSMI_MAX_SVI3_RAIL_SELECTION
POWER_EFFICIENCY_MODE_4 AMDSMI_POWER_EFFICIENCY_MODE_4
POWER_EFFICIENCY_MODE_5 AMDSMI_POWER_EFFICIENCY_MODE_5
CENTRIGRADE_TO_MILLI_CENTIGRADE No replacement; constant removed
_AMDSMI_MAX_STRING_LENGTH No replacement; private symbol, do not use
_AMDSMI_STRING_LENGTH 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_acc
  • mem_activity_acc
  • pcie_nak_sent_count_acc
  • pcie_nak_rcvd_count_acc
  • pcie_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.

Future deprecation notice: planned removal after the next major release

The following APIs, types, and enums are deprecated and will be removed sometime after the next major release.

APIs
Deprecated Replacement
amdsmi_get_gpu_compute_partition_mem_alloc_mode() amdsmi_get_gpu_accelerator_partition_mem_alloc_mode()
amdsmi_set_gpu_compute_partition_mem_alloc_mode() amdsmi_set_gpu_accelerator_partition_mem_alloc_mode()
amdsmi_get_gpu_compute_partition() amdsmi_get_gpu_accelerator_partition_profile()
amdsmi_set_gpu_compute_partition() amdsmi_set_gpu_accelerator_partition_profile()
amdsmi_set_gpu_memory_partition() amdsmi_set_gpu_memory_partition_mode()
Types
  • amdsmi_compute_partition_type_t
  • amdsmi_compute_partition_mem_alloc_mode_t
Enums
Deprecated Replacement
CLK_LIMIT_MIN AMDSMI_CLK_LIMIT_MIN
CLK_LIMIT_MAX AMDSMI_CLK_LIMIT_MAX
AGG_BW0 AMDSMI_AGG_BW0
RD_BW0 AMDSMI_RD_BW0
WR_BW0 AMDSMI_WR_BW0