diff --git a/projects/clr/CHANGELOG.md b/projects/clr/CHANGELOG.md index 51b60d127c..940517b2de 100644 --- a/projects/clr/CHANGELOG.md +++ b/projects/clr/CHANGELOG.md @@ -3,87 +3,18 @@ Full documentation for HIP is available at [docs.amd.com](https://docs.amd.com/) ## HIP 6.1 (For ROCm 6.1) +### Optimizations + +### Added +- New environment variable HIP_LAUNCH_BLOCKING +It is used for serialization on kernel execution. +The default value is 0 (disable), kernel will execute normally as defined in the queue. When this environment variable is set as 1 (enable), HIP runtime will serialize kernel enqueue, behaves the same as AMD_SERIALIZE_KERNEL. +- Added HIPRTC support for hip headers driver_types, math_functions, library_types, math_functions, hip_math_constants, channel_descriptor, device_functions, hip_complex, surface_types, texture_types. ### Changed - HIPRTC now assumes WGP mode for gfx10+. CU mode can be enabled by passing `-mcumode` to the compile options from `hiprtcCompileProgram`. -### Added -- Added HIPRTC support for hip headers driver_types, math_functions, library_types, math_functions, hip_math_constants, channel_descriptor, device_functions, hip_complex, surface_types, texture_types. - -## HIP 6.0 (For ROCm 6.0) - -### Optimizations - -### Added -- New fields for external resource interoperability, - Structs, - - hipExternalMemoryHandleDesc_st - - hipExternalMemoryBufferDesc_st - - hipExternalSemaphoreHandleDesc_st - - hipExternalSemaphoreSignalParams_st - - hipExternalSemaphoreWaitParams_st - Enumerations, - - hipExternalMemoryHandleType_enum - - hipExternalSemaphoreHandleType_enum - - hipExternalMemoryHandleType_enum -- New environment variable HIP_LAUNCH_BLOCKING -It is used for serialization on kernel execution. -The default value is 0 (disable), kernel will execute normally as defined in the queue. When this environment variable is set as 1 (enable), HIP runtime will serialize kernel enqueue, behaves the same as AMD_SERIALIZE_KERNEL. -- More members are added in HIP struct hipDeviceProp_t, for new feature capabilities including, - - Texture - - int maxTexture1DMipmap; - - int maxTexture2DMipmap[2]; - - int maxTexture2DLinear[3]; - - int maxTexture2DGather[2]; - - int maxTexture3DAlt[3]; - - int maxTextureCubemap; - - int maxTexture1DLayered[2]; - - int maxTexture2DLayered[3]; - - int maxTextureCubemapLayered[2]; - - Surface - - int maxSurface1D; - - int maxSurface2D[2]; - - int maxSurface3D[3]; - - int maxSurface1DLayered[2]; - - int maxSurface2DLayered[3]; - - int maxSurfaceCubemap; - - int maxSurfaceCubemapLayered[2]; - - Device - - hipUUID uuid; - - char luid[8]; this is 8-byte unique identifier. Only valid on windows - - unsigned int luidDeviceNodeMask; -- LUID (Locally Unique Identifier) is supported for interoperability between devices. -In HIP, more members are added in the struct hipDeviceProp_t, as properties to identify each device, - - char luid[8]; - - unsigned int luidDeviceNodeMask; - - Note: HIP supports LUID only on Windows OS. -- Added `amd_hip_bf16.h` which adds `bfloat16` type. These definitions are accessible via `#include ` -This header exists alongside the older bfloat16 header in`amd_hip_bfloat16.h` which is included via `hip/hip_bfloat16.h`. Users are recommended to use `` instead of ``. - -### Changed -- Some OpenGL Interop HIP APIs are moved from the hip_runtime_api header to a new header file hip_gl_interop.h for the AMD platform, as following, - - hipGLGetDevices - - hipGraphicsGLRegisterBuffer - - hipGraphicsGLRegisterImage - -### Changes Impacting Backward Incompatibility -- Data types for members in HIP_MEMCPY3D structure are changed from "unsigned int" to "size_t". -- The value of the flag hipIpcMemLazyEnablePeerAccess is changed to “0x01”, which was previously defined as “0”. -- Some device property attributes are not currently support in HIP runtime, in order to maintain consistency, the following related enumeration names are changed in hipDeviceAttribute_t - - hipDeviceAttributeName is changed to hipDeviceAttributeUnused1 - - hipDeviceAttributeUuid is changed to hipDeviceAttributeUnused2 - - hipDeviceAttributeArch is changed to hipDeviceAttributeUnused3 - - hipDeviceAttributeGcnArch is changed to hipDeviceAttributeUnused4 - - hipDeviceAttributeGcnArchName is changed to hipDeviceAttributeUnused5 -- HIP struct hipArray is removed from driver type header to be comlpying with cuda -- hipArray_t replaces hipArray*, as the pointer to array. - - This allows hipMemcpyAtoH and hipMemcpyHtoA to have the correct array type which is equivalent to coresponding CUDA driver APIs. ### Fixed -- Kernel launch maximum dimension validation is added specifically on gridY and gridZ in the HIP API hipModule-LaunchKernel. As a result,when hipGetDeviceAttribute is called for the value of hipDeviceAttributeMaxGrid-Dim, the behavior on the AMD platform is equivalent to NVIDIA. -- The HIP stream synchronisation behaviour is changed in internal stream functions, in which a flag "wait" is added and set when the current stream is null pointer while executing stream synchronisation on other explicitly created streams. This change avoids blocking of execution on null/default stream. -The change won't affect usage of applications, and makes them behave the same on the AMD platform as NVIDIA. -- Error handling behavior on unsupported GPU is fixed, HIP runtime will log out error message, instead of creating signal abortion error which is invisible to developers but continued kernel execution process. This is for the case when developers compile any application via hipcc, setting the option --offload-arch with GPU ID which is different from the one on the system. - HIP complex vector type multiplication and division operations. On AMD platform, some duplicated complex operators are removed to avoid compilation failures. In HIP, hipFloatComplex and hipDoubleComplex are defined as complex data types, @@ -95,6 +26,84 @@ Any application uses complex multiplication and division operations, need to rep Note: These complex operations are equivalent to corresponding types/functions on NVIDIA platform. +### Known Issues + +## HIP 6.0 (For ROCm 6.0) + +### Optimizations + +### Added +- Addition of hipExtGetLastError + - AMD backend specific API, to return error code from last HIP API called from the active host thread + +- New fields for external resource interoperability, + - Structs + - hipExternalMemoryHandleDesc_st + - hipExternalMemoryBufferDesc_st + - hipExternalSemaphoreHandleDesc_st + - hipExternalSemaphoreSignalParams_st + - hipExternalSemaphoreWaitParams_st + - Enumerations + - hipExternalMemoryHandleType_enum + - hipExternalSemaphoreHandleType_enum + - hipExternalMemoryHandleType_enum + +- New members are added in HIP struct hipDeviceProp_t, for new feature capabilities including, + - Texture + - int maxTexture1DMipmap; + - int maxTexture2DMipmap[2]; + - int maxTexture2DLinear[3]; + - int maxTexture2DGather[2]; + - int maxTexture3DAlt[3]; + - int maxTextureCubemap; + - int maxTexture1DLayered[2]; + - int maxTexture2DLayered[3]; + - int maxTextureCubemapLayered[2]; + - Surface + - int maxSurface1D; + - int maxSurface2D[2]; + - int maxSurface3D[3]; + - int maxSurface1DLayered[2]; + - int maxSurface2DLayered[3]; + - int maxSurfaceCubemap; + - int maxSurfaceCubemapLayered[2]; + - Device + - hipUUID uuid; + - char luid[8]; + -- this is 8-byte unique identifier. Only valid on windows + -- LUID (Locally Unique Identifier) is supported for interoperability between devices. + - unsigned int luidDeviceNodeMask; \ + + Note: HIP supports LUID only on Windows OS. +- Added `amd_hip_bf16.h` which adds `bfloat16` type. These definitions are accessible via `#include ` +This header exists alongside the older bfloat16 header in`amd_hip_bfloat16.h` which is included via `hip/hip_bfloat16.h`. Users are recommended to use `` instead of ``. + +### Changed +- Some OpenGL Interop HIP APIs are moved from the hip_runtime_api header to a new header file hip_gl_interop.h for the AMD platform, as following, + - hipGLGetDevices + - hipGraphicsGLRegisterBuffer + - hipGraphicsGLRegisterImage +- With ROCm 6.0, the HIP version is 6.0. As the HIP runtime binary suffix is updated in every major ROCm release, in ROCm 6.0, the new filename is libamdhip64.so.6. Furthermore, in ROCm 6.0 release, the libamdhip64.so.5 binary from ROCm 5.7 is made available to maintain binary backward compatibility with ROCm 5.x. + +### Changes Impacting Backward Compatibility +- Data types for members in HIP_MEMCPY3D structure are changed from "unsigned int" to "size_t". +- The value of the flag hipIpcMemLazyEnablePeerAccess is changed to “0x01”, which was previously defined as “0”. +- Some device property attributes are not currently support in HIP runtime, in order to maintain consistency, the following related enumeration names are changed in hipDeviceAttribute_t + - hipDeviceAttributeName is changed to hipDeviceAttributeUnused1 + - hipDeviceAttributeUuid is changed to hipDeviceAttributeUnused2 + - hipDeviceAttributeArch is changed to hipDeviceAttributeUnused3 + - hipDeviceAttributeGcnArch is changed to hipDeviceAttributeUnused4 + - hipDeviceAttributeGcnArchName is changed to hipDeviceAttributeUnused5 +- HIP struct hipArray is removed from driver type header to be complying with cuda +- hipArray_t replaces hipArray*, as the pointer to array. + - This allows hipMemcpyAtoH and hipMemcpyHtoA to have the correct array type which is equivalent to coresponding CUDA driver APIs. + +### Fixed +- Kernel launch maximum dimension validation is added specifically on gridY and gridZ in the HIP API hipModule-LaunchKernel. As a result,when hipGetDeviceAttribute is called for the value of hipDeviceAttributeMaxGrid-Dim, the behavior on the AMD platform is equivalent to NVIDIA. +- The HIP stream synchronisation behaviour is changed in internal stream functions, in which a flag "wait" is added and set when the current stream is null pointer while executing stream synchronisation on other explicitly created streams. This change avoids blocking of execution on null/default stream. +The change won't affect usage of applications, and makes them behave the same on the AMD platform as NVIDIA. +- Error handling behavior on unsupported GPU is fixed, HIP runtime will log out error message, instead of creating signal abortion error which is invisible to developers but continued kernel execution process. This is for the case when developers compile any application via hipcc, setting the option --offload-arch with GPU ID which is different from the one on the system. + ### Deprecated And Removed - Deprecated Heterogeneous Compute (HCC) symbols and flags are removed from the HIP source code, including, - Build options on obsolete HCC_OPTIONS was removed from cmake. @@ -113,8 +122,15 @@ Any application uses complex multiplication and division operations, need to rep https://github.com/ROCm/clr/blob/develop/hipamd/include/hip/nvcc_detail - Deprecated gcnArch is removed from hip device struct hipDeviceProp_t. - Deprecated "enum hipMemoryType memoryType;" is removed from HIP struct hipPointerAttribute_t union. +- Deprecated HIT based tests are removed from HIP project +- Catch tests are available [hip-tests] (https://github.com/ROCm/hip-tests) project ### Known Issues +- Dynamically loaded HIP runtime library references incorrect version of hipDeviceGetProperties and hipChooseDevice APIs + +When an application dynamically loads the HIP runtime library from ROCm 6.0 and attempts to get the hipDeviceGetProperties and/or hipChooseDevice entry-points using dlsym, the application gets the older version (ROCm 5.7) of those entry-points. + +As a workaround, while compiling with ROCm 6.0, use the string "hipDeviceGetPropertiesR0600", and "hipChooseDeviceR0600" respectively for hipDeviceGetProperties and hipChooseDevice APIs. ## HIP 5.7.1 (For ROCm 5.7.1) diff --git a/projects/clr/README.md b/projects/clr/README.md index f5248235dd..9b46e3aba4 100644 --- a/projects/clr/README.md +++ b/projects/clr/README.md @@ -29,7 +29,7 @@ Building clr requires `rocm-hip-libraries` meta package, which provides the pre- Users can also build `OCL` and `HIP` at the same time by passing `-DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=ON` to configure command. -For detail instructions, please refer to [how to build HIP](https://github.com/ROCm/HIP/blob/develop/docs/developer_guide/build.md) +For detail instructions, please refer to [how to build HIP](https://rocm.docs.amd.com/projects/HIP/en/latest/developer_guide/build.html) ## Tests