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
12 KiB
12 KiB
Changelog for hipBLASLt
Full documentation for hipBLASLt is available at rocm.docs.amd.com/projects/hipBLASLt.
hipBLASLt 1.4.1 for ROCm 7.14
Added
- Introduced a new API: hipBLASLt-ext::isSolutionSupported(). This API is used by new hipBLASLt integration from rocBLAS to check if a given solution is supported for a certain GPU and Problem Type.
hipBLASLt 1.4.0
Added
- Complex datatype support for gfx942 and gfx950.
hipblasLtSetSmCountTarget()/hipblasLtGetSmCountTarget()handle-level helpers (the analogue of cuBLAS'scublasSetSmCountTarget/cublasGetSmCountTarget).int32_t, default0meaning "use all compute units"; negative values are rejected withHIPBLAS_STATUS_INVALID_VALUE.HIPBLASLT_MATMUL_DESC_SM_COUNT_TARGETmatmul-descriptor attribute andHIPBLASLT_MATMUL_PREF_SM_COUNT_TARGETpreference attribute (same semantics). When a per-matmul / per-preference value is non-zero it takes precedence over the handle-level value. Lets callers convey an estimate of how many CUs hipBLASLt should target for kernel selection and persistent-grid sizing — useful when another kernel (e.g. RCCL) is co-running on the device or when a persistent grid should be sized for a known CU budget. (This is a hint, not a CU reservation.)HIPBLASLT_MATMUL_DESC_STREAMK_TILE_SCHEDULING_EXTand matching ext API (setStreamKTileSchedulingMode()/getStreamKTileSchedulingMode()) accept the tri-statehipblasLtStreamKTileSchedulingMode_tenum (OFF=0 static SK3, ON=1 dynamic SK4, AUTO=2 origami heuristic). Invalid values returnHIPBLAS_STATUS_INVALID_VALUE.hipblaslt-bench--streamk_tile_schedulingand--sm_count_targetforward into the matmul descriptor (seeclients/bench/README.md).
Changed
- StreamK=5 tile scheduling default is now
OFF(0, static SK3 sub-path) instead ofAUTO(2). SetHIPBLASLT_MATMUL_DESC_SM_COUNT_TARGET(orhipblasLtSetSmCountTarget) to a positive value to engage the origami hybrid-mode heuristic per launch even when the mode isOFF; useHIPBLASLT_STREAMK_TILE_SCHEDULING_AUTO(2) to always delegate to the heuristic regardless ofsm_count_target.
hipBLASLt 1.3.0
Added
- General Batched GEMM support.
HIPBLASLT_CHECK_NUMERICSenvironment variable: opt-in post-GEMM NaN scanner forhipblasLtMatmuloutput (D matrix). Accepts numeric (1,2) or word values (info,warn,none/off). Output goes to the standard hipBLASLt log sink (orstderrif no log sink is configured). Per-call cost is one scanner kernel launch only -- nohipStreamSynchronize, no per-call alloc/free. A persistent 4-byte device flag is allocated once in the handle constructor and drained once at handle destruction with a singlehipDeviceSynchronize; a teardown log line reports the first matmul call_id at which NaN was observed (or that none was, with a sampling caveat when the scanner only ran on a subset of calls). Companion env vars allow sampling (HIPBLASLT_CHECK_NUMERICS_SCAN_EVERY) and a bisect window (HIPBLASLT_CHECK_NUMERICS_SCAN_FROM/_SCAN_UNTIL). A C APIhipblasLtCheckNumericsDrain(handle, &first_nan_call_id)lets frameworks drive a drain on demand.
Changed
- Replaced
install.shwith an invoke-based task runner (tasks.py) to support cross-platform builds including Windows (ROCm 7.0+). - gtest and msgpack-cxx are now fetched automatically via CMake FetchContent if not found on the system.
- Greatly improved MXFP4 GEMM performance when using HIPBLASLT_MATMUL_MATRIX_SCALE_BLK32_UE8M0_32_8_EXT
hipBLASLt 1.2.2 for ROCm 7.2.1
Added
- Support for AMD SMI.
Changed
- Migrate
HIPBLASLT_ENABLE_LLVMtoHIPBLASLT_ENABLE_YAMLand synchronize with tensilelite's build library format.
Deprecation
- ROCm SMI is deprecated and dependencies are removed.
hipBLASLt 1.2.1 for ROCm 7.2.1
Resolved issues
- Fix issue where users might encounter a
HIPBLAS_STATUS_INTERNAL_ERRORwith various sizes in CPX mode.
hipBLASLt 1.2.0 for ROCm 7.2.0
Added
- Support for 'BF16' input with 'FP32' output data type for gfx90a.
- Support for hipBLASLtExt operation APIs on gfx11XX and gfx12XX.
- Added
HIPBLASLT_MATMUL_MATRIX_SCALE_BLK32_UE8M0_32_8_EXTto support pre-swizzled block scaling data.
hipBLASLt 1.1.0 for ROCm 7.1.0
Added
- Fused Clamp GEMM for
HIPBLASLT_EPILOGUE_CLAMP_EXTandHIPBLASLT_EPILOGUE_CLAMP_BIAS_EXT. This feature requires the minimum (HIPBLASLT_MATMUL_DESC_EPILOGUE_ACT_ARG0_EXT) and maximum (HIPBLASLT_MATMUL_DESC_EPILOGUE_ACT_ARG1_EXT) to be set. - Support for ReLU/Clamp activation functions with auxiliary output for the
f16andbf16data types for gfx942 to capture intermediate results. This feature is enabled forHIPBLASLT_EPILOGUE_RELU_AUX,HIPBLASLT_EPILOGUE_RELU_AUX_BIAS,HIPBLASLT_EPILOGUE_CLAMP_AUX_EXT, andHIPBLASLT_EPILOGUE_CLAMP_AUX_BIAS_EXT. - Support for
HIPBLAS_COMPUTE_32F_FAST_16BFfor FP32 data type for gfx950 only. - Added the CPP extension APIs
setMaxWorkspaceBytesandgetMaxWorkspaceBytes. - Added the ability to print logs (using
HIPBLASLT_LOG_MASK=32) for Grouped GEMM. - Support for swizzleA by using the hipblaslt-ext cpp API.
- Support for hipBLASLt extop for gfx11xx and gfx12xx.
Changed
hipblasLtMatmul()now returns an error when the workspace size is insufficient, rather than causing a segmentation fault.
Resolved issues
- Fix incorrect results when using ldd and ldc with some solutions
hipBLASLt 1.0.0 for ROCm 7.0.0
Added
- Stream-K GEMM support has been enabled for the
FP32,FP16,BF16,FP8, andBF8data types on the MI300A APU. To activate this feature, set theTENSILE_SOLUTION_SELECTION_METHODenvironment variable to2, for example,export TENSILE_SOLUTION_SELECTION_METHOD=2. - Fused Swish/SiLU GEMM in hipBLASLt (enabled by
HIPBLASLT_EPILOGUE_SWISH_EXTandHIPBLASLT_EPILOGUE_SWISH_BIAS_EXT) - Added support for
HIPBLASLT_EPILOGUE_GELU_AUX_BIASfor gfx942 - Added
HIPBLASLT_TUNING_USER_MAX_WORKSPACEto constrain max workspace size for user offline tuning - Added
HIPBLASLT_ORDER_COL16_4R16andHIPBLASLT_ORDER_COL16_4R8tohipblasLtOrder_tto support FP16/BF16 swizzle GEMM and FP8/BF8 swizzle GEMM respectively. - Added TF32 emulation on gfx950
Changed
HIPBLASLT_MATMUL_DESC_A_SCALE_POINTER_VEC_EXTandHIPBLASLT_MATMUL_DESC_B_SCALE_POINTER_VEC_EXTare removed. Use theHIPBLASLT_MATMUL_DESC_A_SCALE_MODEandHIPBLASLT_MATMUL_DESC_B_SCALE_MODEattributes to set scalar (HIPBLASLT_MATMUL_MATRIX_SCALE_SCALAR_32F) or vector (HIPBLASLT_MATMUL_MATRIX_SCALE_OUTER_VEC_32F).- The non-V2 APIs (
GemmPreference,GemmProblemType,GemmEpilogue,GemmTuning,GemmInputs) in the Cpp header are now the same as the V2 APIs (GemmPreferenceV2,GemmProblemTypeV2,GemmEpilogueV2,GemmTuningV2,GemmInputsV2). The original non-V2 APIs are removed. hipblasltExtAMaxWithScaleAPI is removed.
Optimized
- Improved performance for 8-bit (FP8/BF8/I8) NN/NT cases by adding
s_delay_aluto reduce stalls from dependent ALU operations on gfx12+. - Improved performance for 8-bit and 16-bit (FP16/BF16) TN cases by enabling software dependency check (Expert Scheduling Mode) under certain restrictions to reduce redundant hardware dependency checks on gfx12+.
- Improved performance for 8-bit, 16-bit, and 32-bit batched GEMM with a better heuristic search algorithm for gfx942.
Upcoming changes
- V2 APIs (
GemmPreferenceV2,GemmProblemTypeV2,GemmEpilogueV2,GemmTuningV2,GemmInputsV2) are deprecated.
hipBLASLt 0.12.1 for ROCm 6.4.2
Added
- Support for gfx1151
hipBLASLt 0.12.1 for ROCm 6.4.1
Resolved issues
- Fixed an accuracy issue that occurred for some solutions using an
FP32orTF32data type with a TT transpose.
hipBLASLt 0.12.0 for ROCm 6.4.0
Added
- Support roctx if
HIPBLASLT_ENABLE_MARKER=1is set - Output the profile logging if
HIPBLASLT_LOG_MASK=64is set - Support FP16 compute type
- Add memory bandwidth information in hipblaslt-bench output
- Support user offline tuning mechanism
- Add more samples
Changed
- Output the bench command along with solution index if
HIPBLASLT_LOG_MASK=32is set
Optimized
- Improve the overall performance of XF32/FP16/BF16/FP8/BF8 data type
- Reduce library size
Resolved issues
- Fix multi-threads bug
- Fix multi-streams bug
hipBLASLt 0.10.0 for ROCm 6.3.0
Added
- Support the V2 CPP extension API for backward compatibility
- Support for data type Int8 in with Int8 out
- Support for data type FP32/FP64 for gfx110x
- Add the Extension API
hipblaslt_ext::matmulIsTuned - Output atol and rtol for hipblaslt-bench validation
- Output the bench command for hipblaslt CPP ext API path if
HIPBLASLT_LOG_MASK=32is set - Support odd sizes for FP8/BF8 GEMM
Changed
- Reorganize and add more sample code
- Add a dependency with the hipblas-common package and remove the dependency with the hipblas package
Optimized
- Support fused kernel for HIPBLASLT_MATMUL_DESC_AMAX_D_POINTER for FP8/BF8 data type
- Improve the library loading time
- Improve the overall performance of first returned solution
Upcoming changes
- The V1 CPP extension API will be deprecated in a future release of hipBLASLt
hipBLASLt 0.8.0
Added
- Extension APIs:
hipblasltExtAMaxWithScale
GemmTuningextension parameter to set wgm by user- Support HIPBLASLT_MATMUL_DESC_AMAX_D_POINTER for the FP8/BF8 data types
- Support for FP8/BF8 input, FP32/FP16/BF16/F8/BF8 output (only for the gfx94x architectures)
- Support HIPBLASLT_MATMUL_DESC_COMPUTE_INPUT_TYPE_A_EXT and HIPBLASLT_MATMUL_DESC_COMPUTE_INPUT_TYPE_B_EXT for FP16 input data type to use FP8/BF8 mfma
- Support for the gfx110x architecture
Optimized
- Improve the library loading time
hipBLASLt 0.7.0
Additions
- Extension APIs:
hipblasltExtSoftmaxhipblasltExtLayerNormhipblasltExtAMax
GemmTuningextension parameter to set split-k by user- Support for mixed-precision datatype: FP16/FP8 in with FP16 out
- Add CMake support for documentation
Deprecations
- algoGetHeuristic() ext API for GroupGemm will be deprecated in a future release of hipBLASLt
hipBLASLt 0.6.0
Additions
- New
UserArgumentsvariable forGroupedGemm - Support for datatype: FP16 in with FP32 out
- Support for datatype: Int8 in Int32 out
- Support for gfx94x platform
- Support for FP8/BF8 datatype (only for gfx94x platform)
- Support scalar A,B,C,D for FP8/BF8 datatype
- Added samples
Changes
- Replaced
hipblasDatatype_twithhipDataType - Replaced
hipblasLtComputeType_twithhipblasComputeType_t
Removals
- Deprecated
HIPBLASLT_MATMUL_DESC_D_SCALE_VECTOR_POINTER
hipBLASLt 0.3.0
Additions
- Added
getAllAlgosextension APIs - TensileLite support for new epilogues: gradient gelu, gradient D, gradient A/B, aux
- Added a sample package that includes three sample apps
- Added a new C++ GEMM class in the hipBLASLt extension
Changes
- Refactored GroupGemm APIs as C++ class in the hipBLASLt extension
- Changed the scaleD vector enum to
HIPBLASLT_MATMUL_DESC_D_SCALE_VECTOR_POINTER
Fixes
- Enabled norm check validation for CI
Optimizations
- GSU kernel: wider memory, PGR N
- Updated logic yaml to improve some FP16 NN sizes
- GroupGemm support for GSU kernel
- Added grouped GEMM tuning for aldebaran
hipBLASLt 0.2.0
Additions
- Added CI tests for TensileLite
- Initialized extension group GEMM APIs (FP16 only)
- Added a group GEMM sample app:
example_hipblaslt_groupedgemm
Fixes
- Fixed incorrect results for the ScaleD kernel
Optimizations
- Tuned equality sizes for the HHS data type
- Reduced host-side overhead for
hipblasLtMatmul() - Removed unused kernel arguments
- Schedule values setup before first
s_waitcnt - Refactored TensileLite host codes
- Optimized build time
hipBLASLt 0.1.0
Additions
- Enabled hipBLASLt APIs
- Support for gfx90a
- Support for problem type: FP32, FP16, BF16
- Support activation: relu, gelu
- Support for bias vectors
- Integrated with TensileLite kernel generator
- Added Gtest:
hipblaslt-test - Added the full function tool
hipblaslt-bench - Added the sample app
example_hipblaslt_preference
Optimizations
- gridBase solution search algorithm for untuned size
- Tuned 10k sizes for each problem type