ROCm 6.2.0 Release #3502
samjwu
announced in
Announcements
Replies: 1 comment
|
It looks like Omnitrace is missing for Ubuntu 24.04 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
ROCm 6.2.0 release notes
Release highlights
Operating system and hardware support changes
ROCm components versioning
Detailed component changes
ROCm known issues
ROCm upcoming changes
The Compatibility matrix
provides an overview of operating system, hardware, ecosystem, and ROCm component support across ROCm releases.
Release notes for previous ROCm releases are available in earlier versions of the documentation.
See the ROCm documentation release history.
Release highlights
This section introduces notable new features and improvements in ROCm 6.2. See the
Detailed component changes for individual component changes.
New components
ROCm 6.2.0 introduces the following new components to the ROCm software stack.
Omniperf -- A kernel-level profiling tool for machine learning and high-performance computing (HPC) workloads
running on AMD Instinct accelerators. Omniperf offers comprehensive profiling and advanced analysis via command line
or a GUI dashboard. For more information, see
Omniperf.
Omnitrace -- A multi-purpose analysis tool for profiling and tracing applications running on the CPU or the CPU and GPU.
It supports dynamic binary instrumentation, call-stack sampling, causal profiling, and other features for determining
which function and line number are executing. For more information, see
Omnitrace.
rocPyDecode -- A tool to access rocDecode APIs in Python. It connects Python and C/C++ libraries,
enabling function calling and data passing between the two languages. The
rocpydecode.solibrary, a wrapper, usesrocDecode APIs written primarily in C/C++ within Python. For more information, see
rocPyDecode.
ROCprofiler-SDK -- ROCprofiler-SDK is a profiling and tracing library for HIP and ROCm applications on AMD ROCm software
used to identify application performance bottlenecks and optimize their performance. The new APIs add restrictions for more
efficient implementations and improved thread safety. A new window restriction specifies the services the tool can use.
ROCprofiler-SDK also provides a tool library to help you write your tool implementations.
rocprofv3uses this tool libraryto profile and trace applications for performance bottlenecks. Examples include API tracing, kernel tracing, and so on.
For more information, see ROCprofiler-SDK.
ROCm Offline Installer Creator introduced
The new ROCm Offline Installer Creator creates an installation package for a preconfigured setup of ROCm, the AMDGPU
driver, or a combination of the two on a target system without network access. This new tool customizes
multiple unique configurations for use when installing ROCm on a target. Other notable features include:
A lightweight, easy-to-use user interface for configuring the creation of the installer
Support for multiple Linux distributions
Installer support for different ROCm releases and specific ROCm components
Optional driver or driver-only installer creation
Optional post-install preferences
Lightweight installer packages, which are unique to the preconfigured ROCm setup
Resolution and inclusion of dependency packages for offline installation
For more information, see
ROCm Offline Installer Creator.
Math libraries default to Clang instead of HIPCC
The default compiler used to build the math libraries on Linux changes from
hipcctoamdclang++.Appropriate compiler flags are added to ensure these compilations build correctly. This change only applies when
building the libraries. Applications using the libraries can continue to be compiled using
hipccoramdclang++asdescribed in ROCm compiler reference.
The math libraries can also be built with
hipccusing any of the previously available methods (for example, theCXXenvironment variable, the
CMAKE_CXX_COMPILERCMake variable, and so on). This change shouldn't affect performance orfunctionality.
Framework and library changes
This section highlights updates to supported deep learning frameworks and notable third-party library optimizations.
Additional PyTorch and TensorFlow support
ROCm 6.2.0 supports PyTorch versions 2.2 and 2.3 and TensorFlow version 2.16.
See Installing PyTorch for ROCm
and Installing TensorFlow for ROCm
for installation instructions.
Refer to the
Third-party support matrix
for a comprehensive list of third-party frameworks and libraries suppported by ROCm.
Optimized framework support for OpenXLA
PyTorch for ROCm and TensorFlow for ROCm now provide native support for OpenXLA. OpenXLA is an open-source ML compiler
ecosystem that enables developers to compile and optimize models from all leading ML frameworks. For more information, see
Installing PyTorch for ROCm
and Installing TensorFlow for ROCm.
PyTorch support for Autocast (automatic mixed precision)
PyTorch now supports Autocast for recurrent neural networks (RNNs) on ROCm. This can help to reduce computational
workloads and improve performance. Based on the information about the magnitude of values, Autocast can substitute the
original
float32linear layers and convolutions with theirfloat16orbfloat16variants. For more information, seeAutomatic mixed precision.
Memory savings for bitsandbytes model quantization
The ROCm-aware bitsandbytes library is a lightweight Python wrapper around HIP
custom functions, in particular 8-bit optimizer, matrix multiplication, and 8-bit and 4-bit quantization functions.
ROCm 6.2.0 introduces the following bitsandbytes changes:
Int8matrix multiplication is enabled, and it includes the following functions:extract-outliers– extracts rows and columns that have outliers in the inputs. They’re later used for matrix multiplication without quantization.transform– row-to-column and column-to-row transformations are enabled, along with transpose operations. These are used before and after matmul computation.igemmlt– new function for GEMM computation A*B^T. It useshipblasLtMatMul and performs 8-bit GEMM operations.
dequant_mm– dequantizes output matrix to original data type using scaling factors from vector-wise quantization.Float4quantization, quantile estimation, and quantile quantization functions are enabled.For more information, see Model quantization techniques.
Improved vLLM support
ROCm 6.2.0 enhances vLLM support for inference on AMD Instinct accelerators, adding
capabilities for
FP16/BF16precision for LLMs, andFP8support for Llama.ROCm 6.2.0 adds support for the following vLLM features:
MP: Multi-GPU execution. Choose between MP and Ray using a flag. To set it to MP,
use
--distributed-executor-backed=mp. The default depends on the commit in flux.FP8 KV cache: Enhances computational efficiency and performance by significantly reducing memory usage and bandwidth requirements.
The QUARK quantizer currently only supports Llama.
Triton Flash Attention:
ROCm supports both Triton and Composable Kernel Flash Attention 2 in vLLM. The default is Triton, but you can change this
setting using the
VLLM_USE_FLASH_ATTN_TRITON=Falseenvironment variable.PyTorch TunableOp:
Improved optimization and tuning of GEMMs. It requires Docker with PyTorch 2.3 or later.
For more information about enabling these features, see
vLLM inference.
ROCm has a vLLM branch for experimental features. This includes performance improvements, accuracy, and correctness testing.
These features include:
FP8 GEMMs: To improve the performance of FP8 quantization, work is underway on tuning the GEMM using the shapes used
in the model's execution. It only supports LLAMA because the QUARK quantizer currently only supports Llama.
Custom decode paged attention: Improves performance by efficiently managing memory and enabling faster attention
computation in large-scale models. This benefits all workloads in
FP16configurations.To enable these experimental new features, see
vLLM inference.
Use the
rocm/vllmbranch when cloning the GitHub repo. Thevllm/ROCm_performance.mddocument outlinesall the accessible features, and the
vllm/Dockerfile.rocmfile can be used.Enhanced performance tuning on AMD Instinct accelerators
ROCm is pretuned for high-performance computing workloads including large language models, generative AI, and scientific computing.
The ROCm documentation provides comprehensive guidance on configuring your system for AMD Instinct accelerators. It includes
detailed instructions on system settings and application tuning suggestions to help you fully leverage the capabilities of these
accelerators for optimal performance. For more information, see
AMD MI300X tuning guides and
AMD MI300A system optimization.
Removed clang-ocl
As of version 6.2, ROCm no longer provides the
clang-oclpackage.See the clang-ocl README.
ROCm documentation changes
The documentation for the ROCm components has been reorganized and reformatted in a standard look and feel. This
improves the usability and readability of the documentation. For more information about the ROCm components, see
What is ROCm?.
Since the release of ROCm 6.1, the documentation has added some key topics including:
The following topics have been significantly improved, expanded, or both:
Operating system and hardware support changes
ROCm 6.2.0 adds support for the following operating system and kernel versions.
Ubuntu 24.04 LTS (kernel: 6.8 [GA])
RHEL 8.10 (kernel: 4.18.0-544)
SLES 15 SP6 (kernel: 6.4)
ROCm 6.2.0 marks the end of support (EoS) for:
Ubuntu 22.04.3
RHEL 9.2
RHEL 8.8
SLES 15 SP 4
CentOS 7.9
ROCm 6.2.0 has been tested against pre-release Ubuntu 22.04.5 (kernel: 6.5 [HWE]).
See the Compatibility matrix for an
overview of supported operating systems and hardware architectures.
ROCm components
The following table lists ROCm components and their individual versions for ROCm 6.2.0. Follow the
links in the Version column to go to the detailed component changelogs.
Detailed component changes
The following sections describe key changes to ROCm components.
AMD SMI (24.6.2)
Changes
amd-smi dmonis now available as an alias toamd-smi monitor.amd-smi monitor -q.amdsmi.hto the AMD SMI Python libraryamdsmi_interface.py.amdsmi_set_gpu_clear_sram_data()toamdsmi_clean_gpu_local_data().Removals
throttle-statusfromamd-smi monitoras it is no longer reliably supported.amdsmi_get_gpu_process_list().Optimizations
amdsmi.handamdsmi_interface.pyto align with host/guest.amdsmi.handamdsmi_interface.py.amdsmi_clk_info_tstructAMDSMIprefix to multiple structures.dpm_policyreferences tosoc_pstate.amdsmi_get_gpu_board_info()product_name to fallback topciidsfile.amdsmi_get_gpu_board_info()now has larger structure sizes foramdsmi_board_info_t.Resolved issues
amd-smi processwith JSON and CSV format.amdsmi_get_gpu_board_info()no longer returns junk character strings.pp_od_clk_voltagewithinamdsmi_get_gpu_od_volt_info.amd-smi reset --gpureset --gpu alland then running an instance ofamd-smi static(or anyother subcommand that access the GPUs) a mutex would lock and not return requiring either a
clear of the mutex in
/dev/shmor rebooting the machine.Known issues
amdsmi_get_gpu_process_isolationandamdsmi_clean_gpu_local_datacommands do not work.They will be supported in a future release.
See issue #3500 on GitHub.
Composable Kernel (1.1.0)
Changes
fp16in grouped convolution backward weight (Whats the current status on APU ssupport ? #1280).CK_TILElayernorm example (Memory access fault by GPU node-4 (Agent handle: 0x152e220) on address (nil). Reason: Page not present or supervisor privilege. #1339).CK_TILE-based Flash Attention 2 kernel is now merged into the upstream repository as ROCm backend.Optimizations
FP8GEMM performance optimization and tuning (Unable to install ROCm #1384).HIP (6.2.0)
Changes
Added the
_sync()version of crosslane builtins such asshfl_sync(),__all_sync()and__any_sync(). These takea 64-bit integer as an explicit mask argument.
HIP_ENABLE_WARP_SYNC_BUILTINS, and will be enabledunconditionally in a future HIP release.
Added new HIP APIs:
hipGetProcAddressreturns the pointer to driver function, corresponding to the defined driver function symbol.hipGetFuncBySymbolreturns the pointer to device entry function that matches entry functionsymbolPtr.hipStreamBeginCaptureToGraphbegins graph capture on a stream to an existing graph.hipGraphInstantiateWithParamscreates an executable graph from a graph.Added a new flag
integrated-- supported in device property.hipDeviceProp_t. On the integrated APU system, the runtime driverdetects and sets this flag to
1, in which case the APIhipDeviceGetAttributereturns enumhipDeviceAttribute_tforhipDeviceAttributeIntegratedas value 1, for integrated GPU device.Added initial support for 8-bit floating point datatype in
amd_hip_fp8.h. These are accessible via#include <hip/hip_fp8.h>.Added UUID support for environment variable
HIP_VISIBLE_DEVICES.Resolved issues
hipTexRefGetArrayandhipTexRefGetBorderColor.Upcoming changes
_sync()version of crosslane builtins such asshfl_sync(),__all_sync(), and__any_sync()will be enabled unconditionally in a future HIP release.hipBLAS (2.2.0)
Changes
Added a new ILP64 API for level 2 functions for both C and FORTRAN (
_64name suffix) withint64_tfunction arguments.Added a new ILP64 API for level 1
_exfunctions.The
install.shscript now invokes thermake.pyscript. Made other various improvements to the build scripts.Changed library dependencies in the
install.shscript fromrocblasandrocsolverto the development packagesrocblas-devandrocsolver-dev.Updated Linux AOCL dependency to release 4.2
gccbuild.Updated Windows
vcpkgdependencies to release 2024.02.14.hipBLASLt (0.8.0)
Changes
*
hipblasltExtAMaxWithScale.GemmTuningextension parameter to setwgmby user.HIPBLASLT_MATMUL_DESC_AMAX_D_POINTERforFP8/BF8datatype.FP8/BF8input,FP32/FP16/BF16/F8/BF8output (gfx94x platform only).HIPBLASLT_MATMUL_DESC_COMPUTE_INPUT_TYPE_A_EXTandHIPBLASLT_MATMUL_DESC_COMPUTE_INPUT_TYPE_B_EXTforFP16input data type to useFP8/BF8MFMA.Optimizations
HIPCC (1.1.1)
Changes
Split
hipccpackage into two packages for different hardware platforms.Cleaned up references to environment variables.
Enabled
hipccandhipconfigbinaries (hipcc.bin,hipconfig.bin) bydefault, instead of their Perl counterparts.
Enabled function calls.
Added support for generating packages for ROCm stack targeting static libraries.
Resolved issues
hipCUB (3.2.0)
Changes
Added
DeviceCopyfunction for parity with CUB.Added
enum WarpExchangeAlgorithmto the rocPRIM backend, which is used asthe new optional template argument for
WarpExchange.WARP_EXCHANGE_SMEMandWARP_EXCHANGE_SHUFFLE.WARP_EXCHANGE_SMEMstands for the previous algorithm, whileWARP_EXCHANGE_SHUFFLEperforms the exchange via shuffle operations.WARP_EXCHANGE_SHUFFLEdoes not require any pre-allocated shared memory,but the
ItemsPerThreadmust be a divisor ofWarpSize.Added
tuple.hppwhich defines templateshipcub::tuple,hipcub::tuple_element,hipcub::tuple_element_tandhipcub::tuple_size.Added new overloaded member functions to
BlockRadixSortandDeviceRadixSortthat expose adecomposerargument. Keys of a custom type(
key_type) can be sorted via these overloads, if an appropriate decomposeris passed. The decomposer has to implement
operator(const key_type&)whichreturns a
hipcub::tupleof references pointing to members ofkey_type.On AMD GPUs (using the HIP backend), you can now issue hipCUB API calls inside of
HIP graphs, with several exceptions:
CachingDeviceAllocatorGridBarrierLifetimeDeviceSegmentedRadixSortDeviceRunLengthEncodeCurrently, these classes rely on one or more synchronous calls to function correctly. Because of this, they cannot be used inside of HIP graphs.
Removals
debug_synchronousin hipCUB-2.13.2, and it no longer has any effect. With this release, passingdebug_synchronousto the device functions results in a deprecation warning both at runtime and at compile time.
debug_synchronous=truecan now be achieved at compile timeby setting the
CUB_DEBUG_SYNC(or higher debug level) or theHIPCUB_DEBUG_SYNCpreprocessor definition.HIPCUB_IGNORE_DEPRECATED_APIpreprocessor definition.Resolved issues
It now derives the accumulator type as the result of the binary operator.
hipFFT (1.0.15)
Resolved issues
hip::hostas a public link library, ashipfft.hincludes HIP runtime headers.hipfftXtmatchcufftXtin geometry and alignment for 2D and 3D FFTs.HIPIFY (18.0.0)
Changes
Resolved issues
reinterpret_castfor an explicit conversion between pointer-to-function and pointer-to-object;affected functions:
hipFuncGetAttributes,hipFuncSetAttribute,hipFuncSetCacheConfig,hipFuncSetSharedMemConfig,hipLaunchKernel, andhipLaunchCooperativeKernel.hipRAND (2.11.0)
Changes
hiprandCreateGeneratorHostdispatches to the host generator in the rocRAND backend instead of returning withuHIPRAND_STATUS_NOT_IMPLEMENTED.ROCRAND_USE_HMMwas used in previousversions. The environment variable is now named
HIPRAND_USE_HMM.Removals
hcc.ROCRAND_DIR.Use
ROCRAND_PATHinstead.Resolved issues
amdgpu-target.hipSOLVER (2.2.0)
Changes
Added compatibility-only functions:
auxiliaryhipsolverDnCreateParams,hipsolverDnDestroyParams,hipsolverDnSetAdvOptionsgetrfhipsolverDnXgetrf_bufferSizehipsolverDnXgetrfgetrshipsolverDnXgetrsAdded support for building on Ubuntu 24.04 and CBL-Mariner.
Added
hip::hosttoroc::hipsolverusage requirements.Added functions
syevdx/heevdxhipsolverSsyevdx_bufferSize,hipsolverDsyevdx_bufferSize,hipsolverCheevdx_bufferSize,hipsolverZheevdx_bufferSizehipsolverSsyevdx,hipsolverDsyevdx,hipsolverCheevdx,hipsolverZheevdxsygvdx/hegvdxhipsolverSsygvdx_bufferSize,hipsolverDsygvdx_bufferSize,hipsolverChegvdx_bufferSize,hipsolverZhegvdx_bufferSizehipsolverSsygvdx,hipsolverDsygvdx,hipsolverChegvdx,hipsolverZhegvdxUpdated
csrlsvcholto perform numerical factorization on the GPU. The symbolic factorization is still performed on the CPU.Renamed
hipsolver-compat.htohipsolver-dense.h.Removals
cblasfrom the hipSOLVER test and benchmark clients.hipSPARSE (3.1.1)
Changes
Added the missing
hipsparseCscGet()routine.All internal hipSPARSE functions now exist inside a namespace.
Match deprecations found in cuSPARSE 12.x.x when using cuSPARSE backend.
Improved the user manual and contribution guidelines.
Resolved issues
SpGEMMandSpGEMM_reuseroutines that were not matching cuSPARSE behavior.Known Issues
hipsparseSpSM_solve(), the external buffer is currently passed as a parameter. This does not match the cuSPARSE APIand this extra external buffer parameter will be removed in a future release. For now this extra parameter can be
ignored and passed a
nullptras it is unused internally byhipsparseSpSM_solve().hipSPARSELt (0.2.1)
Optimizations
hipTensor (1.3.0)
Changes
amd-llvm-develpackage before system LLVM library.CC=amdclangCXX=amdclang++.Resolved issues
llvm-project (18.0.0)
Changes
LLVM IR
The
llvm.stacksaveandllvm.stackrestoreintrinsics now use an overloaded pointer type to support non-0 addressspaces.
Added
llvm.exp10intrinsic.LLVM infrastruture
clang-17.0.6.TableGen
Added constructs for debugging TableGen files:
dumpkeyword to dump messages to standard error. See #68793.!reprbang operator to inspect the content of values. See #68716.AArch64 backend
AMDGPU backend
llvm.sqrt.f32is now lowered correctly. Usellvm.amdgcn.sqrt.f32for raw instruction access.Implemented
llvm.stacksaveandllvm.stackrestoreintrinsics.Implemented
llvm.get.rounding.ARM backend
Added support for Cortex-M52 CPUs.
Added execute-only support for Armv6-M.
RISC-V backend
The
Zfaextension version was upgraded to 1.0 and is no longer experimental.Zihintntlextension version was upgraded to 1.0 and is no longer experimental.Intrinsics were added for
Zk*,Zbb, andZbc. SeeScalar Bit Manipulation Extension Intrinsics in the RISC-V C API specification.
Default ABI with F but without D was changed to ilp32f for RV32 and to lp64f for RV64.
The
Zvbb,Zvbc,Zvkb,Zvkg,Zvkn,Zvknc,Zvkned,Zvkng,Zvknha,Zvknhb,Zvks,Zvksc,Zvksed,Zvksg,Zvksh, andZvktextension version was upgraded to 1.0 and is no longer experimental. However,the C intrinsics for these extensions are still experimental. To use the C intrinsics for these extensions,
-menable-experimental-extensionsneeds to be passed to Clang.-mcpu=sifive-p450was added.CodeGen of
RV32EandRV64Eis supported experimentally.CodeGen of
ilp32eandlp64eis supported experimentally.X86 backend
Added support for the RDMSRLIST and WRMSRLIST instructions.
Added support for the WRMSRNS instruction.
Support ISA of AMX-FP16 which contains
tdpfp16psinstruction.Support ISA of CMPCCXADD.
Support ISA of AVX-IFMA.
Support ISA of AVX-VNNI-INT8.
Support ISA of AVX-NE-CONVERT.
-mcpu=raptorlake,-mcpu=meteorlakeand-mcpu=emeraldrapidsare now supported.-mcpu=sierraforest,-mcpu=graniterapidsand-mcpu=grandridgeare now supported.__builtin_unpredictable(unpredictable metadata in LLVM IR), is handled by X86 Backend. X86CmovConversion pass nowrespects this builtin and does not convert CMOVs to branches.
Add support for the PBNDKB instruction.
Support ISA of SHA512.
Support ISA of SM3.
Support ISA of SM4.
Support ISA of AVX-VNNI-INT16.
-mcpu=graniterapids-dis now supported.The
i128type now matches GCC and clang’s__int128type. This mainly benefits external projects such as Rustwhich aim to be binary compatible with C, but also fixes code generation where LLVM already assumed that the type
matched and called into
libgcchelper functions.Support ISA of USER_MSR.
Support ISA of AVX10.1-256 and AVX10.1-512.
-mcpu=pantherlakeand-mcpu=clearwaterforestare now supported.-mapxfis supported.Marking global variables with
code_model = "small"/"large"in the IR now overrides the global code model to allow32-bit relocations or require 64-bit relocations to the global variable.
The medium code model’s code generation was audited to be more similar to the small code model where possible.
C API
Added
LLVMGetTailCallKindandLLVMSetTailCallKindto allow getting and settingtail,musttail, andnotailattributes on call instructions.Added
LLVMCreateTargetMachineWithOptions, along with helper functions for an opaque option structure, as analternative to
LLVMCreateTargetMachine. The option structure exposes an additional setting (that is, the targetABI) and provides default values for unspecified settings.
Added
LLVMGetNNegandLLVMSetNNegfor getting and setting the newnnegflag on zext instructions, andLLVMGetIsDisjointandLLVMSetIsDisjointfor getting and setting the new disjoint flag on or instructions.Added the following functions for manipulating operand bundles, as well as building call and invoke instructions
that use operand bundles:
LLVMBuildCallWithOperandBundlesLLVMBuildInvokeWithOperandBundlesLLVMCreateOperandBundleLLVMDisposeOperandBundleLLVMGetNumOperandBundlesLLVMGetOperandBundleAtIndexLLVMGetNumOperandBundleArgsLLVMGetOperandBundleArgAtIndexLLVMGetOperandBundleTagAdded
LLVMGetFastMathFlagsandLLVMSetFastMathFlagsfor getting and setting the fast-math flags of aninstruction, as well as
LLVMCanValueUseFastMathFlagsfor checking if an instruction can use such flag.CodeGen infrastructure
isel-dumpis added to show only the SelectionDAG dumps after each ISel phase (i.e.-debug-only=isel-dump). This new debug type can be filtered by function names using-filter-print-funcs=<function names>, the same flag used to filter IR dumps after each Pass. Note that theexisting
-debug-only=iselwill take precedence over the new behavior and print SelectionDAG dumps of every singlefunction regardless of
-filter-print-funcs’s values.Metadata info
!{!”llvm.loop.align”, i32 64}.LLVM tools
llvm-symbolizernow treats invalid input as an address for which source information is not found.llvm-readelfnow supports--extra-sym-info(-X) to display extra information (section name) when showingsymbols.
llvm-readobj --elf-output-style=JSONno longer prefixes each JSON object with the file name. Previously, eachobject file’s output looked like
"main.o":{"FileSummary":{"File":"main.o"},...}but is now{"FileSummary":{"File":"main.o"},...}. This allows each JSON object to be parsed in the same way, since eachobject no longer has a unique key. Tools that consume
llvm-readobj’s JSON output should update their parsersaccordingly.
llvm-objdumpnow uses--print-imm-hexby default, which brings its default behavior closer in line withobjdump.llvm-nmnow supports the--line-numbers(-l) option to use debugging information to print symbols’ filenames and line numbers.llvm-symbolizerandllvm-addr2linenow support addresses specified as symbol names.llvm-objcopynow supports--gap-filland--pad-tooptions, for ELF input and binary output files only.LLDB
SBType::FindDirectNestedTypefunction is added. It’s useful for formatters to quickly find directly nested typewhen it’s known where to search for it, avoiding more expensive global search via
SBTarget::FindFirstType.Renamed
lldb-vscodetolldb-dapand updated its installation instructions to reflect this. The underlyingfunctionality remains unchanged.
The
mte_ctrlregister can now be read from AArch64 Linux core files.LLDB on AArch64 Linux now supports debugging the Scalable Matrix Extension (SME) and Scalable Matrix Extension 2
(SME2) for both live processes and core files. For details refer to the AArch64 Linux documentation.
LLDB now supports symbol and binary acquisition automatically using the DEBUFINFOD protocol. The standard mechanism
of specifying DEBUFINOD servers in the DEBUGINFOD_URLS environment variable is used by default. In addition, users
can specify servers to request symbols from using the LLDB setting
plugin.symbol-locator.debuginfod.server_urls,override or adding to the environment variable.
When running on AArch64 Linux,
lldb-servernow provides register field information for the following registers:cpsr,fpcr,fpsr,svcrandmte_ctrl.Sanitizers
Removals
LLVM IR
The constant expression variants of the following instructions have been removed:
andorlshrashrzextsextfptruncfpextfptouifptosiuitofpsitofpRISC-V backend
instructions were part of “SiFive Custom Instruction Extension”. The LLVM project needs to work with
SiFive to define and document real extension names for individual CSRs and instructions.
Python bindings
C API
The following functions for creating constant expressions have been removed, because the underlying constant
expressions are no longer supported. Instead, an instruction should be created using the
LLVMBuildXYZAPIs, whichwill constant fold the operands if possible and create an instruction otherwise:
LLVMConstAndLLVMConstOrLLVMConstLShrLLVMConstAShrLLVMConstZExtLLVMConstSExtLLVMConstZExtOrBitCastLLVMConstSExtOrBitCastLLVMConstIntCastLLVMConstFPTruncLLVMConstFPExtLLVMConstFPToUILLVMConstFPToSILLVMConstUIToFPLLVMConstSIToFPLLVMConstFPCastCodeGen infrastructure
PrologEpilogInserterno longer supports register scavenging during forwards frame index elimination. Targetsshould use backwards frame index elimination instead.
RegScavengerno longer supports forwards register scavenging. Clients should use backwards register scavenginginstead, which is preferred because it does not depend on accurate kill flags.
LLDB
SBWatchpoint::GetHardwareIndexis deprecated and now returns-1to indicate the index is unavailable.Methods in
SBHostOSrelated to threads have had their implementations removed. These methods will return a valueindicating failure.
Resolved issues
AArch64 backend
options are not enabled by default for Armv9 cores, so
-mcpu=neoverse-n2+cryptois now required to enable crypto forthis core. As far as the compiler is concerned, Armv9.0a has the same features enabled as Armv8.5a, with the
exception of crypto.
Windows target
UniqueIDand functionequivalent() no longer determine that distinct different pathnames for the same hard linked file actually are equal. This is an intentional tradeoff in a bug fix, where the bug
used to cause distinct files to be considered equivalent on some file systems. This change fixed the issues
https://github.com/llvm/llvm-project/issues/61401 and https://github.com/llvm/llvm-project/issues/22079.
Known issues
The compiler may incorrectly compile a program that uses the
__shfl(var, srcLane, width)function when one of the parameters tothe function is undefined along some path to the function. For most functions,
uninitialized inputs cause undefined behavior.
As a workaround, initialize the parameters to
__shfl. For example:See issue #3499 on GitHub.
MIGraphX (2.10.0)
Changes
FP8Python API.--testflag inmigraphx-driverto validate the installation.uint8support in ONNX Operators.Removals
--modelflag withmigraphx-driver.Optimizations
memcpyswith ONNX Runtime to improve performance.Resolved issues
FP16.int8andint32inputs.migraphx-driverwith the--run 1option.FP32.dim (-1)in the reshape operator.int8accuracy and models which were failing due to requiring a fourth bias input.int8quantization which were causing inaccuracies and slowdowns.Removed list initializer of
prefix_scan_sumwhich was causing issues during compilation.MIGRAPHX_GPU_COMPILE_PARALLELflag to enable users to control number of threads used for parallel compilation.MIOpen (3.2.0)
Changes
Resolved issues
GemmBwdRest.GetWorkSpaceSize.Optimizations
MIVisionX (3.0.0)
Changes
Removals
Resolved issues
Known issues
Omniperf (2.0.1)
Known issues
Error when running Omniperf with an application with command line arguments. As a workaround, create an
intermediary script to call the application with the necessary arguments, then call the script with Omniperf. This
issue is fixed in a future release of Omniperf. See #347.
Omniperf might not work with AMD Instinct MI300 accelerators out of the box, resulting in the following error:
"ERROR gfx942 is not enabled rocprofv1. Available profilers include: ['rocprofv2']". As a workaround, add the
environment variable
export ROCPROF=rocprofv2.Omniperf's Python dependencies may not be installed with your ROCm installation, resulting in the following message:
"[ERROR] The 'dash>=1.12.0' package was not found in the current execution environment.
[ERROR] The 'dash-bootstrap-components' package was not found in the current execution environment.
Please verify all of the Python dependencies called out in the requirements file are installed locally prior to running omniperf.
See: /opt/rocm-6.2.0/libexec/omniperf/requirements.txt"
As a workaround, install these Python requirements manually:
pip install /opt/rocm-6.2.0/libexec/omniperf/requirements.txt.See issue #3498 on GitHub.
OpenMP (17.0.0)
Changes
libcfunctions on the GPU via theLLVM C Library for GPUs.
libcinterface.Removals
remoteandveplugins.Resolved issues
omp_get_wtimefor AMDGPU targets.RCCL (2.20.5)
Changes
fp8andrccl_bfloat8.fp16andfp8cases to unit tests.-noption fortopo_explto override the number of nodes.rccl_bfloat16with hip_bfloat16.Resolved issues
rocAL (1.0.0)
Changes
Removals
setup.py.Optimizations
Resolved issues
rocALUTION (3.2.0)
Changes
GetConvergenceHistoryfor ItILU0 preconditioner.Removals
LocalMatrix::ReadFileCSRLocalMatrix::WriteFileCSRGlobalMatrix::ReadFileCSRGlobalMatrix::WriteFileCSRrocBLAS (4.2.0)
Changes
Added Level 2 functions and level 3
trsmhave additional ILP64 API for both C and FORTRAN (_64name suffix) withint64_tfunction arguments.Added cache flush timing for
gemm_batched_ex,gemm_strided_batched_ex, andaxpy.Added Benchmark class for common timing code.
Added an environment variable
ROCBLAS_DEFAULT_ATOMICS_MODE; to set default atomics mode during creation ofrocblas_handle.Added support for single-precision (
fp32_r) input and double-precision (fp64_r) output and compute types by extendingdot_ex.Updated Linux AOCL dependency to release 4.2 gcc build.
Updated Windows vcpkg dependencies to release 2024.02.14.
Increased default device workspace from 32 to 128 MiB for architecture gfx9xx with xx >= 40.
Optimizations
dot_batchedanddot_strided_batchedfor all precisions. Performance enhanced by 6 times for bigger problem sizes, as measured on an Instinct MI210 accelerator.Removals
rocblas_gemm_ex3,gemm_batched_ex3andgemm_strided_batched_ex3. They will be removed in the nextmajor release of rocBLAS. Refer to hipBLASLt for future 8-bit float usage.
ROCdbgapi (0.75.0)
Removals
(AMD_DBGAPI_EXCEPTION_WAVE,AMD_DBGAPI_WAVE_STOP_REASON)_APERTURE_VIOLATIONto(AMD_DBGAPI_EXCEPTION_WAVE,AMD_DBGAPI_WAVE_STOP_REASON)_ADDRESS_ERROR.The old names are still accessible but deprecated.
rocDecode (0.6.0)
Changes
rocFFT (1.0.28)
Changes
the
--nrandoption (which defaults to 0).Optimizations
are transformed locally, with global transposes to make remaining dimensions contiguous.
rocm-cmake (0.13.0)
Changes
ROCmCreatePackagenow accepts a suffix parameter, automatically generating it for static or ASAN builds.CPACK_<GEN>_PACKAGE_NAME.ROCm Data Center Tool (1.0.0)
Changes
dmonmetrics.Removals
rocm_smi_libdependency due to migration to AMD SMI.ROCm Debugger (ROCgdb) (14.2)
Changes
ROCm SMI (7.3.0)
Changes
rsmi_dev_partition_id_get(..)).Resolved issues
ROCm Validation Suite (1.0.0)
Changes
Added stress tests:
IET (power) stress test for MI300A.
IET (power transition) test for MI300X.
Added support:
GEMM self-check and accuracy-check support for checking consistency and accuracy of GEMM output.
Trignometric float and random integer matrix data initialization support.
Updated GST performance benchmark test for better numbers.
rocPRIM (3.2.0)
Changes
warp_scan::exclusive_scanthat take no initial value. These new overloads will write an unspecified result to the first value of each warp.inclusive_scan(_by_key)andexclusive_scan(_by_key)is now exposed as an optional type parameter.This is the same behaviour as before this change.
device_adjacent_difference_inplacethat allows separate input and output iterators, but allows them to point to the same element.rocprim::invoke_resultrocprim::invoke_result_trocprim::invoke_result_binary_oprocprim::invoke_result_binary_op_trocprim::batch_copyfunction. Similar torocprim::batch_memcpy, but copies by element, not with memcpy.decomposerargument for all member functions ofrocprim::block_radix_sortand all functions ofdevice_radix_sort.To sort keys of an user-defined type, a decomposer functor should be passed. The decomposer should produce a
rocprim::tupleof references to arithmetic types from the key.
rocprim::predicate_iteratorwhich acts as a proxy for an underlying iterator based on a predicate.It iterates over proxies that holds the references to the underlying values, but only allow reading and writing if the predicate is
true.It can be instantiated with:
rocprim::make_predicate_iteratorrocprim::make_mask_iteratorblock_radix_sort. The default value is 4, it can be a number between 0 and 32.rocprim::radix_key_codec, which allows the encoding/decoding of keys for radix-based sorts. For user-defined key types, a decomposer functor should be passed.Optimizations
warp_sort_shuffleandblock_sort_bitonic.warp_exchangefunctionsblocked_to_striped_shuffleandstriped_to_blocked_shufflewhen the warpsize is equal to the items per thread.Resolved issues
warp_exchange::blocked_to_striped_shuffleandwarp_exchange::striped_to_blocked_shufflewhen the block size islarger than the logical warp size. The test suite has been updated with such cases.
unique_by_keywith overlappingvalues_inputandvalues_output.device_adjacent_difference.rocprim::inclusive_scan(_by_key)androcprim::exclusive_scan(_by_key)with large input types.device_adjacent_difference. It now considers both theinput and the output type for selecting the appropriate kernel launch config.
Previously only the input type was considered, which could result in compilation errors due to excessive shared memory usage.
rocprim::thread_loadwhen compiling with-O0.Removals
detail/match_result_type.hpp.TwiddleInandTwiddleOutin favor ofradix_key_codec.::rocprim::detail::radix_key_codecin favor of a new public utility with the same name.ROCProfiler (2.0.0)
Removals
pcsamplersample code due to deprecation from version 2.rocRAND (3.1.0)
Changes
Added
rocrand_create_generator_host.ROCRAND_RNG_PSEUDO_MRG31K3PROCRAND_RNG_PSEUDO_MRG32K3AROCRAND_RNG_PSEUDO_PHILOX4_32_10ROCRAND_RNG_PSEUDO_THREEFRY2_32_20ROCRAND_RNG_PSEUDO_THREEFRY2_64_20ROCRAND_RNG_PSEUDO_THREEFRY4_32_20ROCRAND_RNG_PSEUDO_THREEFRY4_64_20ROCRAND_RNG_PSEUDO_XORWOWROCRAND_RNG_QUASI_SCRAMBLED_SOBOL32ROCRAND_RNG_QUASI_SCRAMBLED_SOBOL64ROCRAND_RNG_QUASI_SOBOL32ROCRAND_RNG_QUASI_SOBOL64libtbb-devon Ubuntu and derivatives).Added the option to create a host generator to the Python wrapper.
Added the option to create a host generator to the Fortran wrapper
Added dynamic ordering. This ordering is free to rearrange the produced numbers,
which can be specific to devices and distributions. It is implemented for:
Added support for using Clang as the host compiler for alternative platform compilation.
C++ wrapper:
lfsr113_enginebeing constructed with a seed of typeunsigned long long, not onlyuint4.mt19937_engine.Added the following functions for the
ROCRAND_RNG_PSEUDO_MTGP32generator:rocrand_normal2rocrand_normal_double2rocrand_log_normal2rocrand_log_normal_double2Added
rocrand_create_generator_host_blockingwhich dispatches without stream semantics.Added host-side generator for
ROCRAND_RNG_PSEUDO_MTGP32.Added offset and skipahead functionality to LFSR113 generator.
Added dynamic ordering for architecture
gfx1102.For device-side generators, you can now wrap calls to
rocrand_generate_*inside of a hipGraph. There are a fewthings to be aware of:
rocrand_create_generator), initialization (rocrand_initialize_generator), and destruction (rocrand_destroy_generator) must still happen outside the hipGraph.rocrand_set_streamto set the stream the generator will use within the graph.rocrand_generate_poisson) are not yet supported inside of hipGraphs.test/test_rocrand_hipgraphs.cppBuilding rocRAND now requires a C++17 capable compiler, as the internal library sources now require it. However consuming rocRAND is still possible from C++11 as public headers don't make use of the new features.
Building rocRAND should be faster on machines with multiple CPU cores as the library has been
split to multiple compilation units.
C++ wrapper: the
min()andmax()member functions of the generators and distributions are nowstatic constexpr.Renamed and unified the existing
ROCRAND_DETAIL_.*_BM_NOT_IN_STATEtoROCRAND_DETAIL_BM_NOT_IN_STATEStatic and dynamic library: moved all internal symbols to namespaces to avoid potential symbol name collisions when linking.
Removals
state_typealias instead.rocrand_device::threefry2x32_20_engine::threefry2x32_20_staterocrand_device::threefry2x64_20_engine::threefry2x64_20_staterocrand_device::threefry4x32_20_engine::threefry4x32_20_staterocrand_device::threefry4x64_20_engine::threefry4x64_20_statesrc/rng/distribution/distributions.hpp.src/rng/device_engines.hpp.Known Issues
SOBOL64andSCRAMBLED_SOBOL64generate poisson-distributedunsigned long long intnumbers instead ofunsigned int. This will be fixed in a future release.ROCr Runtime (1.14.0)
Changes
rocSOLVER (3.26.0)
Changes
batchedandstrided_batchedversions)batchedandstrided_batchedversions)batchedandstrided_batchedversions)batchedandstrided_batchedversions)batchedandstrided_batchedversions)batchedandstrided_batchedversions)batchedandstrided_batchedversions)*_dir to *-path. Arguments of the form*_dirremain functional forbackwards compatibility.
Optimizations
splitluto extract the L and U triangular matrices from the result of sparse factorization matrix M, where M = (L - eye) + U.Resolved issues
rocSPARSE (3.2.0)
Changes
Added a new Merge-Path algorithm to SpMM, supporting CSR format.
Added support for row order to SpSM.
Added rocsparseio I/O functionality to the library.
Added
rocsparse_set_identity_permutation.Adjusted rocSPARSE dependencies to related HIP packages.
Binary size has been reduced.
A namespace has been wrapped around internal rocSPARSE functions and kernels.
rocsparse_csr_set_pointers,rocsparse_csc_set_pointers, androcsparse_bsr_set_pointersnow allow the column indices and values arrays to be nullptr ifnnzis 0.gfx803 target has been removed from address sanitizer builds.
Optimizations
Resolved issues
BUILD_ROCSPARSE_ILP64=ON.rocThrust (3.1.0)
Changes
system/hipandtestwith the upstream changes.rocprim::detail::invoke_resultto use the public APIrocprim::invoke_result.rocprim::device_adjacent_differenceforadjacent_differenceAPI call.thrust::detail::unique_by_keyto use rocPRIM'srocprim::unique_by_key.adjecent_differenceto make use ofrocprim:adjecent_differencewhen iterators are comparable and not equal otherwise userocprim:adjacent_difference_inplace.Known Issues
thrust::reduce_by_keyoutputs are not bit-wise reproducible, as run-to-run results for pseudo-associative reduction operators (e.g. floating-point arithmetic operators) are not deterministic on the same device.rocWMMA (1.5.0)
Changes
Added internal utilities for:
Added internal aos<->soa transforms for block sizes of 16, 32, 64, 128 and 256 and vector widths of 2, 4, 8 and 16.
Added tests for new internal transforms.
Improved loading layouts by increasing vector width for fragments with
blockDim > 32.API
applyDataLayouttransform now accepts WaveCount template argument for cooperative fragments.API
applyDataLayouttransform now physically applies aos<->soa transform as necessary.Refactored entry-point of std library usage to improve hipRTC support.
Updated installation, programmer's guide and API reference documentation.
Resolved issues
RPP (1.8.0)
Changes
--usecase=rocm.CHECK_RETURN_STATUSeverywhere to adhere to C++17 for HIP.HIP.Tensile (4.41.0)
Changes
New tuning script to summarize rocBLAS log file
New environment variable to test fixed grid size with Stream-K kernels
New Stream-K dynamic mode to run large problems at slightly reduced CU count if it improves work division and power
Add reject conditions for SourceKernel + PrefetchGlobalRead/LoopDoWhile
Add reject condition for PreloadKernelArguments (disable PreloadKernelArguments if not supported (instead of rejecting kernel generation))
Support NT flag for global load and store for gfx94x
New Kernarg preloading feature (DelayRemainingArgument: initiate the load of the remaining (non-preloaded) arguments, updated AsmCaps, AsmRegisterPool to track registers for arguments and preload)
Add option for rotating buffers timing with cache eviction
Add predicate for arithmetic intensity
Add DirectToVgpr + packing for f8/f16 + TLU cases
Enable negative values for ExtraLatencyForLR to reduce interval of local read and wait for DTV
Add test cases for DirectToVgpr + packing
Add batch support for Stream-K kernels and new test cases
New tuning scripts to analyze rocblas-bench results and remove tuned sizes from liblogic
Enable VgprForLocalReadPacking + PrefetchLocalRead=1 (removed the reject condition for VFLRP + PLR=1, added test cases for VFLRP + PLR=1)
Support VectorWidthB (new parameter VectorWidthB)
Support VectorWidth + non SourceSwap
Add test cases for VectorWidthB, VectorWidth + non SourceSwap
Add code owners file
New environment variables to dynamically adjust number of CUs used in Stream-K
Add new parameters to specify global load width for A and B separately (GlobalLoadVectorWidthA, B (effective with GlobalReadVectorWidth=-1))
Add xf32 option to rocblas-bench input creator
Update rocBLAS-bench-input-create script (added number of iteration based on performance, rotating buffer flag)
Limit build threads based on CPUs/RAM available on system (for tests)
Update required workspace size for Stream-K, skip kernel initialization when possible
Use fallback libraries for archs without optimized logic
Use hipMemcpyAsync for validation (replace hipMemcpy with hipMemcpyAsync + hipStreamSynchronize in ReferenceValidator)
Remove OCL tests
Disable HostLibraryTests
Reduce extended test time by removing extra parameters in the test config files
Disable InitAccVgprOpt for Stream-K
Skip sgemm 64bit offset tests for gfx94x
Skip DTV, DTL, LSU+MFMA tests for gfx908
Increase extended test timeout to 720 min
Update xfail test (1sum tests only failing on gfx90a)
Update lib logic convertor script
Test limiting CI threads for only gfx11
wGM related kernargs are removed if they are not needed (WGM=-1,0,1)
Cleanup on unused old code, mostly related to old client
Change GSUA to SingleBuffer if GlobalSplitU=1 + MultipleBuffer, instead of rejecting it
Update efficiency script for new architecture and xf32 datatype
Re-enable negative values for WorkGroupMapping (asm kernel only)
Disable HW monitor for aquvavanjaram941
Pre-apply offsets for strided batch kernels
Update tensile build with 16 threads
Optimizations
Resolved issues
WorkspaceCheckimplementation when used in rocBLAS.MasterSolutionLibraryindexing for multiple architecture build.GlobalReadCoalesceGroup.ROCm known issues
ROCm known issues are noted on {fab}
githubGitHub. For knownissues related to individual components, review the Detailed component changes.
Default processor affinity behavior for helper threads
Processor affinity is a critical setting to ensure that ROCm helper threads run on the correct cores. By default, ROCm
helper threads are spawned on all available cores, ignoring the parent thread’s processor affinity. This can lead to
threads competing for available cores, which may result in suboptimal performance. This behavior occurs by default if
the environment variable
HSA_OVERRIDE_CPU_AFFINITY_DEBUGis not set or is set to1. IfHSA_OVERRIDE_CPU_AFFINITY_DEBUGis set to0, the ROCr runtime uses the parent process's core affinity mask whencreating helper threads. The parent’s affinity mask should then be set to account for the presence of additional threads
by ensuring the affinity mask contains enough cores. Depending on the affinity settings of the software environment,
batch system, launch commands like
numactl/taskset, or explicit mask manipulation by the application itself, changingthe setting may be advantageous to performance.
To ensure the parent's core affinity mask is honored by the ROCm helper threads, set the
HSA_OVERRIDE_CPU_AFFINITY_DEBUGenvironment variable as follows:To ensure ROCm helper threads run on all available cores, set the
HSA_OVERRIDE_CPU_AFFINITY_DEBUGenvironment variableas follows:
export HSA_OVERRIDE_CPU_AFFINITY_DEBUG=1Or the default:
unset HSA_OVERRIDE_CPU_AFFINITY_DEBUGIf unsure of the default processor affinity settings for your environment, run the following command from the shell:
bash -c "echo taskset -p \$\$"See issue #3493 on GitHub.
Display issues on servers with Instinct MI300-series accelerators when loading AMDGPU driver
AMD Instinct MI300-series accelerators and third-party GPUs such as the Matrox G200 have an issue impacting video
output. The issue was reproduced on a Dell server model PowerEdge XE9680. Servers from other vendors utilizing Matrox
G200 cards may be impacted as well. This issue was found with ROCm 6.2.0 but is present in older ROCm versions.
The AMDGPU driver shipped with ROCm interferes with the operation of the display card video output. On Dell systems,
this includes both the local video output and remote access via iDRAC. The display appears blank (black) after loading
the
amdgpudriver modules. Video output impacts both terminal access when running inrunlevel 3and GUI access whenrunning in
runlevel 5. Server functionality can still be accessed via SSH or other remote connection methods.See issue #3494 on GitHub.
KFDTest failure on Instinct MI300X with Oracle Linux 8.9
The
KFDEvictTest.QueueTestis failing on the MI300X platform during KFD (Kernel Fusion Driver) tests, causing the fullsuite to not execute properly. This issue is suspected to be hardware-related.
See issue #3495 on GitHub.
Bandwidth limitation in gang and non-gang modes on Instinct MI300A
Expected target peak non-gang performance (~60GB/s) and target peak gang performance (~90GB/s) are not achieved. Both gang
and non-gang performance are observed to be limited at 45GB/s.
This issue will be addressed in a future ROCm release.
See issue #3496 on GitHub.
rocm-llvm-alt
ROCm provides an optional package --
rocm-llvm-alt-- that provides a closed-source compiler forusers interested in additional closed-source CPU optimizations. This feature is not functional in
the ROCm 6.2.0 release. Users who attempt to invoke the closed-source compiler will experience an
LLVM consumer-producer mismatch and the compilation will fail. There is no workaround that allows
use of the closed-source compiler. It is recommended to compile using the default open-source
compiler, which generates high-quality AMD CPU and AMD GPU code.
See issue #3492 on GitHub.
ROCm upcoming changes
The section notes upcoming changes to the ROCm software stack. For upcoming changes related to individual components, review
the Detailed component changes.
rocm-llvm-alt
The
rocm-llvm-altpackage will be removed in an upcoming release. Users relying on thefunctionality provided by the closed-source compiler should transition to the open-source compiler.
Once the
rocm-llvm-altpackage is removed, any compilation requesting functionality provided bythe closed-source compiler will result in a Clang warning: "[AMD] proprietary optimization compiler
has been removed".
This discussion was created from the release ROCm 6.2.0 Release.
All reactions