From b062e53224281fe9fc9c60e52dd5149350ac6e0b Mon Sep 17 00:00:00 2001 From: Rana Pratap Reddy Date: Mon, 6 Jul 2026 17:26:04 +0530 Subject: [PATCH 1/4] [HIPIFY][cuDNN] cuDNN 9.23.0 is the latest supported version (#2646) --- bin/hipify-perl | 42 +++++++++++++++++++ docs/building/build-hipify-clang-linux.rst | 10 ++--- docs/building/build-hipify-clang-windows.rst | 16 +++---- .../tables/CUDNN_API_supported_by_MIOPEN.md | 21 ++++++++++ src/CUDA2HIP_DNN_API_functions.cpp | 2 + src/CUDA2HIP_DNN_API_types.cpp | 40 ++++++++++++++++++ src/Statistics.cpp | 1 + src/Statistics.h | 3 +- 8 files changed, 121 insertions(+), 14 deletions(-) diff --git a/bin/hipify-perl b/bin/hipify-perl index 095ad793..56666c8e 100644 --- a/bin/hipify-perl +++ b/bin/hipify-perl @@ -8410,6 +8410,7 @@ my %hash_MIOpenOnlyUnsupportedFunctions = ( 'CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED' => 1, 'CUDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED' => 1, 'CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY' => 1, + 'CUDNN_ATTR_OPERATIONGRAPH_MODE' => 1, 'CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_BLOCK_SIZE' => 1, 'CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_MATH_PREC' => 1, 'CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_NEG_SCALE' => 1, @@ -8703,6 +8704,23 @@ my %hash_MIOpenOnlyUnsupportedFunctions = ( 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13' => 1, 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4' => 1, 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_AUTO' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_FORWARD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_SDPA_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_SDPA_FWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD' => 1, 'CUDNN_OP_TENSOR_NOT' => 1, 'CUDNN_OP_TENSOR_SQRT' => 1, 'CUDNN_PARAM_ACTIVATION_BITMASK_DESC' => 1, @@ -8869,6 +8887,7 @@ my %hash_MIOpenOnlyUnsupportedFunctions = ( 'CUDNN_TENSOR_REORDERING_NONE' => 1, 'CUDNN_TRANSFORM_FOLD' => 1, 'CUDNN_TRANSFORM_UNFOLD' => 1, + 'CUDNN_TYPE_OPERATIONGRAPH_MODE' => 1, 'CUDNN_TYPE_RESHAPE_MODE' => 1, 'CUDNN_WGRAD_MODE_ADD' => 1, 'CUDNN_WGRAD_MODE_SET' => 1, @@ -8893,6 +8912,7 @@ my %hash_MIOpenOnlyUnsupportedFunctions = ( 'cudnnBackendNormFwdPhase_t' => 1, 'cudnnBackendNormMode_t' => 1, 'cudnnBackendNumericalNote_t' => 1, + 'cudnnBackendOperationGraphMode_t' => 1, 'cudnnBackendPopulateCudaGraph' => 1, 'cudnnBackendReshapeMode_t' => 1, 'cudnnBackendTensorReordering_t' => 1, @@ -9011,6 +9031,7 @@ my %hash_MIOpenOnlyUnsupportedFunctions = ( 'cudnnGetConvolutionNdForwardOutputDim' => 1, 'cudnnGetConvolutionReorderType' => 1, 'cudnnGetCudartVersion' => 1, + 'cudnnGetExecutionPlanWorkspaceSize' => 1, 'cudnnGetFilter4dDescriptor' => 1, 'cudnnGetFilterNdDescriptor' => 1, 'cudnnGetFilterSizeInBytes' => 1, @@ -9223,6 +9244,7 @@ my %hash_HipDNNOnlyUnsupportedFunctions = ( 'CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED' => 1, 'CUDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED' => 1, 'CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY' => 1, + 'CUDNN_ATTR_OPERATIONGRAPH_MODE' => 1, 'CUDNN_ATTR_OPERATIONGRAPH_OPS' => 1, 'CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_BLOCK_SIZE' => 1, 'CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_MATH_PREC' => 1, @@ -9706,6 +9728,23 @@ my %hash_HipDNNOnlyUnsupportedFunctions = ( 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13' => 1, 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4' => 1, 'CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_AUTO' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_CONV_FORWARD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_SDPA_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_SDPA_FWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD' => 1, + 'CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD' => 1, 'CUDNN_OP_TENSOR_NOT' => 1, 'CUDNN_PARAM_ACTIVATION_BITMASK_DESC' => 1, 'CUDNN_PARAM_ACTIVATION_BITMASK_PLACEHOLDER' => 1, @@ -9938,6 +9977,7 @@ my %hash_HipDNNOnlyUnsupportedFunctions = ( 'CUDNN_TYPE_NORM_FWD_PHASE' => 1, 'CUDNN_TYPE_NORM_MODE' => 1, 'CUDNN_TYPE_NUMERICAL_NOTE' => 1, + 'CUDNN_TYPE_OPERATIONGRAPH_MODE' => 1, 'CUDNN_TYPE_PADDING_MODE' => 1, 'CUDNN_TYPE_POINTWISE_MODE' => 1, 'CUDNN_TYPE_REDUCTION_OPERATOR_TYPE' => 1, @@ -9980,6 +10020,7 @@ my %hash_HipDNNOnlyUnsupportedFunctions = ( 'cudnnBackendNormFwdPhase_t' => 1, 'cudnnBackendNormMode_t' => 1, 'cudnnBackendNumericalNote_t' => 1, + 'cudnnBackendOperationGraphMode_t' => 1, 'cudnnBackendPopulateCudaGraph' => 1, 'cudnnBackendReshapeMode_t' => 1, 'cudnnBackendSetAttribute' => 1, @@ -10089,6 +10130,7 @@ my %hash_HipDNNOnlyUnsupportedFunctions = ( 'cudnnGetConvolutionReorderType' => 1, 'cudnnGetCudartVersion' => 1, 'cudnnGetDropoutDescriptor' => 1, + 'cudnnGetExecutionPlanWorkspaceSize' => 1, 'cudnnGetFilterSizeInBytes' => 1, 'cudnnGetFoldedConvBackwardDataDescriptors' => 1, 'cudnnGetFusedOpsConstParamPackAttribute' => 1, diff --git a/docs/building/build-hipify-clang-linux.rst b/docs/building/build-hipify-clang-linux.rst index 2ff8efb7..9456f898 100644 --- a/docs/building/build-hipify-clang-linux.rst +++ b/docs/building/build-hipify-clang-linux.rst @@ -134,8 +134,8 @@ Linux testing On Linux, the following configurations are tested: -* Ubuntu 22-24: LLVM 13.0.0 - 22.1.7, CUDA 7.0 - 13.2.0, cuDNN 8.0.5 - 9.21.1, cuTensor 1.0.1.0 - 2.6.0.0 -* Ubuntu 20-21: LLVM 9.0.0 - 20.1.8, CUDA 7.0 - 12.8.1, cuDNN 5.1.10 - 9.21.1, cuTensor 1.0.1.0 - 2.6.0.0 +* Ubuntu 22-24: LLVM 13.0.0 - 22.1.7, CUDA 7.0 - 13.2.0, cuDNN 8.0.5 - 9.23.0, cuTensor 1.0.1.0 - 2.6.0.0 +* Ubuntu 20-21: LLVM 9.0.0 - 20.1.8, CUDA 7.0 - 12.8.1, cuDNN 5.1.10 - 9.23.0, cuTensor 1.0.1.0 - 2.6.0.0 * Ubuntu 16-19: LLVM 8.0.0 - 14.0.6, CUDA 7.0 - 10.2, cuDNN 5.1.10 - 8.0.5 * Ubuntu 14: LLVM 4.0.0 - 7.1.0, CUDA 7.0 - 9.0, cuDNN 5.0.5 - 7.6.5 @@ -159,7 +159,7 @@ Here's how to build ``hipify-clang`` with testing support on ``Ubuntu 24.04.02`` -DCMAKE_INSTALL_PREFIX=../dist \ -DCMAKE_PREFIX_PATH=$ROOT_DIR/dist \ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.9.1 \ - -DCUDA_DNN_ROOT_DIR=/usr/local/cudnn-9.21.1 \ + -DCUDA_DNN_ROOT_DIR=/usr/local/cudnn-9.23.0 \ -DCUDA_TENSOR_ROOT_DIR=/usr/local/cutensor-2.6.0.0 \ -DLLVM_EXTERNAL_LIT=$ROOT_DIR/build/bin/llvm-lit \ ../hipify @@ -199,7 +199,7 @@ The corresponding successful output is (assuming ROOT_DIR is ``/usr/llvm/22.1.7` -- Initial CUDA to configure: -- - CUDA Toolkit path : /usr/local/cuda-12.9.1 -- - CUDA Samples path : - -- - cuDNN path : /usr/local/cudnn-9.21.1 + -- - cuDNN path : /usr/local/cudnn-9.23.0 -- - cuTENSOR path : /usr/local/cuTensor/2.6.0.0 -- - CUB path : -- Found CUDAToolkit: /usr/local/cuda-12.9.1/targets/x86_64-linux/include (found version "12.9.86") @@ -209,7 +209,7 @@ The corresponding successful output is (assuming ROOT_DIR is ``/usr/llvm/22.1.7` -- Found CUDA config: -- - CUDA Toolkit path : /usr/local/cuda-12.9.1 -- - CUDA Samples path : OFF - -- - cuDNN path : /usr/local/cudnn-9.21.1/include + -- - cuDNN path : /usr/local/cudnn-9.23.0/include -- - cuTENSOR path : /usr/local/cuTensor/2.6.0.0/include -- - CUB path : /usr/local/cuda-12.9.1/include/cub -- Configuring done (0.6s) diff --git a/docs/building/build-hipify-clang-windows.rst b/docs/building/build-hipify-clang-windows.rst index 368a528c..e53456dd 100644 --- a/docs/building/build-hipify-clang-windows.rst +++ b/docs/building/build-hipify-clang-windows.rst @@ -116,7 +116,7 @@ We recommend that you build ``LLVM+Clang`` from sources, as prebuilt binaries ar .. code-block:: shell - -DCUDA_DNN_ROOT_DIR=D:\CUDA\cuDNN\9.21.1 + -DCUDA_DNN_ROOT_DIR=D:\CUDA\cuDNN\9.23.0 - [Optional] Install `CUB 1.9.8 `_ for ``CUDA < 11.0`` only; for ``CUDA >= 11.0``, the CUB shipped with CUDA will be used for testing. @@ -248,25 +248,25 @@ Tested configurations: - ``3.11.4`` * - ``17.0.1`` :sup:`6` - ``18.1.8`` :sup:`7` - ``7.0 - 12.3.2`` - - ``8.0.5 - 9.21.1`` + - ``8.0.5 - 9.23.0`` - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` - ``4.3.2`` - ``3.14.5`` * - ``19.1.0 - 20.1.8`` - ``7.0 - 12.8.1`` - - ``8.0.5 - 9.21.1`` + - ``8.0.5 - 9.23.0`` - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` - ``4.3.2`` - ``3.14.5`` * - ``21.1.0 - 22.1.7`` - ``7.0 - 12.9.1`` - - ``8.0.5 - 9.21.1`` + - ``8.0.5 - 9.23.0`` - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` - ``4.3.2`` - ``3.14.5`` * - ``23.0.0git`` - ``7.0 - 13.2.0`` - - ``8.0.5 - 9.21.1`` + - ``8.0.5 - 9.23.0`` - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` - ``4.3.2`` - ``3.14.5`` @@ -297,7 +297,7 @@ Building with testing support using ``Visual Studio 18 2026`` on ``Windows 11``: -DCMAKE_PREFIX_PATH=%ROOT_DIR%\dist \ -DCUDA_TOOLKIT_ROOT_DIR="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9" \ -DCUDA_SDK_ROOT_DIR="C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.9" \ - -DCUDA_DNN_ROOT_DIR=D:\CUDA\cuDNN\9.21.1 \ + -DCUDA_DNN_ROOT_DIR=D:\CUDA\cuDNN\9.23.0 \ -DCUDA_TENSOR_ROOT_DIR=D:\CUDA\cuTensor\2.6.0.0 \ -DLLVM_EXTERNAL_LIT=%ROOT_DIR%\build\Release\bin\llvm-lit.py \ ..\hipify @@ -338,7 +338,7 @@ The corresponding successful output is (assuming %ROOT_DIR% is ``D:\LLVM\22.1.7` -- Initial CUDA to configure: -- - CUDA Toolkit path : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9 -- - CUDA Samples path : C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.9 - -- - cuDNN path : D:\CUDA\cuDNN\9.21.1 + -- - cuDNN path : D:\CUDA\cuDNN\9.23.0 -- - cuTENSOR path : D:\CUDA\cuTensor\2.6.0.0 -- - CUB path : -- - cuFile path : D:\CUDA\cuFile\1.17.0 @@ -346,7 +346,7 @@ The corresponding successful output is (assuming %ROOT_DIR% is ``D:\LLVM\22.1.7` -- Found CUDA config: -- - CUDA Toolkit path : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9 -- - CUDA Samples path : C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.9 - -- - cuDNN path : D:\CUDA\cuDNN\9.21.1\include + -- - cuDNN path : D:\CUDA\cuDNN\9.23.0\include -- - cuTENSOR path : D:\CUDA\cuTensor\2.6.0.0\include -- - CUB path : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include -- - cuFile path : D:\CUDA\cuFile\1.17.0\include diff --git a/docs/reference/tables/CUDNN_API_supported_by_MIOPEN.md b/docs/reference/tables/CUDNN_API_supported_by_MIOPEN.md index dc30fc6c..ddd2b4da 100644 --- a/docs/reference/tables/CUDNN_API_supported_by_MIOPEN.md +++ b/docs/reference/tables/CUDNN_API_supported_by_MIOPEN.md @@ -90,6 +90,7 @@ |`CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED`|9.4.0| | | | | | | | | | | |`CUDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED`|9.21.0| | | | | | | | | | | |`CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY`|9.6.0| | | | | | | | | | | +|`CUDNN_ATTR_OPERATIONGRAPH_MODE`|9.23.0| | | | | | | | | | | |`CUDNN_ATTR_OPERATIONGRAPH_OPS`|8.0.1| | | |`MIOPEN_ATTR_OPERATIONGRAPH_OPS`|6.2.0| | | | | | |`CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_BLOCK_SIZE`|9.7.0| | | | | | | | | | | |`CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_MATH_PREC`|9.7.0| | | | | | | | | | | @@ -625,6 +626,23 @@ |`CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13`|8.3.0| | | | | | | | | | | |`CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4`|8.3.0| | | | | | | | | | | |`CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6`|8.3.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_AUTO`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_CONV_FORWARD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_NORM_BWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_SDPA_BWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_SDPA_FWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD`|9.23.0| | | | | | | | | | | +|`CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD`|9.23.0| | | | | | | | | | | |`CUDNN_OP_TENSOR_ADD`|5.0.0| | | |`miopenTensorOpAdd`|2.1.0| | | | | | |`CUDNN_OP_TENSOR_MAX`|5.0.0| | | |`miopenTensorOpMax`|2.1.0| | | | | | |`CUDNN_OP_TENSOR_MIN`|5.0.0| | | |`miopenTensorOpMin`|2.1.0| | | | | | @@ -910,6 +928,7 @@ |`CUDNN_TYPE_NORM_FWD_PHASE`|8.5.0| | | |`MIOPEN_TYPE_NORM_FWD_PHASE`|6.2.0| | | | | | |`CUDNN_TYPE_NORM_MODE`|8.5.0| | | |`MIOPEN_TYPE_NORM_MODE`|6.2.0| | | | | | |`CUDNN_TYPE_NUMERICAL_NOTE`|8.0.1| | | |`MIOPEN_TYPE_NUMERICAL_NOTE`|6.2.0| | | | | | +|`CUDNN_TYPE_OPERATIONGRAPH_MODE`|9.23.0| | | | | | | | | | | |`CUDNN_TYPE_PADDING_MODE`|8.3.0| | | |`MIOPEN_TYPE_PADDING_MODE`|6.2.0| | | | | | |`CUDNN_TYPE_POINTWISE_MODE`|8.0.1| | | |`MIOPEN_TYPE_POINTWISE_MODE`|6.2.0| | | | | | |`CUDNN_TYPE_REDUCTION_OPERATOR_TYPE`|8.1.0| | | |`MIOPEN_TYPE_REDUCTION_OPERATOR_TYPE`|6.2.0| | | | | | @@ -946,6 +965,7 @@ |`cudnnBackendNormFwdPhase_t`|8.5.0| | | | | | | | | | | |`cudnnBackendNormMode_t`|8.5.0| | | | | | | | | | | |`cudnnBackendNumericalNote_t`|8.0.1| | | | | | | | | | | +|`cudnnBackendOperationGraphMode_t`|9.23.0| | | | | | | | | | | |`cudnnBackendReshapeMode_t`|9.22.0| | | | | | | | | | | |`cudnnBackendTensorReordering_t`|8.3.0| | | | | | | | | | | |`cudnnBatchNormMode_t`|4.0.0|9.0.0| | |`miopenBatchNormMode_t`|2.1.0| | | | | | @@ -1201,6 +1221,7 @@ |`cudnnGetCudartVersion`|6.0.0| | | | | | | | | | | |`cudnnGetDropoutDescriptor`|7.0.5| | | |`miopenGetDropoutDescriptor`|2.8.0| | | | | | |`cudnnGetErrorString`|2.0.0| | | |`miopenGetErrorString`|2.1.0| | | | | | +|`cudnnGetExecutionPlanWorkspaceSize`|9.23.0| | | | | | | | | | | |`cudnnGetFilter4dDescriptor`|2.0.0|9.0.0| | | | | | | | | | |`cudnnGetFilterNdDescriptor`|2.0.0|9.0.0| | | | | | | | | | |`cudnnGetFilterSizeInBytes`|7.6.0|9.0.0| | | | | | | | | | diff --git a/src/CUDA2HIP_DNN_API_functions.cpp b/src/CUDA2HIP_DNN_API_functions.cpp index 1594a70f..2d454673 100644 --- a/src/CUDA2HIP_DNN_API_functions.cpp +++ b/src/CUDA2HIP_DNN_API_functions.cpp @@ -355,6 +355,7 @@ const std::map CUDA_DNN_FUNCTION_MAP = [] { m["cudnnSubquadraticOpsVersionCheck"] = {"hipdnnSubquadraticOpsVersionCheck", "", CONV_LIB_FUNC, API_DNN, 2, UNSUPPORTED}; m["cudnnCausalConv1dForward"] = {"hipdnnCausalConv1dForward", "", CONV_LIB_FUNC, API_DNN, 2, UNSUPPORTED}; m["cudnnCausalConv1dBackward"] = {"hipdnnCausalConv1dBackward", "", CONV_LIB_FUNC, API_DNN, 2, UNSUPPORTED}; + m["cudnnGetExecutionPlanWorkspaceSize"] = {"hipdnnGetExecutionPlanWorkspaceSize", "", CONV_LIB_FUNC, API_DNN, 2, UNSUPPORTED}; return m; }(); @@ -645,6 +646,7 @@ const std::map CUDA_DNN_FUNCTION_VER_MAP = [] m["cudnnSubquadraticOpsVersionCheck"] = {CUDNN_9220,CUDA_0, CUDA_0 }; m["cudnnCausalConv1dForward"] = {CUDNN_9220,CUDA_0, CUDA_0 }; m["cudnnCausalConv1dBackward"] = {CUDNN_9220,CUDA_0, CUDA_0 }; + m["cudnnGetExecutionPlanWorkspaceSize"] = {CUDNN_9230,CUDA_0, CUDA_0 }; return m; }(); diff --git a/src/CUDA2HIP_DNN_API_types.cpp b/src/CUDA2HIP_DNN_API_types.cpp index 2d8a600e..9bf17154 100644 --- a/src/CUDA2HIP_DNN_API_types.cpp +++ b/src/CUDA2HIP_DNN_API_types.cpp @@ -549,6 +549,7 @@ const std::map CUDA_DNN_TYPE_NAME_MAP = [] { m["CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED"] = {"HIPDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; // 803 m["CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY"] = {"HIPDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; // 804 m["CUDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED"] = {"HIPDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; // 805 + m["CUDNN_ATTR_OPERATIONGRAPH_MODE"] = {"HIPDNN_ATTR_OPERATIONGRAPH_MODE", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; // 806 m["CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT"] = {"HIPDNN_ATTR_TENSOR_BYTE_ALIGNMENT", "MIOPEN_ATTR_TENSOR_BYTE_ALIGNMENT", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; // 900 m["CUDNN_ATTR_TENSOR_DATA_TYPE"] = {"HIPDNN_ATTR_TENSOR_DATA_TYPE", "MIOPEN_ATTR_TENSOR_DATA_TYPE", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; // 901 m["CUDNN_ATTR_TENSOR_DIMENSIONS"] = {"HIPDNN_ATTR_TENSOR_DIMENSIONS", "MIOPEN_ATTR_TENSOR_DIMENSIONS", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; // 902 @@ -826,6 +827,7 @@ const std::map CUDA_DNN_TYPE_NAME_MAP = [] { m["CUDNN_TYPE_RNG_DISTRIBUTION"] = {"HIPDNN_TYPE_RNG_DISTRIBUTION", "MIOPEN_TYPE_RNG_DISTRIBUTION", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; m["CUDNN_TYPE_MOE_GROUPED_MATMUL_MODE"] = {"HIPDNN_TYPE_MOE_GROUPED_MATMUL_MODE", "MIOPEN_TYPE_RNG_DISTRIBUTION", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; m["CUDNN_TYPE_RESHAPE_MODE"] = {"HIPDNN_TYPE_RESHAPE_MODE", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_TYPE_OPERATIONGRAPH_MODE"] = {"HIPDNN_TYPE_OPERATIONGRAPH_MODE", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; m["cudnnBackendDescriptorType_t"] = {"hipdnnBackendDescriptorType_t", "miopenBackendDescriptorType_t", CONV_TYPE, API_DNN, 1, HIP_UNSUPPORTED}; m["CUDNN_BACKEND_POINTWISE_DESCRIPTOR"] = {"HIPDNN_BACKEND_POINTWISE_DESCRIPTOR", "MIOPEN_BACKEND_POINTWISE_DESCRIPTOR", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; m["CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR"] = {"HIPDNN_BACKEND_CONVOLUTION_DESCRIPTOR", "MIOPEN_BACKEND_CONVOLUTION_DESCRIPTOR", CONV_NUMERIC_LITERAL, API_DNN, 1, HIP_UNSUPPORTED}; @@ -1014,6 +1016,24 @@ const std::map CUDA_DNN_TYPE_NAME_MAP = [] { m["cudnnCausalConv1dActivation_t"] = {"hipdnnCausalConv1dActivation_t", "", CONV_TYPE, API_DNN, 1, UNSUPPORTED}; m["CUDNN_CAUSAL_CONV1D_ACTIVATION_IDENTITY"] = {"HIPDNN_CAUSAL_CONV1D_ACTIVATION_IDENTITY", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; m["CUDNN_CAUSAL_CONV1D_ACTIVATION_SILU"] = {"HIPDNN_CAUSAL_CONV1D_ACTIVATION_SILU", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["cudnnBackendOperationGraphMode_t"] = {"hipdnnBackendOperationGraphMode_t", "", CONV_TYPE, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_AUTO"] = {"HIPDNN_OPERATIONGRAPH_MODE_AUTO", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_FORWARD"] = {"HIPDNN_OPERATIONGRAPH_MODE_CONV_FORWARD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA"] = {"HIPDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER"] = {"HIPDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER"] = {"HIPDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN"] = {"HIPDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_BWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_NORM_BWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION"] = {"HIPDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL"] = {"HIPDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION"] = {"HIPDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION"] = {"HIPDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_SDPA_FWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_SDPA_FWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_SDPA_BWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_SDPA_BWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; + m["CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD"] = {"HIPDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD", "", CONV_NUMERIC_LITERAL, API_DNN, 1, UNSUPPORTED}; // cuDNN types m["cudnnContext"] = {"hipdnnContext", "miopenHandle", CONV_TYPE, API_DNN, 1, HIP_UNSUPPORTED}; @@ -2132,6 +2152,26 @@ const std::map CUDA_DNN_TYPE_NAME_VER_MAP = [] m["cudnnCausalConv1dActivation_t"] = {CUDNN_9220,CUDA_0, CUDA_0 }; m["CUDNN_CAUSAL_CONV1D_ACTIVATION_IDENTITY"] = {CUDNN_9220,CUDA_0, CUDA_0 }; m["CUDNN_CAUSAL_CONV1D_ACTIVATION_SILU"] = {CUDNN_9220,CUDA_0, CUDA_0 }; + m["cudnnBackendOperationGraphMode_t"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_AUTO"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_FORWARD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_DATA"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_CONV_BWD_FILTER"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_INFER"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_FWD_TRAIN"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_NORM_BWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_CONV_FUSION"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_FWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_RESAMPLE_BWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_BLAS_MATMUL"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_MATMUL_FUSION"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_GENERIC_POINTWISE_FUSION"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_SDPA_FWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_SDPA_BWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_FWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_OPERATIONGRAPH_MODE_UNIFIED_SDPA_BWD"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_TYPE_OPERATIONGRAPH_MODE"] = {CUDNN_9230,CUDA_0, CUDA_0 }; + m["CUDNN_ATTR_OPERATIONGRAPH_MODE"] = {CUDNN_9230,CUDA_0, CUDA_0 }; return m; }(); diff --git a/src/Statistics.cpp b/src/Statistics.cpp index bda2133f..3f3dfacc 100644 --- a/src/Statistics.cpp +++ b/src/Statistics.cpp @@ -609,6 +609,7 @@ std::string Statistics::getCudaVersion(const cudaVersions &ver) { case CUDNN_9200: return "9.20.0"; case CUDNN_9210: return "9.21.0"; case CUDNN_9220: return "9.22.0"; + case CUDNN_9230: return "9.23.0"; case CUTENSOR_1010: return "1.0.1.0"; case CUTENSOR_1100: return "1.1.0.0"; case CUTENSOR_1200: return "1.2.0.0"; diff --git a/src/Statistics.h b/src/Statistics.h index fe23fc84..08fcf098 100644 --- a/src/Statistics.h +++ b/src/Statistics.h @@ -333,7 +333,8 @@ enum cudaVersions { CUDNN_9200 = 9200, CUDNN_9210 = 9210, CUDNN_9220 = 9220, - CUDNN_LATEST = CUDNN_9220, + CUDNN_9230 = 9230, + CUDNN_LATEST = CUDNN_9230, CUTENSOR_1010 = 100010, CUTENSOR_1100 = 100100, CUTENSOR_1200 = 100200, From 86ffce1bca9717ef6a2614ffbb43602ec6bb8cee Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Mon, 6 Jul 2026 18:23:00 +0200 Subject: [PATCH 2/4] [HIPIFY][doc] `LLVM 22.1.8` is the latest stable supported version (#2578) (#2647) + No patches are needed + Updated the documentation accordingly + Tested on `Windows 11` (latest `VS 2019`, `VS 2022`, and `VS 2026`) and `Ubuntu 24.04.2` (`GNU C/C++ 13.3`) --- docs/building/build-hipify-clang-linux.rst | 16 ++++++++-------- docs/building/build-hipify-clang-windows.rst | 16 ++++++++-------- docs/how-to/hipify-clang.rst | 9 +++++---- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/building/build-hipify-clang-linux.rst b/docs/building/build-hipify-clang-linux.rst index 9456f898..3ab0899f 100644 --- a/docs/building/build-hipify-clang-linux.rst +++ b/docs/building/build-hipify-clang-linux.rst @@ -134,7 +134,7 @@ Linux testing On Linux, the following configurations are tested: -* Ubuntu 22-24: LLVM 13.0.0 - 22.1.7, CUDA 7.0 - 13.2.0, cuDNN 8.0.5 - 9.23.0, cuTensor 1.0.1.0 - 2.6.0.0 +* Ubuntu 22-24: LLVM 13.0.0 - 22.1.8, CUDA 7.0 - 13.2.0, cuDNN 8.0.5 - 9.23.0, cuTensor 1.0.1.0 - 2.6.0.0 * Ubuntu 20-21: LLVM 9.0.0 - 20.1.8, CUDA 7.0 - 12.8.1, cuDNN 5.1.10 - 9.23.0, cuTensor 1.0.1.0 - 2.6.0.0 * Ubuntu 16-19: LLVM 8.0.0 - 14.0.6, CUDA 7.0 - 10.2, cuDNN 5.1.10 - 8.0.5 * Ubuntu 14: LLVM 4.0.0 - 7.1.0, CUDA 7.0 - 9.0, cuDNN 5.0.5 - 7.6.5 @@ -164,7 +164,7 @@ Here's how to build ``hipify-clang`` with testing support on ``Ubuntu 24.04.02`` -DLLVM_EXTERNAL_LIT=$ROOT_DIR/build/bin/llvm-lit \ ../hipify -The corresponding successful output is (assuming ROOT_DIR is ``/usr/llvm/22.1.7``): +The corresponding successful output is (assuming ROOT_DIR is ``/usr/llvm/22.1.8``): .. code-block:: shell @@ -186,11 +186,11 @@ The corresponding successful output is (assuming ROOT_DIR is ``/usr/llvm/22.1.7` -- - Is part of HIP SDK : OFF -- - Install clang headers : ON -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.3") - -- Found LLVM 22.1.7: - -- - CMake module path : /usr/llvm/22.1.7/dist/lib/cmake/llvm - -- - Clang include path : /usr/llvm/22.1.7/dist/include - -- - LLVM Include path : /usr/llvm/22.1.7/dist/include - -- - Binary path : /usr/llvm/22.1.7/dist/bin + -- Found LLVM 22.1.8: + -- - CMake module path : /usr/llvm/22.1.8/dist/lib/cmake/llvm + -- - Clang include path : /usr/llvm/22.1.8/dist/include + -- - LLVM Include path : /usr/llvm/22.1.8/dist/include + -- - Binary path : /usr/llvm/22.1.8/dist/bin -- Linker detection: GNU ld -- ---- The below configuring for hipify-clang testing only ---- -- Found Python: /usr/bin/python3.14 (found suitable version "3.14.5", required range is "3.0...3.15") found components: Interpreter @@ -227,7 +227,7 @@ The corresponding successful output is: Running HIPify regression tests =============================================================== CUDA 12.9.86 - will be used for testing - LLVM 22.1.7 - will be used for testing + LLVM 22.1.8 - will be used for testing x86_64 - Platform architecture Linux 6.5.0-15-generic - Platform OS 64 - hipify-clang binary bitness diff --git a/docs/building/build-hipify-clang-windows.rst b/docs/building/build-hipify-clang-windows.rst index e53456dd..242200f7 100644 --- a/docs/building/build-hipify-clang-windows.rst +++ b/docs/building/build-hipify-clang-windows.rst @@ -258,7 +258,7 @@ Tested configurations: - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` - ``4.3.2`` - ``3.14.5`` - * - ``21.1.0 - 22.1.7`` + * - ``21.1.0 - 22.1.8`` - ``7.0 - 12.9.1`` - ``8.0.5 - 9.23.0`` - ``2019.16.11.56, 2022.17.14.32, 2026.18.6.0`` @@ -302,7 +302,7 @@ Building with testing support using ``Visual Studio 18 2026`` on ``Windows 11``: -DLLVM_EXTERNAL_LIT=%ROOT_DIR%\build\Release\bin\llvm-lit.py \ ..\hipify -The corresponding successful output is (assuming %ROOT_DIR% is ``D:\LLVM\22.1.7``): +The corresponding successful output is (assuming %ROOT_DIR% is ``D:\LLVM\22.1.8``): .. code-block:: shell @@ -324,17 +324,17 @@ The corresponding successful output is (assuming %ROOT_DIR% is ``D:\LLVM\22.1.7` -- - Test hipify-clang : ON -- - Is part of HIP SDK : OFF -- - Install clang headers : ON - -- Found LLVM 22.1.7: - -- - CMake module path : D:\LLVM\22.1.7\dist\lib\cmake\llvm - -- - Clang include path : D:\LLVM\22.1.7\dist\include - -- - LLVM Include path : D:\LLVM\22.1.7\dist\include - -- - Binary path : D:\LLVM\22.1.7\dist\bin + -- Found LLVM 22.1.8: + -- - CMake module path : D:\LLVM\22.1.8\dist\lib\cmake\llvm + -- - Clang include path : D:\LLVM\22.1.8\dist\include + -- - LLVM Include path : D:\LLVM\22.1.8\dist\include + -- - Binary path : D:\LLVM\22.1.8\dist\bin -- Performing Test LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS -- Performing Test LLVM_LINKER_SUPPORTS_B_SYMBOLIC_FUNCTIONS - Failed -- ---- The below configuring for hipify-clang testing only ---- -- Found Python: C:\Users\TT\AppData\Local\Programs\Python\Python314\python.exe (found suitable version "3.14.5", required range is "3.0...3.15") found components: Interpreter -- Found lit: C:\Users\TT\AppData\Local\Programs\Python\Python314\Scripts\lit.exe - -- Found FileCheck: D:\LLVM\22.1.7\dist\bin\FileCheck.exe + -- Found FileCheck: D:\LLVM\22.1.8\dist\bin\FileCheck.exe -- Initial CUDA to configure: -- - CUDA Toolkit path : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9 -- - CUDA Samples path : C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.9 diff --git a/docs/how-to/hipify-clang.rst b/docs/how-to/hipify-clang.rst index 0d393748..ced41ecb 100644 --- a/docs/how-to/hipify-clang.rst +++ b/docs/how-to/hipify-clang.rst @@ -42,7 +42,7 @@ Release Dependencies * `LLVM+Clang `_ version is determined at least partially by the CUDA version you are using, as shown in the table below. The recommended Clang release - is the latest stable release `22.1.7 `_, + is the latest stable release `22.1.8 `_, or at least version `4.0.0 `_. .. list-table:: @@ -72,7 +72,8 @@ Release Dependencies `22.1.4 `_, `22.1.5 `_, `22.1.6 `_, - `22.1.7 `_:sup:`1` + `22.1.7 `_, + `22.1.8 `_:sup:`1` - ✅ - ✅ * - `12.8.1 `_ @@ -272,7 +273,7 @@ Release Dependencies In most cases, you can get a suitable version of ``LLVM+Clang`` with your package manager. However, you can also `download a release archive `_ and build or install it. In case of multiple versions of ``LLVM`` installed, set `CMAKE_PREFIX_PATH `_ so that -``CMake`` can find the desired version of ``LLVM``. For example, ``-DCMAKE_PREFIX_PATH=D:\LLVM\22.1.7\dist``. +``CMake`` can find the desired version of ``LLVM``. For example, ``-DCMAKE_PREFIX_PATH=D:\LLVM\22.1.8\dist``. Usage ===== @@ -308,7 +309,7 @@ header files used during the hipification process: .. code:: shell - ./hipify-clang square.cu --cuda-path=/usr/local/cuda-12.9 --clang-resource-directory=/usr/llvm/22.1.7/dist/lib/clang/22 + ./hipify-clang square.cu --cuda-path=/usr/local/cuda-12.9 --clang-resource-directory=/usr/llvm/22.1.8/dist/lib/clang/22 For more information, refer to the `Clang manual for compiling CUDA `_. From 6a9ac7050ec3deec5a16d61644fac97f5209db35 Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Tue, 7 Jul 2026 13:39:46 +0200 Subject: [PATCH 3/4] [HIPIFY][#2563][SPARSELt][feature] `cuSPARSELt` support - Step 4 - `cuSPARSELt v.0.1.0` (#2648) + `hipSPARSELt` full support for `cuSPARSELt v.0.1.0` + `hipSPARSELt` versioning was revised: `7.2.0` was changed to `7.10.0`, which released before `7.2.0` + [ToDo] Header files mapping + [ToDo] Revise `hipify-perl` generation + [ToDo] Implement `cusparselt2hipsparselt` testing --- bin/hipify-perl | 7 ++ .../tables/CUSPARSELT_API_supported_by_HIP.md | 79 ++++++++++--------- src/CUDA2HIP_SPARSELT_API_functions.cpp | 49 ++++++++---- src/CUDA2HIP_SPARSELT_API_types.cpp | 44 ++++++----- 4 files changed, 107 insertions(+), 72 deletions(-) diff --git a/bin/hipify-perl b/bin/hipify-perl index 56666c8e..e637c573 100644 --- a/bin/hipify-perl +++ b/bin/hipify-perl @@ -10998,6 +10998,8 @@ my %map_core = ( 'CUSPARSE_ACTION_SYMBOLIC' => ['HIPSPARSE_ACTION_SYMBOLIC', 'numeric_literal'], 'CUSPARSE_COMPUTE_16F' => ['HIPSPARSELT_COMPUTE_16F', 'numeric_literal'], 'CUSPARSE_COMPUTE_32I' => ['HIPSPARSELT_COMPUTE_32I', 'numeric_literal'], + 'CUSPARSE_COMPUTE_TF32' => ['HIPSPARSELT_COMPUTE_TF32', 'numeric_literal'], + 'CUSPARSE_COMPUTE_TF32_FAST' => ['HIPSPARSELT_COMPUTE_TF32_FAST', 'numeric_literal'], 'CUSPARSE_COOMM_ALG1' => ['HIPSPARSE_COOMM_ALG1', 'numeric_literal'], 'CUSPARSE_COOMM_ALG2' => ['HIPSPARSE_COOMM_ALG2', 'numeric_literal'], 'CUSPARSE_COOMM_ALG3' => ['HIPSPARSE_COOMM_ALG3', 'numeric_literal'], @@ -15560,6 +15562,7 @@ my %map_core = ( 'cusparseLtDestroy' => ['hipsparseLtDestroy', 'library'], 'cusparseLtHandle_t' => ['hipsparseLtHandle_t', 'type'], 'cusparseLtInit' => ['hipsparseLtInit', 'library'], + 'cusparseLtMatDescriptorDestroy' => ['hipsparseLtMatDescriptorDestroy', 'library'], 'cusparseLtMatDescriptor_t' => ['hipsparseLtMatDescriptor_t', 'type'], 'cusparseLtMatmul' => ['hipsparseLtMatmul', 'library'], 'cusparseLtMatmulAlgAttribute_t' => ['hipsparseLtMatmulAlgAttribute_t', 'type'], @@ -15577,9 +15580,13 @@ my %map_core = ( 'cusparseLtMatmulSearch' => ['hipsparseLtMatmulSearch', 'library'], 'cusparseLtPruneAlg_t' => ['hipsparseLtPruneAlg_t', 'type'], 'cusparseLtSpMMACompress' => ['hipsparseLtSpMMACompress', 'library'], + 'cusparseLtSpMMACompress2' => ['hipsparseLtSpMMACompress2', 'library'], 'cusparseLtSpMMACompressedSize' => ['hipsparseLtSpMMACompressedSize', 'library'], + 'cusparseLtSpMMACompressedSize2' => ['hipsparseLtSpMMACompressedSize2', 'library'], 'cusparseLtSpMMAPrune' => ['hipsparseLtSpMMAPrune', 'library'], + 'cusparseLtSpMMAPrune2' => ['hipsparseLtSpMMAPrune2', 'library'], 'cusparseLtSpMMAPruneCheck' => ['hipsparseLtSpMMAPruneCheck', 'library'], + 'cusparseLtSpMMAPruneCheck2' => ['hipsparseLtSpMMAPruneCheck2', 'library'], 'cusparseLtSparsity_t' => ['hipsparseLtSparsity_t', 'type'], 'cusparseLtStructuredDescriptorInit' => ['hipsparseLtStructuredDescriptorInit', 'library'], 'cusparseMatDescr_t' => ['hipsparseMatDescr_t', 'type'], diff --git a/docs/reference/tables/CUSPARSELT_API_supported_by_HIP.md b/docs/reference/tables/CUSPARSELT_API_supported_by_HIP.md index 8011aa55..cc9d1095 100644 --- a/docs/reference/tables/CUSPARSELT_API_supported_by_HIP.md +++ b/docs/reference/tables/CUSPARSELT_API_supported_by_HIP.md @@ -14,45 +14,52 @@ |**CUDA**|**A**|**D**|**C**|**R**|**HIP**|**A**|**D**|**C**|**R**|**U**|**E**| |:--|:-:|:-:|:-:|:-:|:--|:-:|:-:|:-:|:-:|:-:|:-:| -|`CUSPARSELT_MATMUL_ALG_CONFIG_ID`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_CONFIG_ID`|7.2.0| | | | | | -|`CUSPARSELT_MATMUL_ALG_CONFIG_MAX_ID`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_CONFIG_MAX_ID`|7.2.0| | | | | | -|`CUSPARSELT_MATMUL_ALG_DEFAULT`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_DEFAULT`|7.2.0| | | | | | -|`CUSPARSELT_MATMUL_SEARCH_ITERATIONS`|0.0.1| | | |`HIPSPARSELT_MATMUL_SEARCH_ITERATIONS`|7.2.0| | | | | | -|`CUSPARSELT_PRUNE_SPMMA_STRIP`|0.0.1| | | |`HIPSPARSELT_PRUNE_SPMMA_STRIP`|7.2.0| | | | | | -|`CUSPARSELT_PRUNE_SPMMA_TILE`|0.0.1| | | |`HIPSPARSELT_PRUNE_SPMMA_TILE`|7.2.0| | | | | | -|`CUSPARSELT_SPARSITY_50_PERCENT`|0.0.1| | | |`HIPSPARSELT_SPARSITY_50_PERCENT`|7.2.0| | | | | | -|`CUSPARSE_COMPUTE_16F`|0.0.1| | | |`HIPSPARSELT_COMPUTE_16F`|7.2.0| | | | | | -|`CUSPARSE_COMPUTE_32I`|0.0.1| | | |`HIPSPARSELT_COMPUTE_32I`|7.2.0| | | | | | -|`cusparseComputeType`|0.0.1| | | |`hipsparseLtComputetype_t`|7.2.0| | | | | | -|`cusparseLtHandle_t`|0.0.1| | | |`hipsparseLtHandle_t`|7.2.0| | | | | | -|`cusparseLtMatDescriptor_t`|0.0.1| | | |`hipsparseLtMatDescriptor_t`|7.2.0| | | | | | -|`cusparseLtMatmulAlgAttribute_t`|0.0.1| | | |`hipsparseLtMatmulAlgAttribute_t`|7.2.0| | | | | | -|`cusparseLtMatmulAlgSelection_t`|0.0.1| | | |`hipsparseLtMatmulAlgSelection_t`|7.2.0| | | | | | -|`cusparseLtMatmulAlg_t`|0.0.1| | | |`hipsparseLtMatmulAlg_t`|7.2.0| | | | | | -|`cusparseLtMatmulDescriptor_t`|0.0.1| | | |`hipsparseLtMatmulDescriptor_t`|7.2.0| | | | | | -|`cusparseLtMatmulPlan_t`|0.0.1| | | |`hipsparseLtMatmulPlan_t`|7.2.0| | | | | | -|`cusparseLtPruneAlg_t`|0.0.1| | | |`hipsparseLtPruneAlg_t`|7.2.0| | | | | | -|`cusparseLtSparsity_t`|0.0.1| | | |`hipsparseLtSparsity_t`|7.2.0| | | | | | +|`CUSPARSELT_MATMUL_ALG_CONFIG_ID`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_CONFIG_ID`|7.10.0| | | | | | +|`CUSPARSELT_MATMUL_ALG_CONFIG_MAX_ID`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_CONFIG_MAX_ID`|7.10.0| | | | | | +|`CUSPARSELT_MATMUL_ALG_DEFAULT`|0.0.1| | | |`HIPSPARSELT_MATMUL_ALG_DEFAULT`|7.10.0| | | | | | +|`CUSPARSELT_MATMUL_SEARCH_ITERATIONS`|0.0.1| | | |`HIPSPARSELT_MATMUL_SEARCH_ITERATIONS`|7.10.0| | | | | | +|`CUSPARSELT_PRUNE_SPMMA_STRIP`|0.0.1| | | |`HIPSPARSELT_PRUNE_SPMMA_STRIP`|7.10.0| | | | | | +|`CUSPARSELT_PRUNE_SPMMA_TILE`|0.0.1| | | |`HIPSPARSELT_PRUNE_SPMMA_TILE`|7.10.0| | | | | | +|`CUSPARSELT_SPARSITY_50_PERCENT`|0.0.1| | | |`HIPSPARSELT_SPARSITY_50_PERCENT`|7.10.0| | | | | | +|`CUSPARSE_COMPUTE_16F`|0.0.1| | | |`HIPSPARSELT_COMPUTE_16F`|7.10.0| | | | | | +|`CUSPARSE_COMPUTE_32I`|0.0.1| | | |`HIPSPARSELT_COMPUTE_32I`|7.10.0| | | | | | +|`CUSPARSE_COMPUTE_TF32`|0.1.0| | | |`HIPSPARSELT_COMPUTE_TF32`|7.10.0| | | | | | +|`CUSPARSE_COMPUTE_TF32_FAST`|0.1.0| | | |`HIPSPARSELT_COMPUTE_TF32_FAST`|7.10.0| | | | | | +|`cusparseComputeType`|0.0.1| | | |`hipsparseLtComputetype_t`|7.10.0| | | | | | +|`cusparseLtHandle_t`|0.0.1| | | |`hipsparseLtHandle_t`|7.10.0| | | | | | +|`cusparseLtMatDescriptor_t`|0.0.1| | | |`hipsparseLtMatDescriptor_t`|7.10.0| | | | | | +|`cusparseLtMatmulAlgAttribute_t`|0.0.1| | | |`hipsparseLtMatmulAlgAttribute_t`|7.10.0| | | | | | +|`cusparseLtMatmulAlgSelection_t`|0.0.1| | | |`hipsparseLtMatmulAlgSelection_t`|7.10.0| | | | | | +|`cusparseLtMatmulAlg_t`|0.0.1| | | |`hipsparseLtMatmulAlg_t`|7.10.0| | | | | | +|`cusparseLtMatmulDescriptor_t`|0.0.1| | | |`hipsparseLtMatmulDescriptor_t`|7.10.0| | | | | | +|`cusparseLtMatmulPlan_t`|0.0.1| | | |`hipsparseLtMatmulPlan_t`|7.10.0| | | | | | +|`cusparseLtPruneAlg_t`|0.0.1| | | |`hipsparseLtPruneAlg_t`|7.10.0| | | | | | +|`cusparseLtSparsity_t`|0.0.1| | | |`hipsparseLtSparsity_t`|7.10.0| | | | | | ## **2. CUSPARSELT Function Reference** |**CUDA**|**A**|**D**|**C**|**R**|**HIP**|**A**|**D**|**C**|**R**|**U**|**E**| |:--|:-:|:-:|:-:|:-:|:--|:-:|:-:|:-:|:-:|:-:|:-:| -|`cusparseLtDenseDescriptorInit`|0.0.1| | | |`hipsparseLtDenseDescriptorInit`|7.2.0| | | | | | -|`cusparseLtDestroy`|0.0.1| | | |`hipsparseLtDestroy`|7.2.0| | | | | | -|`cusparseLtInit`|0.0.1| | | |`hipsparseLtInit`|7.2.0| | | | | | -|`cusparseLtMatmul`|0.0.1| | | |`hipsparseLtMatmul`|7.2.0| | | | | | -|`cusparseLtMatmulAlgGetAttribute`|0.0.1| | | |`hipsparseLtMatmulAlgGetAttribute`|7.2.0| | | | | | -|`cusparseLtMatmulAlgSelectionInit`|0.0.1| | | |`hipsparseLtMatmulAlgSelectionInit`|7.2.0| | | | | | -|`cusparseLtMatmulAlgSetAttribute`|0.0.1| | | |`hipsparseLtMatmulAlgSetAttribute`|7.2.0| | | | | | -|`cusparseLtMatmulDescriptorInit`|0.0.1| | | |`hipsparseLtMatmulDescriptorInit`|7.2.0| | | | | | -|`cusparseLtMatmulGetWorkspace`|0.0.1| | | |`hipsparseLtMatmulGetWorkspace`|7.2.0| | | | | | -|`cusparseLtMatmulPlanDestroy`|0.0.1| | | |`hipsparseLtMatmulPlanDestroy`|7.2.0| | | | | | -|`cusparseLtMatmulPlanInit`|0.0.1| | | |`hipsparseLtMatmulPlanInit`|7.2.0| | | | | | -|`cusparseLtMatmulSearch`|0.0.1| | | |`hipsparseLtMatmulSearch`|7.2.0| | | | | | -|`cusparseLtSpMMACompress`|0.0.1| | | |`hipsparseLtSpMMACompress`|7.2.0| | | | | | -|`cusparseLtSpMMACompressedSize`|0.0.1| | | |`hipsparseLtSpMMACompressedSize`|7.2.0| | | | | | -|`cusparseLtSpMMAPrune`|0.0.1| | | |`hipsparseLtSpMMAPrune`|7.2.0| | | | | | -|`cusparseLtSpMMAPruneCheck`|0.0.1| | | |`hipsparseLtSpMMAPruneCheck`|7.2.0| | | | | | -|`cusparseLtStructuredDescriptorInit`|0.0.1| | | |`hipsparseLtStructuredDescriptorInit`|7.2.0| | | | | | +|`cusparseLtDenseDescriptorInit`|0.0.1| | | |`hipsparseLtDenseDescriptorInit`|7.10.0| | | | | | +|`cusparseLtDestroy`|0.0.1| | | |`hipsparseLtDestroy`|7.10.0| | | | | | +|`cusparseLtInit`|0.0.1| | | |`hipsparseLtInit`|7.10.0| | | | | | +|`cusparseLtMatDescriptorDestroy`|0.1.0| | | |`hipsparseLtMatDescriptorDestroy`|7.10.0| | | | | | +|`cusparseLtMatmul`|0.0.1| | | |`hipsparseLtMatmul`|7.10.0| | | | | | +|`cusparseLtMatmulAlgGetAttribute`|0.0.1| | | |`hipsparseLtMatmulAlgGetAttribute`|7.10.0| | | | | | +|`cusparseLtMatmulAlgSelectionInit`|0.0.1| | | |`hipsparseLtMatmulAlgSelectionInit`|7.10.0| | | | | | +|`cusparseLtMatmulAlgSetAttribute`|0.0.1| | | |`hipsparseLtMatmulAlgSetAttribute`|7.10.0| | | | | | +|`cusparseLtMatmulDescriptorInit`|0.0.1| | | |`hipsparseLtMatmulDescriptorInit`|7.10.0| | | | | | +|`cusparseLtMatmulGetWorkspace`|0.0.1| | | |`hipsparseLtMatmulGetWorkspace`|7.10.0| | | | | | +|`cusparseLtMatmulPlanDestroy`|0.0.1| | | |`hipsparseLtMatmulPlanDestroy`|7.10.0| | | | | | +|`cusparseLtMatmulPlanInit`|0.0.1| | | |`hipsparseLtMatmulPlanInit`|7.10.0| | | | | | +|`cusparseLtMatmulSearch`|0.0.1| | | |`hipsparseLtMatmulSearch`|7.10.0| | | | | | +|`cusparseLtSpMMACompress`|0.0.1| | | |`hipsparseLtSpMMACompress`|7.10.0| | | | | | +|`cusparseLtSpMMACompress2`|0.1.0| | | |`hipsparseLtSpMMACompress2`|7.10.0| | | | | | +|`cusparseLtSpMMACompressedSize`|0.0.1| | | |`hipsparseLtSpMMACompressedSize`|7.10.0| | | | | | +|`cusparseLtSpMMACompressedSize2`|0.1.0| | | |`hipsparseLtSpMMACompressedSize2`|7.10.0| | | | | | +|`cusparseLtSpMMAPrune`|0.0.1| | | |`hipsparseLtSpMMAPrune`|7.10.0| | | | | | +|`cusparseLtSpMMAPrune2`|0.1.0| | | |`hipsparseLtSpMMAPrune2`|7.10.0| | | | | | +|`cusparseLtSpMMAPruneCheck`|0.0.1| | | |`hipsparseLtSpMMAPruneCheck`|7.10.0| | | | | | +|`cusparseLtSpMMAPruneCheck2`|0.1.0| | | |`hipsparseLtSpMMAPruneCheck2`|7.10.0| | | | | | +|`cusparseLtStructuredDescriptorInit`|0.0.1| | | |`hipsparseLtStructuredDescriptorInit`|7.10.0| | | | | | diff --git a/src/CUDA2HIP_SPARSELT_API_functions.cpp b/src/CUDA2HIP_SPARSELT_API_functions.cpp index 5d4b9d3d..48c3cb61 100644 --- a/src/CUDA2HIP_SPARSELT_API_functions.cpp +++ b/src/CUDA2HIP_SPARSELT_API_functions.cpp @@ -43,6 +43,11 @@ const std::map CUDA_SPARSELT_FUNCTION_MAP = [] { m["cusparseLtSpMMAPruneCheck"] = {"hipsparseLtSpMMAPruneCheck", "", CONV_LIB_FUNC, API_SPARSELT, 2}; m["cusparseLtSpMMACompressedSize"] = {"hipsparseLtSpMMACompressedSize", "", CONV_LIB_FUNC, API_SPARSELT, 2}; m["cusparseLtSpMMACompress"] = {"hipsparseLtSpMMACompress", "", CONV_LIB_FUNC, API_SPARSELT, 2}; + m["cusparseLtMatDescriptorDestroy"] = {"hipsparseLtMatDescriptorDestroy", "", CONV_LIB_FUNC, API_SPARSELT, 2}; + m["cusparseLtSpMMAPrune2"] = {"hipsparseLtSpMMAPrune2", "", CONV_LIB_FUNC, API_SPARSELT, 2}; + m["cusparseLtSpMMAPruneCheck2"] = {"hipsparseLtSpMMAPruneCheck2", "", CONV_LIB_FUNC, API_SPARSELT, 2}; + m["cusparseLtSpMMACompressedSize2"] = {"hipsparseLtSpMMACompressedSize2", "", CONV_LIB_FUNC, API_SPARSELT, 2}; + m["cusparseLtSpMMACompress2"] = {"hipsparseLtSpMMACompress2", "", CONV_LIB_FUNC, API_SPARSELT, 2}; return m; }(); @@ -67,6 +72,11 @@ const std::map CUDA_SPARSELT_FUNCTION_VER_MAP m["cusparseLtSpMMAPruneCheck"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["cusparseLtSpMMACompressedSize"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["cusparseLtSpMMACompress"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; + m["cusparseLtMatDescriptorDestroy"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; + m["cusparseLtSpMMAPrune2"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; + m["cusparseLtSpMMAPruneCheck2"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; + m["cusparseLtSpMMACompressedSize2"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; + m["cusparseLtSpMMACompress2"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; return m; }(); @@ -74,23 +84,28 @@ const std::map CUDA_SPARSELT_FUNCTION_VER_MAP const std::map HIP_SPARSELT_FUNCTION_VER_MAP = [] { std::map m; - m["hipsparseLtInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtDestroy"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtDenseDescriptorInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtStructuredDescriptorInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulDescriptorInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlgSelectionInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlgSetAttribute"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlgGetAttribute"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulGetWorkspace"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulPlanInit"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulPlanDestroy"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmul"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulSearch"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtSpMMAPrune"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtSpMMAPruneCheck"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtSpMMACompressedSize"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtSpMMACompress"] = {HIP_7020, HIP_0, HIP_0 }; + m["hipsparseLtInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtDestroy"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtDenseDescriptorInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtStructuredDescriptorInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulDescriptorInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlgSelectionInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlgSetAttribute"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlgGetAttribute"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulGetWorkspace"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulPlanInit"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulPlanDestroy"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmul"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulSearch"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMAPrune"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMAPruneCheck"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMACompressedSize"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMACompress"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatDescriptorDestroy"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMAPrune2"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMAPruneCheck2"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMACompressedSize2"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSpMMACompress2"] = {HIP_7100, HIP_0, HIP_0 }; return m; }(); diff --git a/src/CUDA2HIP_SPARSELT_API_types.cpp b/src/CUDA2HIP_SPARSELT_API_types.cpp index c0626514..8ee08bca 100644 --- a/src/CUDA2HIP_SPARSELT_API_types.cpp +++ b/src/CUDA2HIP_SPARSELT_API_types.cpp @@ -37,6 +37,8 @@ const std::map CUDA_SPARSELT_TYPE_NAME_MAP = [] { m["cusparseComputeType"] = {"hipsparseLtComputetype_t", "", CONV_TYPE, API_SPARSELT, 1}; m["CUSPARSE_COMPUTE_16F"] = {"HIPSPARSELT_COMPUTE_16F", "", CONV_NUMERIC_LITERAL, API_SPARSELT, 1}; m["CUSPARSE_COMPUTE_32I"] = {"HIPSPARSELT_COMPUTE_32I", "", CONV_NUMERIC_LITERAL, API_SPARSELT, 1}; + m["CUSPARSE_COMPUTE_TF32"] = {"HIPSPARSELT_COMPUTE_TF32", "", CONV_NUMERIC_LITERAL, API_SPARSELT, 1}; + m["CUSPARSE_COMPUTE_TF32_FAST"] = {"HIPSPARSELT_COMPUTE_TF32_FAST", "", CONV_NUMERIC_LITERAL, API_SPARSELT, 1}; m["cusparseLtMatmulAlg_t"] = {"hipsparseLtMatmulAlg_t", "", CONV_TYPE, API_SPARSELT, 1}; m["CUSPARSELT_MATMUL_ALG_DEFAULT"] = {"HIPSPARSELT_MATMUL_ALG_DEFAULT", "", CONV_NUMERIC_LITERAL, API_SPARSELT, 1}; m["cusparseLtMatmulAlgAttribute_t"] = {"hipsparseLtMatmulAlgAttribute_t", "", CONV_TYPE, API_SPARSELT, 1}; @@ -63,6 +65,8 @@ const std::map CUDA_SPARSELT_TYPE_NAME_VER_MAP m["cusparseComputeType"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["CUSPARSE_COMPUTE_16F"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["CUSPARSE_COMPUTE_32I"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; + m["CUSPARSE_COMPUTE_TF32"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; + m["CUSPARSE_COMPUTE_TF32_FAST"] = {CUSPARSELT_010, CUDA_0 , CUDA_0 }; m["cusparseLtMatmulAlg_t"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["CUSPARSELT_MATMUL_ALG_DEFAULT"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; m["cusparseLtMatmulAlgAttribute_t"] = {CUSPARSELT_001, CUDA_0 , CUDA_0 }; @@ -79,25 +83,27 @@ const std::map CUDA_SPARSELT_TYPE_NAME_VER_MAP const std::map HIP_SPARSELT_TYPE_NAME_VER_MAP = [] { std::map m; - m["hipsparseLtHandle_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatDescriptor_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulDescriptor_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlgSelection_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulPlan_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtSparsity_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_SPARSITY_50_PERCENT"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtComputetype_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_COMPUTE_16F"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_COMPUTE_32I"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlg_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_MATMUL_ALG_DEFAULT"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtMatmulAlgAttribute_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_MATMUL_ALG_CONFIG_ID"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_MATMUL_ALG_CONFIG_MAX_ID"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_MATMUL_SEARCH_ITERATIONS"] = {HIP_7020, HIP_0, HIP_0 }; - m["hipsparseLtPruneAlg_t"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_PRUNE_SPMMA_TILE"] = {HIP_7020, HIP_0, HIP_0 }; - m["HIPSPARSELT_PRUNE_SPMMA_STRIP"] = {HIP_7020, HIP_0, HIP_0 }; + m["hipsparseLtHandle_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatDescriptor_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulDescriptor_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlgSelection_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulPlan_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtSparsity_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_SPARSITY_50_PERCENT"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtComputetype_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_COMPUTE_16F"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_COMPUTE_32I"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlg_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_MATMUL_ALG_DEFAULT"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtMatmulAlgAttribute_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_MATMUL_ALG_CONFIG_ID"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_MATMUL_ALG_CONFIG_MAX_ID"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_MATMUL_SEARCH_ITERATIONS"] = {HIP_7100, HIP_0, HIP_0 }; + m["hipsparseLtPruneAlg_t"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_PRUNE_SPMMA_TILE"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_PRUNE_SPMMA_STRIP"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_COMPUTE_TF32"] = {HIP_7100, HIP_0, HIP_0 }; + m["HIPSPARSELT_COMPUTE_TF32_FAST"] = {HIP_7100, HIP_0, HIP_0 }; return m; }(); From 776554cfeea4429c7737b9622ee1a9d19375459e Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Wed, 8 Jul 2026 13:15:48 +0200 Subject: [PATCH 4/4] [HIPIFY][tests][refactor] Simplify test harness (#2654) + Get rid of old head-on solutions with `CUDA` root folders' includes in `lit.cfg` + [Testing] `Linux` and `Windows` --- tests/lit.cfg | 87 ++++++++------------------------------------------- 1 file changed, 13 insertions(+), 74 deletions(-) diff --git a/tests/lit.cfg b/tests/lit.cfg index 5f358b54..1e6e1f1b 100644 --- a/tests/lit.cfg +++ b/tests/lit.cfg @@ -315,80 +315,19 @@ if config.cuda_tensor_root and config.cuda_tensor_root != "OFF": if config.cuda_file_root and config.cuda_file_root != "OFF": clang_arguments += " -I'%s'" -i_subst = 0 -if config.cuda_sdk_root != "OFF": - i_subst = 1 -if config.cuda_dnn_root != "OFF": - i_subst += 2 -if config.cuda_cub_root != "OFF": - i_subst += 4 -if config.cuda_tensor_root != "OFF": - i_subst += 8 -if config.cuda_file_root != "OFF": - i_subst += 16 - -if i_subst == 31: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 30: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 29: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 28: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 27: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 26: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 25: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 24: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_tensor_root, config.cuda_file_root))) -elif i_subst == 23: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_file_root))) -elif i_subst == 22: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_file_root))) -elif i_subst == 21: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_file_root))) -elif i_subst == 20: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_file_root))) -elif i_subst == 19: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_file_root))) -elif i_subst == 18: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_file_root))) -elif i_subst == 17: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_file_root))) -elif i_subst == 16: - config.substitutions.append(("%clang_args", clang_arguments % config.cuda_file_root)) -elif i_subst == 15: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root))) -elif i_subst == 14: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root, config.cuda_tensor_root))) -elif i_subst == 13: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root, config.cuda_tensor_root))) -elif i_subst == 12: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_cub_root, config.cuda_tensor_root))) -elif i_subst == 11: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_tensor_root))) -elif i_subst == 10: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_tensor_root))) -elif i_subst == 9: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_tensor_root))) -elif i_subst == 8: - config.substitutions.append(("%clang_args", clang_arguments % config.cuda_tensor_root)) -elif i_subst == 7: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root, config.cuda_cub_root))) -elif i_subst == 6: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_dnn_root, config.cuda_cub_root))) -elif i_subst == 5: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_cub_root))) -elif i_subst == 4: - config.substitutions.append(("%clang_args", clang_arguments % config.cuda_cub_root)) -elif i_subst == 3: - config.substitutions.append(("%clang_args", clang_arguments % (config.cuda_sdk_root, config.cuda_dnn_root))) -elif i_subst == 2: - config.substitutions.append(("%clang_args", clang_arguments % config.cuda_dnn_root)) -elif i_subst == 1: - config.substitutions.append(("%clang_args", clang_arguments % config.cuda_sdk_root)) +# Collect all active root paths in the exact order they are appended to clang_arguments +roots = [ + root for root in [ + config.cuda_sdk_root, + config.cuda_dnn_root, + config.cuda_cub_root, + config.cuda_tensor_root, + config.cuda_file_root, + ] if root and root != "OFF" +] + +if roots: + config.substitutions.append(("%clang_args", clang_arguments % tuple(roots))) if config.llvm_version_major < 4: hipify_arguments = "-I'%s'/include"