From fec9f62e0f32e65bc1df3d0f9b67ce2db847aa76 Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Tue, 16 Apr 2019 12:52:58 +0300 Subject: [PATCH] [HIPIFY][BLAS] cuBLAS 10.1 support [ROCm/hip commit: 032c3bf5b8ca28e0f444a23bba533cc8f2999bef] --- .../hip/docs/markdown/CUBLAS_API_supported_by_HIP.md | 12 ++++++++++++ .../hipify-clang/src/CUDA2HIP_BLAS_API_functions.cpp | 10 ++++++++++ .../hip/hipify-clang/src/CUDA2HIP_BLAS_API_types.cpp | 3 +++ 3 files changed, 25 insertions(+) diff --git a/projects/hip/docs/markdown/CUBLAS_API_supported_by_HIP.md b/projects/hip/docs/markdown/CUBLAS_API_supported_by_HIP.md index 388b86d8ef..7f3cbc6702 100644 --- a/projects/hip/docs/markdown/CUBLAS_API_supported_by_HIP.md +++ b/projects/hip/docs/markdown/CUBLAS_API_supported_by_HIP.md @@ -20,9 +20,12 @@ | 0 |*`CUBLAS_OP_N`* |*`HIPBLAS_OP_N`* | 111 | | 1 |*`CUBLAS_OP_T`* |*`HIPBLAS_OP_T`* | 112 | | 2 |*`CUBLAS_OP_C`* |*`HIPBLAS_OP_C`* | 113 | +| 2 |*`CUBLAS_OP_HERMITAN`* |*`HIPBLAS_OP_C`* | 113 | +| 3 |*`CUBLAS_OP_CONJG`* | | | enum |***`cublasFillMode_t`*** |***`hipblasFillMode_t`*** | | 0 |*`CUBLAS_FILL_MODE_LOWER`* |*`HIPBLAS_FILL_MODE_LOWER`* | 121 | | 1 |*`CUBLAS_FILL_MODE_UPPER`* |*`HIPBLAS_FILL_MODE_UPPER`* | 122 | +| 1 |*`CUBLAS_FILL_MODE_FULL`* |*`HIPBLAS_FILL_MODE_FULL`* | 123 | | enum |***`cublasDiagType_t`*** |***`hipblasDiagType_t`*** | | 0 |*`CUBLAS_DIAG_NON_UNIT`* |*`HIPBLAS_DIAG_NON_UNIT`* | 131 | | 1 |*`CUBLAS_DIAG_UNIT`* |*`HIPBLAS_DIAG_UNIT`* | 132 | @@ -98,6 +101,7 @@ |`cublasGetVersion` | | |`cublasGetVersion_v2` | | |`cublasGetProperty` | | +|`cublasGetCudartVersion` | | |`cublasGetStream` |`hipblasGetStream` | |`cublasGetStream_v2` |`hipblasGetStream` | |`cublasSetStream` |`hipblasSetStream` | @@ -173,6 +177,7 @@ |`cublasDcopy` |`hipblasDcopy` | |`cublasDcopy_v2` |`hipblasDcopy` | |`cublasCcopy` | | +|`cublasCopyEx` | | |`cublasCcopy_v2` | | |`cublasZcopy` | | |`cublasZcopy_v2` | | @@ -184,6 +189,7 @@ |`cublasCswap_v2` | | |`cublasZswap` | | |`cublasZswap_v2` | | +|`cublasIamaxEx` | | |`cublasIsamax` |`hipblasIsamax` | |`cublasIsamax_v2` |`hipblasIsamax` | |`cublasIdamax` |`hipblasIdamax` | @@ -192,6 +198,7 @@ |`cublasIcamax_v2` | | |`cublasIzamax` | | |`cublasIzamax_v2` | | +|`cublasIaminEx` | | |`cublasIsamin` | | |`cublasIsamin_v2` | | |`cublasIdamin` | | @@ -200,6 +207,7 @@ |`cublasIcamin_v2` | | |`cublasIzamin` | | |`cublasIzamin_v2` | | +|`cublasAsumEx` | | |`cublasSasum` |`hipblasSasum` | |`cublasSasum_v2` |`hipblasSasum` | |`cublasDasum` |`hipblasDasum` | @@ -208,6 +216,7 @@ |`cublasScasum_v2` | | |`cublasDzasum` | | |`cublasDzasum_v2` | | +|`cublasRotEx` | | |`cublasSrot` | | |`cublasSrot_v2` | | |`cublasDrot` | | @@ -216,6 +225,7 @@ |`cublasCrot_v2` | | |`cublasZrot` | | |`cublasZrot_v2` | | +|`cublasRotgEx` | | |`cublasZdrot` | | |`cublasZdrot_v2` | | |`cublasSrotg` | | @@ -226,10 +236,12 @@ |`cublasCrotg_v2` | | |`cublasZrotg` | | |`cublasZrotg_v2` | | +|`cublasRotmEx` | | |`cublasSrotm` | | |`cublasSrotm_v2` | | |`cublasDrotm` | | |`cublasDrotm_v2` | | +|`cublasRotmgEx` | | |`cublasSrotmg` | | |`cublasSrotmg_v2` | | |`cublasDrotmg` | | diff --git a/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_functions.cpp b/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_functions.cpp index b6bdf4ebe9..9d7f559e1a 100644 --- a/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_functions.cpp +++ b/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_functions.cpp @@ -421,6 +421,7 @@ const std::map CUDA_BLAS_FUNCTION_MAP{ {"cublasGetStream_v2", {"hipblasGetStream", "rocblas_get_stream", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetPointerMode_v2", {"hipblasGetPointerMode", "rocblas_set_pointer_mode", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetPointerMode_v2", {"hipblasSetPointerMode", "rocblas_get_pointer_mode", CONV_LIB_FUNC, API_BLAS}}, + {"cublasGetCudartVersion", {"hipblasGetCudartVersion", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // GEMV {"cublasSgemv_v2", {"hipblasSgemv", "rocblas_sgemv", CONV_LIB_FUNC, API_BLAS}}, @@ -631,36 +632,42 @@ const std::map CUDA_BLAS_FUNCTION_MAP{ {"cublasZaxpy_v2", {"hipblasZaxpy", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // COPY + {"cublasCopyEx", {"hipblasCopyEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasScopy_v2", {"hipblasScopy", "rocblas_scopy", CONV_LIB_FUNC, API_BLAS}}, {"cublasDcopy_v2", {"hipblasDcopy", "rocblas_dcopy", CONV_LIB_FUNC, API_BLAS}}, {"cublasCcopy_v2", {"hipblasCcopy", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasZcopy_v2", {"hipblasZcopy", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // SWAP + {"cublasSwapEx", {"hipblasSwapEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSswap_v2", {"hipblasSswap", "rocblas_sswap", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDswap_v2", {"hipblasDswap", "rocblas_dswap", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCswap_v2", {"hipblasCswap", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasZswap_v2", {"hipblasZswap", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // AMAX + {"cublasIamaxEx", {"hipblasIamaxEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIsamax_v2", {"hipblasIsamax", "rocblas_isamax", CONV_LIB_FUNC, API_BLAS}}, {"cublasIdamax_v2", {"hipblasIdamax", "rocblas_idamax", CONV_LIB_FUNC, API_BLAS}}, {"cublasIcamax_v2", {"hipblasIcamax", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIzamax_v2", {"hipblasIzamax", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AMIN + {"cublasIaminEx", {"hipblasIaminEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasIsamin_v2", {"hipblasIsamin", "rocblas_isamin", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIdamin_v2", {"hipblasIdamin", "rocblas_idamin", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIcamin_v2", {"hipblasIcamin", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasIzamin_v2", {"hipblasIzamin", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // ASUM + {"cublasAsumEx", {"hipblasAsumEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSasum_v2", {"hipblasSasum", "rocblas_sasum", CONV_LIB_FUNC, API_BLAS}}, {"cublasDasum_v2", {"hipblasDasum", "rocblas_dasum", CONV_LIB_FUNC, API_BLAS}}, {"cublasScasum_v2", {"hipblasScasum", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasDzasum_v2", {"hipblasDzasum", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // ROT + {"cublasRotEx", {"hipblasRotEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSrot_v2", {"hipblasSrot", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasDrot_v2", {"hipblasDrot", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasCrot_v2", {"hipblasCrot", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, @@ -669,16 +676,19 @@ const std::map CUDA_BLAS_FUNCTION_MAP{ {"cublasZdrot_v2", {"hipblasZdrot", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // ROTG + {"cublasRotgEx", {"hipblasRotgEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSrotg_v2", {"hipblasSrotg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasDrotg_v2", {"hipblasDrotg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasCrotg_v2", {"hipblasCrotg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasZrotg_v2", {"hipblasZrotg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // ROTM + {"cublasRotmEx", {"hipblasRotmEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSrotm_v2", {"hipblasSrotm", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasDrotm_v2", {"hipblasDrotm", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, // ROTMG + {"cublasRotmgEx", {"hipblasRotmgEx", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasSrotmg_v2", {"hipblasSrotmg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, {"cublasDrotmg_v2", {"hipblasDrotmg", "", CONV_LIB_FUNC, API_BLAS, UNSUPPORTED}}, }; diff --git a/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_types.cpp b/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_types.cpp index 6725d6b5a0..2e2168efa0 100644 --- a/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_types.cpp +++ b/projects/hip/hipify-clang/src/CUDA2HIP_BLAS_API_types.cpp @@ -29,6 +29,8 @@ const std::map CUDA_BLAS_TYPE_NAME_MAP{ {"CUBLAS_OP_N", {"HIPBLAS_OP_N", "rocblas_operation_none", CONV_NUMERIC_LITERAL, API_BLAS}}, {"CUBLAS_OP_T", {"HIPBLAS_OP_T", "rocblas_operation_transpose", CONV_NUMERIC_LITERAL, API_BLAS}}, {"CUBLAS_OP_C", {"HIPBLAS_OP_C", "rocblas_operation_conjugate_transpose", CONV_NUMERIC_LITERAL, API_BLAS}}, + {"CUBLAS_OP_HERMITAN", {"HIPBLAS_OP_C", "rocblas_operation_conjugate_transpose", CONV_NUMERIC_LITERAL, API_BLAS}}, + {"CUBLAS_OP_CONJG", {"HIPBLAS_OP_CONJG", "rocblas_operation_conjugate", CONV_NUMERIC_LITERAL, API_BLAS, UNSUPPORTED}}, // Blas statuses {"cublasStatus", {"hipblasStatus_t", "rocblas_status", CONV_TYPE, API_BLAS}}, @@ -48,6 +50,7 @@ const std::map CUDA_BLAS_TYPE_NAME_MAP{ {"cublasFillMode_t", {"hipblasFillMode_t", "rocblas_fill", CONV_TYPE, API_BLAS}}, {"CUBLAS_FILL_MODE_LOWER", {"HIPBLAS_FILL_MODE_LOWER", "rocblas_fill_lower", CONV_NUMERIC_LITERAL, API_BLAS}}, {"CUBLAS_FILL_MODE_UPPER", {"HIPBLAS_FILL_MODE_UPPER", "rocblas_fill_upper", CONV_NUMERIC_LITERAL, API_BLAS}}, + {"CUBLAS_FILL_MODE_FULL", {"HIPBLAS_FILL_MODE_FULL", "rocblas_fill_full", CONV_NUMERIC_LITERAL, API_BLAS}}, // Blas Diag Types {"cublasDiagType_t", {"hipblasDiagType_t", "rocblas_diagonal", CONV_TYPE, API_BLAS}},