CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
253 lines
12 KiB
Markdown
253 lines
12 KiB
Markdown
# Changelog for hipTensor
|
||
|
||
Full documentation for hipTensor is available at [rocm.docs.amd.com/projects/hiptensor](https://rocm.docs.amd.com/projects/hipTensor/en/latest/index.html).
|
||
|
||
## hipTensor 2.4.0
|
||
|
||
### Added
|
||
* Added a host-only stub `libhiptensor`, built automatically when `GPU_TARGETS` resolves to an empty target list (or explicitly with `-DHIPTENSOR_DISABLE_DEVICE=ON`), so the package, headers, and CMake config remain available and every API call returns `HIPTENSOR_STATUS_NOT_SUPPORTED` instead of failing to link.
|
||
* Added `ffm-quick` and `ffm-full` test categories for emulation tests.
|
||
|
||
### Changed
|
||
* Reorganized test configurations per tier and category.
|
||
|
||
### Optimized
|
||
* Reduced test execution duration.
|
||
|
||
### Resolved issues
|
||
* Enabled `-frtti` on Windows to fix RTTI-related build failures.
|
||
|
||
## hipTensor 2.3.0 for ROCm 7.14
|
||
|
||
### Added
|
||
* Added Windows support.
|
||
* Added contraction support with FP16 and BF16 data and compute types for gfx11 and gfx12 targets.
|
||
* Added support for the following new GPU targets:
|
||
* gfx11: gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, gfx1153.
|
||
* gfx12: gfx1200, gfx1201, gfx1250.
|
||
* Added unary element-wise operators to contraction, including the new `BilinearUnary` class, dedicated instances, samples, and tests.
|
||
* Added Dockerfiles (prebuilt and full build) and documentation to streamline hipTensor build environment setup.
|
||
* Added the `CREATE_TEST_APP_LOCAL_DEPLOY` CMake option to stage required ROCm DLLs on Windows, and updated the Windows build documentation accordingly.
|
||
* Added YAML-driven CTest test filter standardization, applying `quick`/`standard`/`comprehensive`/`full` tier labels to the installed test tree so tests can be run by tier with `ctest -L <tier>`.
|
||
* Added support for trinary contractions.
|
||
* Added hipTensor to the TheRock build system, enabling source builds, artifact distribution, and CI testing on both Linux and Windows.
|
||
* Added native Linux packages with HPC SDK metapackages: `amdrocm-hiptensor` (runtime), `amdrocm-hiptensor-devel` (headers and CMake config), and `amdrocm-hiptensor-test` (CTest binaries).
|
||
|
||
### Changed
|
||
* Replaced numeric UID-based actor-critic kernel lookup with platform-stable string-based kernel name comparison to enable cross-platform compatibility.
|
||
* Adopted FNV-1a string hashing in place of `std::hash` to ensure plan cache files are portable across platforms.
|
||
* Switched to ROCm-provided CMake install functions (`rocm_export_targets`) for consistency with other ROCm libraries.
|
||
* Adapted hipTensor to CK namespace changes for `host_tensor` functions.
|
||
* Cleaned up `rtest` script formatting and removed invalid run commands from `rtest.xml`.
|
||
|
||
### Removed
|
||
* Removed the legacy `.jenkins` folder since CI migration to rocJenkins.
|
||
|
||
### Optimized
|
||
* Improved column-major contraction performance by applying CK-style stride reordering for column-major inputs.
|
||
* Achieved 2x–3x speedup in contraction TFLOPS/s by using switch-case dispatch in `HiptensorUnaryOp` instead of static table lookup.
|
||
* Re-selected `HIPTENSOR_ALGO_ACTOR_CRITIC` winning kernels for all contraction type/rank/layout combinations to reflect current Composable Kernel tile parameters.
|
||
|
||
### Resolved issues
|
||
* Fixed use-after-free bug where `hiptensorCreatePlan` held dangling pointers to user-provided descriptors; the plan now deep-copies all descriptors.
|
||
* Fixed incorrect BF16 results in contraction with unary ops caused by silent `bhalf_t`-to-float integer promotion in cross-type overloads.
|
||
|
||
## hipTensor 2.2.0 for ROCm 7.2.0
|
||
|
||
### Added
|
||
|
||
* Added software-managed plan cache support.
|
||
* Added `hiptensorHandleWritePlanCacheToFile` to write the plan cache of a hipTensor handle to a file.
|
||
* Added `hiptensorHandleReadPlanCacheFromFile` to read a plan cache from a file into a hipTensor handle.
|
||
* Added `simple_contraction_plan_cache` to demonstrate plan cache usages.
|
||
* Added `plan_cache_test` to test the plan cache across various tensor ranks.
|
||
* Added C API headers to enable compatibility with C programs.
|
||
* Added a CMake function to allow projects to query architecture support.
|
||
* Added an option to configure the memory layout for tests and benchmarks.
|
||
|
||
### Changed
|
||
|
||
* hipTensor has been moved into the new rocm-libraries "monorepo" repository (https://github.com/ROCm/rocm-libraries). This repository consolidates a number of separate ROCm libraries and shared components.
|
||
* The repository migration requires a few changes to the CMake configuration of hipTensor.
|
||
* Updated C++ standard from C++17 to C++20.
|
||
* Include files `hiptensor/hiptensor.hpp` and `hiptensor/hiptensor_types.hpp` are now deprecated. Use `hiptensor/hiptensor.h` and `hiptensor/hiptensor_types.h` instead.
|
||
* Converted include guards from #ifndef/#define/#endif to #pragma once.
|
||
|
||
### Resolved issues
|
||
|
||
* Removed large tensor sizes causing problem in benchmarks.
|
||
|
||
## hipTensor 2.1.0 for ROCm 7.1.0
|
||
|
||
### Added
|
||
|
||
* Added large tensor lengths in benchmark YAML files.
|
||
* Added a new "-l" option to tests for redirecting logs to a file.
|
||
|
||
### Changed
|
||
|
||
* Replaced `permutation` with `elementwise` or `elementwise_permute` across folder names, file names, function names, and variable names.
|
||
|
||
### Resolved issues
|
||
|
||
* Fixed an issue where `hiptensor-test` files are not removed after uninstallation.
|
||
* Fixed memory leaks in the test code and cleared Valgrind leak reports.
|
||
|
||
## hipTensor 2.0.0 for ROCm 7.0.0
|
||
|
||
### Added
|
||
|
||
* Added element-wise binary operation support.
|
||
* Added element-wise trinary operation support.
|
||
* Added support for new GPU target gfx950.
|
||
* Added dynamic unary and binary operator support for element-wise operations and permutation.
|
||
* Added a CMake check for `f8` datatype availability.
|
||
* Added `hiptensorDestroyOperationDescriptor` to free all resources related to the provided descriptor.
|
||
* Added `hiptensorOperationDescriptorSetAttribute` to set attribute of a `hiptensorOperationDescriptor_t` object.
|
||
* Added `hiptensorOperationDescriptorGetAttribute` to retrieve an attribute of the provided `hiptensorOperationDescriptor_t` object.
|
||
* Added `hiptensorCreatePlanPreference` to allocate the `hiptensorPlanPreference_t` and enabled users to limit the applicable kernels for a given plan or operation.
|
||
* Added `hiptensorDestroyPlanPreference` to free all resources related to the provided preference.
|
||
* Added `hiptensorPlanPreferenceSetAttribute` to set attribute of a `hiptensorPlanPreference_t` object.
|
||
* Added `hiptensorPlanGetAttribute` to retrieve information about an already-created plan.
|
||
* Added `hiptensorEstimateWorkspaceSize` to determine the required workspaceSize for the given operation.
|
||
* Added `hiptensorCreatePlan` to allocate a `hiptensorPlan_t` object, select an appropriate kernel for a given operation and prepare a plan that encodes the execution.
|
||
* Added `hiptensorDestroyPlan` to free all resources related to the provided plan.
|
||
|
||
### Changed
|
||
|
||
* Removed architecture support for gfx940 and gfx941.
|
||
* Generalized opaque buffer now for any descriptor.
|
||
* Replaced `hipDataType` with `hiptensorDataType_t` for all supported types, for example, `HIP_R_32F` to `HIPTENSOR_R_32F`.
|
||
* Replaced `hiptensorComputeType_t` with `hiptensorComputeDescriptor_t` for all supported types.
|
||
* Replaced `hiptensorInitTensorDescriptor` with `hiptensorCreateTensorDescriptor`.
|
||
* Changed handle type and API usage from `*handle` to `handle`.
|
||
* Replaced `hiptensorContractionDescriptor_t` with `hipTensorOperationDescriptor_t`.
|
||
* Replaced `hiptensorInitContractionDescriptor` with `hiptensorCreateContraction`.
|
||
* Replaced `hiptensorContractionFind_t` with `hiptensorPlanPreference_t`.
|
||
* Replaced `hiptensorInitContractionFind` with `hiptensorCreatePlanPreference`.
|
||
* Replaced `hiptensorContractionGetWorkspaceSize` with `hiptensorEstimateWorkspaceSize`.
|
||
* Replaced `HIPTENSOR_WORKSPACE_RECOMMENDED` with `HIPTENSOR_WORKSPACE_DEFAULT`.
|
||
* Replaced `hiptensorContractionPlan_t` with `hiptensorPlan_t`.
|
||
* Replaced `hiptensorInitContractionPlan` with `hiptensorCreatePlan`.
|
||
* Replaced `hiptensorContraction` with `hiptensorContract`.
|
||
* Replaced `hiptensorPermutation` with `hiptensorPermute`.
|
||
* Replaced `hiptensorReduction` with `hiptensorReduce`.
|
||
* Replaced `hiptensorElementwiseBinary` with `hiptensorElementwiseBinaryExecute`.
|
||
* Replaced `hiptensorElementwiseTrinary` with `hiptensorElementwiseTrinaryExecute`.
|
||
* Removed function `hiptensorReductionGetWorkspaceSize`.
|
||
|
||
## hipTensor 1.5.0 for ROCm 6.4.0
|
||
|
||
### Added
|
||
|
||
* Added benchmarking suites for contraction, permutation, and reduction. YAML files are categorized into bench and validation folders for organization
|
||
* Added emulation test suites for contraction, permutation, and reduction
|
||
* Support has been added for changing the default data layout using the `HIPTENSOR_DEFAULT_STRIDES_COL_MAJOR` environment variable
|
||
|
||
### Changed
|
||
|
||
* Used `GPU_TARGETS` instead of `AMDGPU_TARGETS` in `cmakelists.txt`
|
||
* Binary sizes can be reduced on supported compilers by using the `--offload-compress` compiler flag
|
||
|
||
### Optimized
|
||
|
||
* Optimized the hyper-parameter selection algorithm for permutation
|
||
|
||
### Resolved issues
|
||
|
||
* For CMake bug workaround, set `CMAKE_NO_BUILTIN_CHRPATH` when `BUILD_OFFLOAD_COMPRESS` is unset
|
||
|
||
## hipTensor 1.4.0 for ROCm 6.3.0
|
||
|
||
### Added
|
||
|
||
* Added support for tensor reduction, including APIs, CPU reference, unit tests, and documentation
|
||
|
||
### Changed
|
||
|
||
* ASAN builds only support xnack+ targets.
|
||
* ASAN builds use `-mcmodel=large` to accommodate library sizes greater than 2GB.
|
||
* Updated the permute backend to accommodate changes to element-wise operations.
|
||
* Updated the actor-critic implementation.
|
||
|
||
### Optimized
|
||
|
||
* Split kernel instances to improve build times
|
||
|
||
### Resolved issues
|
||
|
||
* Fixed a bug in randomized tensor input data generation.
|
||
* Fixed the default strides calculation to be in column major order.
|
||
* Fixed a small memory leak by properly destroying HIP event objects in tests.
|
||
* Default strides calculations now follow column-major convention.
|
||
* Various documentation formatting updates and fixes.
|
||
|
||
## hipTensor 1.3.0 for ROCm 6.2.0
|
||
|
||
### Additions
|
||
|
||
* Added support for tensor permutation of ranks of 2, 3, 4, 5 and 6
|
||
* Added tests for tensor permutation of ranks of 2, 3, 4, 5 and 6
|
||
* Added support for tensor contraction of M6N6K6: M, N, K up to rank 6
|
||
* Added tests for tensor contraction of M6N6K6: M, N, K up to rank 6
|
||
* Added new test YAML parsing to support sequential parameters ordering
|
||
|
||
### Changes
|
||
|
||
* Documentation updates for installation, programmer's guide and API reference
|
||
* Prefer amd-llvm-devel package before system LLVM library
|
||
* Preferred compilers changed to CC=amdclang CXX=amdclang++
|
||
* Updated actor-critic selection for new contraction kernel additions
|
||
|
||
### Fixes
|
||
|
||
* Fixed LLVM parsing crash
|
||
* Fixed memory consumption issue in complex kernels
|
||
* Work-around implemented for compiler crash during debug build
|
||
* Allow random modes ordering for tensor contractions
|
||
|
||
## hipTensor 1.2.0 for ROCm 6.1.0
|
||
|
||
### Additions
|
||
|
||
* API support for permutation of rank 4 tensors: f16 and f32
|
||
* New datatype support in contractions of rank 4: f16, bf16, complex f32, complex f64
|
||
* Added scale and bilinear contraction samples and tests for new supported data types
|
||
* Added permutation samples and tests for f16, f32 types
|
||
|
||
### Fixes
|
||
|
||
* Fixed bug in contraction calculation with data type f32
|
||
|
||
## hipTensor 1.1.0 for ROCm 6.0.0
|
||
|
||
### Additions
|
||
|
||
* Architecture support for gfx940, gfx941, and gfx942
|
||
* Client tests configuration parameters now support YAML file input format
|
||
|
||
### Changes
|
||
|
||
* Doxygen now treats warnings as errors
|
||
|
||
### Fixes
|
||
|
||
* Client tests output redirections now behave accordingly
|
||
* Removed dependency static library deployment
|
||
* Security issues for documentation
|
||
* Compile issues in debug mode
|
||
* Corrected soft link for ROCm deployment
|
||
|
||
## hipTensor 1.0.0 for ROCm 5.7.0
|
||
|
||
### Additions
|
||
|
||
* Initial prototype enablement of hipTensor library that supports tensor operations
|
||
* Kernel selection support for Default and Actor-Critic algorithms
|
||
* API support for:
|
||
* Definition and contraction of rank 4 tensors
|
||
* Contextual logging and output redirection
|
||
* Kernel selection caching
|
||
* Data type support for f32 and f64
|
||
* Architecture support for gfx908 and gfx90a
|