11 KiB
Release Notes
The release notes for the ROCm platform.
ROCm 5.5.0
What's New in This Release
HIP Enhancements
The ROCm v5.5 release consists of the following HIP enhancements:
Enhanced Stack Size Limit
In this release, the stack size limit is increased from 16k to 131056 bytes (or 128K - 16). Applications requiring to update the stack size can use hipDeviceSetLimit API.
hipcc Changes
The following hipcc changes are implemented in this release:
hipccwill not implicitly link tolibpthreadandlibrt, as they are no longer a link time dependence for HIP programs. Applications that depend on these libraries must explicitly link to them.-use-staticliband-use-sharedliboptions are deprecated.
Future Changes
-
Separation of
hipccbinaries (Perl scripts) from HIP tohipccproject. Users will access separatehipccpackage for installinghipccbinaries in future ROCm releases. -
In a future ROCm release, the following samples will be removed from the
hip-testsproject.hipBusbandWidthat https://github.com/ROCm-Developer-Tools/hip-tests/tree/develop/samples/1_Utils/shipBusBandwidthhipCommanderat https://github.com/ROCm-Developer-Tools/hip-tests/tree/develop/samples/1_Utils/hipCommander
Note that the samples will continue to be available in previous release branches.
New HIP APIs in This Release
Note
This is a pre-official version (beta) release of the new APIs and may contain unresolved issues.
Memory Management HIP APIs
The new memory management HIP API is as follows:
-
Sets information on the specified pointer [BETA].
hipError_t hipPointerSetAttribute(const void* value, hipPointer_attribute attribute, hipDeviceptr_t ptr);
Module Management HIP APIs
The new module management HIP APIs are as follows:
-
Launches kernel
fwith launch parameters and shared memory on stream with arguments passed tokernelParams, where thread blocks can cooperate and synchronize as they execute.hipError_t hipModuleLaunchCooperativeKernel(hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, hipStream_t stream, void** kernelParams); -
Launches kernels on multiple devices where thread blocks can cooperate and synchronize as they execute.
hipError_t hipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* launchParamsList, unsigned int numDevices, unsigned int flags);
HIP Graph Management APIs
The new HIP Graph Management APIs are as follows:
-
Creates a memory allocation node and adds it to a graph [BETA]
hipError_t hipGraphAddMemAllocNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, size_t numDependencies, hipMemAllocNodeParams* pNodeParams); -
Return parameters for memory allocation node [BETA]
hipError_t hipGraphMemAllocNodeGetParams(hipGraphNode_t node, hipMemAllocNodeParams* pNodeParams); -
Creates a memory free node and adds it to a graph [BETA]
hipError_t hipGraphAddMemFreeNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, size_t numDependencies, void* dev_ptr); -
Returns parameters for memory free node [BETA].
hipError_t hipGraphMemFreeNodeGetParams(hipGraphNode_t node, void* dev_ptr); -
Write a DOT file describing graph structure [BETA].
hipError_t hipGraphDebugDotPrint(hipGraph_t graph, const char* path, unsigned int flags); -
Copies attributes from source node to destination node [BETA].
hipError_t hipGraphKernelNodeCopyAttributes(hipGraphNode_t hSrc, hipGraphNode_t hDst); -
Enables or disables the specified node in the given graphExec [BETA]
hipError_t hipGraphNodeSetEnabled(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, unsigned int isEnabled); -
Query whether a node in the given graphExec is enabled [BETA]
hipError_t hipGraphNodeGetEnabled(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, unsigned int* isEnabled);
OpenMP Enhancements
This release consists of the following OpenMP enhancements:
- Additional support for OMPT functions
get_device_timeandget_record_type. - Add support for min/max fast fp atomics on AMD GPUs.
- Fix the use of the abs function in C device regions.
Deprecations and Warnings
HIP Deprecation
The hipcc and hipconfig Perl scripts are deprecated. In a future release, compiled binaries will be available as hipcc.bin and hipconfig.bin as replacements for the Perl scripts.
Note
There will be a transition period where the Perl scripts and compiled binaries are available before the scripts are removed. There will be no functional difference between the Perl scripts and their compiled binary counterpart. No user action is required. Once these are available, users can optionally switch to
hipcc.binandhipconfig.bin. Thehipcc/hipconfigsoft link will be assimilated to point fromhipcc/hipconfigto the respective compiled binaries as the default option.
Linux Filesystem Hierarchy Standard for ROCm
ROCm packages have adopted the Linux foundation filesystem hierarchy standard in this release to ensure ROCm components follow open source conventions for Linux-based distributions. While moving to a new filesystem hierarchy, ROCm ensures backward compatibility with its 5.1 version or older filesystem hierarchy. See below for a detailed explanation of the new filesystem hierarchy and backward compatibility.
New Filesystem Hierarchy
The following is the new filesystem hierarchy:4
/opt/rocm-<ver>
| --bin
| --All externally exposed Binaries
| --libexec
| --<component>
| -- Component specific private non-ISA executables (architecture independent)
| --include
| -- <component>
| --<header files>
| --lib
| --lib<soname>.so -> lib<soname>.so.major -> lib<soname>.so.major.minor.patch
(public libraries linked with application)
| --<component> (component specific private library, executable data)
| --<cmake>
| --components
| --<component>.config.cmake
| --share
| --html/<component>/*.html
| --info/<component>/*.[pdf, md, txt]
| --man
| --doc
| --<component>
| --<licenses>
| --<component>
| --<misc files> (arch independent non-executable)
| --samples
Note
ROCm will not support backward compatibility with the v5.1(old) file system hierarchy in its next major release.
For more information, refer to https://refspecs.linuxfoundation.org/fhs.shtml.
Backward Compatibility with Older Filesystems
ROCm has moved header files and libraries to its new location as indicated in the above structure and included symbolic-link and wrapper header files in its old location for backward compatibility.
Note
ROCm will continue supporting backward compatibility until the next major release.
Wrapper header files
Wrapper header files are placed in the old location (/opt/rocm-xxx/<component>/include) with a warning message to include files from the new location (/opt/rocm-xxx/include) as shown in the example below:
// Code snippet from hip_runtime.h
#pragma message “This file is deprecated. Use file from include path /opt/rocm-ver/include/ and prefix with hip”.
#include "hip/hip_runtime.h"
The wrapper header files’ backward compatibility deprecation is as follows:
#pragmamessage announcing deprecation -- ROCm v5.2 release#pragmamessage changed to#warning-- Future release#warningchanged to#error-- Future release- Backward compatibility wrappers removed -- Future release
Library files
Library files are available in the /opt/rocm-xxx/lib folder. For backward compatibility, the old library location (/opt/rocm-xxx/<component>/lib) has a soft link to the library at the new location.
Example:
$ ls -l /opt/rocm/hip/lib/
total 4
drwxr-xr-x 4 root root 4096 May 12 10:45 cmake
lrwxrwxrwx 1 root root 24 May 10 23:32 libamdhip64.so -> ../../lib/libamdhip64.so
CMake Config files
All CMake configuration files are available in the /opt/rocm-xxx/lib/cmake/<component> folder.
For backward compatibility, the old CMake locations (/opt/rocm-xxx/<component>/lib/cmake) consist of a soft link to the new CMake config.
Example:
$ ls -l /opt/rocm/hip/lib/cmake/hip/
total 0
lrwxrwxrwx 1 root root 42 May 10 23:32 hip-config.cmake -> ../../../../lib/cmake/hip/hip-config.cmake
ROCm Support For Code Object V3 Deprecated
Support for Code Object v3 is deprecated and will be removed in a future release.
Comgr V3.0 Changes
The following APIs and macros have been marked as deprecated. These are expected to be removed in a future ROCm release and coincides with the release of Comgr v3.0.
API Changes
amd_comgr_action_info_set_options()amd_comgr_action_info_get_options()
Actions and Data Types
AMD_COMGR_ACTION_ADD_DEVICE_LIBRARIESAMD_COMGR_ACTION_COMPILE_SOURCE_TO_FATBIN
For replacements, see the AMD_COMGR_ACTION_INFO_GET/SET_OPTION_LIST APIs, and the AMD_COMGR_ACTION_COMPILE_SOURCE_(WITH_DEVICE_LIBS)_TO_BC macros.
Deprecated Environment Variables
The following environment variables are removed in this ROCm release:
GPU_MAX_COMMAND_QUEUESGPU_MAX_WORKGROUP_SIZE_2D_XGPU_MAX_WORKGROUP_SIZE_2D_YGPU_MAX_WORKGROUP_SIZE_3D_XGPU_MAX_WORKGROUP_SIZE_3D_YGPU_MAX_WORKGROUP_SIZE_3D_ZGPU_BLIT_ENGINE_TYPEGPU_USE_SYNC_OBJECTSAMD_OCL_SC_LIBAMD_OCL_ENABLE_MESSAGE_BOXGPU_FORCE_64BIT_PTRGPU_FORCE_OCL20_32BITGPU_RAW_TIMESTAMPGPU_SELECT_COMPUTE_RINGS_IDGPU_USE_SINGLE_SCRATCHGPU_ENABLE_LARGE_ALLOCATIONHSA_LOCAL_MEMORY_ENABLEHSA_ENABLE_COARSE_GRAIN_SVMGPU_IFH_MODEOCL_SYSMEM_REQUIREMENTOCL_CODE_CACHE_ENABLEOCL_CODE_CACHE_RESET
Known Issues In This Release
The following are the known issues in this release.
DISTRIBUTED/TEST_DISTRIBUTED_SPAWN Fails
When user applications call ncclCommAbort to destruct communicators and then create new
communicators repeatedly, subsequent communicators may fail to initialize.
This issue is under investigation and will be resolved in a future release.
Failures In HIP Directed Tests
Multiple HIP directed tests fail.