#include "CUDA2HIP.h" // Map of all functions const std::map CUDA_BLAS_FUNCTION_MAP{ // Blas management functions {"cublasInit", {"hipblasInit", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasShutdown", {"hipblasShutdown", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetVersion", {"hipblasGetVersion", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetError", {"hipblasGetError", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasAlloc", {"hipblasAlloc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasFree", {"hipblasFree", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetKernelStream", {"hipblasSetKernelStream", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetAtomicsMode", {"hipblasGetAtomicsMode", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetAtomicsMode", {"hipblasSetAtomicsMode", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetMathMode", {"hipblasGetMathMode", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetMathMode", {"hipblasSetMathMode", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Blas logging {"cublasLogCallback", {"hipblasLogCallback", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasLoggerConfigure", {"hipblasLoggerConfigure", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetLoggerCallback", {"hipblasSetLoggerCallback", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetLoggerCallback", {"hipblasGetLoggerCallback", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Blas1 (v1) Routines {"cublasCreate", {"hipblasCreate", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDestroy", {"hipblasDestroy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetStream", {"hipblasSetStream", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetStream", {"hipblasGetStream", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetPointerMode", {"hipblasGetPointerMode", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetPointerMode", {"hipblasSetPointerMode", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetVector", {"hipblasSetVector", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetVector", {"hipblasGetVector", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetVectorAsync", {"hipblasSetVectorAsync", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetVectorAsync", {"hipblasGetVectorAsync", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetMatrix", {"hipblasSetMatrix", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetMatrix", {"hipblasGetMatrix", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetMatrixAsync", {"hipblasGetMatrixAsync", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetMatrixAsync", {"hipblasSetMatrixAsync", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasXerbla", {"hipblasXerbla", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // NRM2 {"cublasSnrm2", {"hipblasSnrm2", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDnrm2", {"hipblasDnrm2", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasScnrm2", {"hipblasScnrm2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDznrm2", {"hipblasDznrm2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasNrm2Ex", {"hipblasNrm2Ex", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // DOT {"cublasSdot", {"hipblasSdot", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasSdotBatched", {"hipblasSdotBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDdot", {"hipblasDdot", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasDdotBatched", {"hipblasDdotBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCdotu", {"hipblasCdotu", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCdotc", {"hipblasCdotc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdotu", {"hipblasZdotu", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdotc", {"hipblasZdotc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SCAL {"cublasSscal", {"hipblasSscal", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasSscalBatched", {"hipblasSscalBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDscal", {"hipblasDscal", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasDscalBatched", {"hipblasDscalBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCscal", {"hipblasCscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsscal", {"hipblasCsscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZscal", {"hipblasZscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdscal", {"hipblasZdscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AXPY {"cublasSaxpy", {"hipblasSaxpy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSaxpyBatched", {"hipblasSaxpyBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDaxpy", {"hipblasDaxpy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCaxpy", {"hipblasCaxpy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZaxpy", {"hipblasZaxpy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // COPY {"cublasScopy", {"hipblasScopy", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasScopyBatched", {"hipblasScopyBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDcopy", {"hipblasDcopy", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasDcopyBatched", {"hipblasDcopyBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCcopy", {"hipblasCcopy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZcopy", {"hipblasZcopy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SWAP {"cublasSswap", {"hipblasSswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDswap", {"hipblasDswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCswap", {"hipblasCswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZswap", {"hipblasZswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AMAX {"cublasIsamax", {"hipblasIsamax", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasIdamax", {"hipblasIdamax", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasIcamax", {"hipblasIcamax", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIzamax", {"hipblasIzamax", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AMIN {"cublasIsamin", {"hipblasIsamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIdamin", {"hipblasIdamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIcamin", {"hipblasIcamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIzamin", {"hipblasIzamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ASUM {"cublasSasum", {"hipblasSasum", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasSasumBatched", {"hipblasSasumBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDasum", {"hipblasDasum", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasDasumBatched", {"hipblasDasumBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasScasum", {"hipblasScasum", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDzasum", {"hipblasDzasum", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROT {"cublasSrot", {"hipblasSrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrot", {"hipblasDrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCrot", {"hipblasCrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsrot", {"hipblasCsrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZrot", {"hipblasZrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdrot", {"hipblasZdrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTG {"cublasSrotg", {"hipblasSrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotg", {"hipblasDrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCrotg", {"hipblasCrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZrotg", {"hipblasZrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTM {"cublasSrotm", {"hipblasSrotm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotm", {"hipblasDrotm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTMG {"cublasSrotmg", {"hipblasSrotmg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotmg", {"hipblasDrotmg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GEMV {"cublasSgemv", {"hipblasSgemv", "", CONV_LIB_FUNC, API_BLAS}}, // there is no such a function in CUDA {"cublasSgemvBatched", {"hipblasSgemvBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgemv", {"hipblasDgemv", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgemv", {"hipblasCgemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemv", {"hipblasZgemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GBMV {"cublasSgbmv", {"hipblasSgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgbmv", {"hipblasDgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgbmv", {"hipblasCgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgbmv", {"hipblasZgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRMV {"cublasStrmv", {"hipblasStrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrmv", {"hipblasDtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrmv", {"hipblasCtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrmv", {"hipblasZtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TBMV {"cublasStbmv", {"hipblasStbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtbmv", {"hipblasDtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtbmv", {"hipblasCtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtbmv", {"hipblasZtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TPMV {"cublasStpmv", {"hipblasStpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtpmv", {"hipblasDtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtpmv", {"hipblasCtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtpmv", {"hipblasZtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSV {"cublasStrsv", {"hipblasStrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrsv", {"hipblasDtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrsv", {"hipblasCtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsv", {"hipblasZtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TPSV {"cublasStpsv", {"hipblasStpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtpsv", {"hipblasDtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtpsv", {"hipblasCtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtpsv", {"hipblasZtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TBSV {"cublasStbsv", {"hipblasStbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtbsv", {"hipblasDtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtbsv", {"hipblasCtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtbsv", {"hipblasZtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYMV/HEMV {"cublasSsymv", {"hipblasSsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsymv", {"hipblasDsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsymv", {"hipblasCsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsymv", {"hipblasZsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChemv", {"hipblasChemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhemv", {"hipblasZhemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SBMV/HBMV {"cublasSsbmv", {"hipblasSsbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsbmv", {"hpiblasDsbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChbmv", {"hipblasChbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhbmv", {"hipblasZhbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPMV/HPMV {"cublasSspmv", {"hipblasSspmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspmv", {"hipblasDspmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpmv", {"hipblasChpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpmv", {"hipblasZhpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GER {"cublasSger", {"hipblasSger", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDger", {"hipblasDger", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgeru", {"hipblasCgeru", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgerc", {"hipblasCgerc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgeru", {"hipblasZgeru", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgerc", {"hipblasZgerc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR/HER {"cublasSsyr", {"hipblasSsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr", {"hipblasDsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr", {"hipblasCsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr", {"hipblasZsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCher", {"hipblasCher", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher", {"hipblasZher", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPR/HPR {"cublasSspr", {"hipblasSspr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspr", {"hipblasDspr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpr", {"hipblasChpr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpr", {"hipblasZhpr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR2/HER2 {"cublasSsyr2", {"hipblasSsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr2", {"hipblasDsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr2", {"hipblasCsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr2", {"hipblasZsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCher2", {"hipblasCher2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher2", {"hipblasZher2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPR2/HPR2 {"cublasSspr2", {"hipblasSspr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspr2", {"hipblasDspr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpr2", {"hipblasChpr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpr2", {"hipblasZhpr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Blas3 (v1) Routines // GEMM {"cublasSgemm", {"hipblasSgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDgemm", {"hipblasDgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgemm", {"hipblasCgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasZgemm", {"hipblasZgemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasHgemm", {"hipblasHgemm", "", CONV_LIB_FUNC, API_BLAS}}, // BATCH GEMM {"cublasSgemmBatched", {"hipblasSgemmBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDgemmBatched", {"hipblasDgemmBatched", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasHgemmBatched", {"hipblasHgemmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSgemmStridedBatched", {"hipblasSgemmStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgemmStridedBatched", {"hipblasDgemmStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgemmBatched", {"hipblasCgemmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgemm3mBatched", {"hipblasCgemm3mBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemmBatched", {"hipblasZgemmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgemmStridedBatched", {"hipblasCgemmStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgemm3mStridedBatched", {"hipblasCgemm3mStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemmStridedBatched", {"hipblasZgemmStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasHgemmStridedBatched", {"hipblasHgemmStridedBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYRK {"cublasSsyrk", {"hipblasSsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyrk", {"hipblasDsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyrk", {"hipblasCsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyrk", {"hipblasZsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HERK {"cublasCherk", {"hipblasCherk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZherk", {"hipblasZherk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR2K {"cublasSsyr2k", {"hipblasSsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr2k", {"hipblasDsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr2k", {"hipblasCsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr2k", {"hipblasZsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYRKX - eXtended SYRK {"cublasSsyrkx", {"hipblasSsyrkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyrkx", {"hipblasDsyrkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyrkx", {"hipblasCsyrkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyrkx", {"hipblasZsyrkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HER2K {"cublasCher2k", {"hipblasCher2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher2k", {"hipblasZher2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HERKX - eXtended HERK {"cublasCherkx", {"hipblasCherkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZherkx", {"hipblasZherkx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYMM {"cublasSsymm", {"hipblasSsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsymm", {"hipblasDsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsymm", {"hipblasCsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsymm", {"hipblasZsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HEMM {"cublasChemm", {"hipblasChemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhemm", {"hipblasZhemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSM {"cublasStrsm", {"hipblasStrsm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDtrsm", {"hipblasDtrsm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCtrsm", {"hipblasCtrsm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsm", {"hipblasZtrsm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSM - Batched Triangular Solver {"cublasStrsmBatched", {"hipblasStrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrsmBatched", {"hipblasDtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrsmBatched", {"hipblasCtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsmBatched", {"hipblasZtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRMM {"cublasStrmm", {"hipblasStrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrmm", {"hipblasDtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrmm", {"hipblasCtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrmm", {"hipblasZtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ------------------------ CUBLAS BLAS - like extension (cublas_api.h) // GEAM {"cublasSgeam", {"hipblasSgeam", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDgeam", {"hipblasDgeam", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgeam", {"hipblasCgeam", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgeam", {"hipblasZgeam", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GETRF - Batched LU {"cublasSgetrfBatched", {"hipblasSgetrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgetrfBatched", {"hipblasDgetrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgetrfBatched", {"hipblasCgetrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgetrfBatched", {"hipblasZgetrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Batched inversion based on LU factorization from getrf {"cublasSgetriBatched", {"hipblasSgetriBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgetriBatched", {"hipblasDgetriBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgetriBatched", {"hipblasCgetriBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgetriBatched", {"hipblasZgetriBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Batched solver based on LU factorization from getrf {"cublasSgetrsBatched", {"hipblasSgetrsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgetrsBatched", {"hipblasDgetrsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgetrsBatched", {"hipblasCgetrsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgetrsBatched", {"hipblasZgetrsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSM - Batched Triangular Solver {"cublasStrsmBatched", {"hipblasStrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrsmBatched", {"hipblasDtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrsmBatched", {"hipblasCtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsmBatched", {"hipblasZtrsmBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // MATINV - Batched {"cublasSmatinvBatched", {"hipblasSmatinvBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDmatinvBatched", {"hipblasDmatinvBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCmatinvBatched", {"hipblasCmatinvBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZmatinvBatched", {"hipblasZmatinvBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Batch QR Factorization {"cublasSgeqrfBatched", {"hipblasSgeqrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgeqrfBatched", {"hipblasDgeqrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgeqrfBatched", {"hipblasCgeqrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgeqrfBatched", {"hipblasZgeqrfBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Least Square Min only m >= n and Non-transpose supported {"cublasSgelsBatched", {"hipblasSgelsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgelsBatched", {"hipblasDgelsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgelsBatched", {"hipblasCgelsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgelsBatched", {"hipblasZgelsBatched", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // DGMM {"cublasSdgmm", {"hipblasSdgmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDdgmm", {"hipblasDdgmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCdgmm", {"hipblasCdgmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdgmm", {"hipblasZdgmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TPTTR - Triangular Pack format to Triangular format {"cublasStpttr", {"hipblasStpttr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtpttr", {"hipblasDtpttr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtpttr", {"hipblasCtpttr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtpttr", {"hipblasZtpttr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRTTP - Triangular format to Triangular Pack format {"cublasStrttp", {"hipblasStrttp", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrttp", {"hipblasDtrttp", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrttp", {"hipblasCtrttp", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrttp", {"hipblasZtrttp", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Blas2 (v2) Routines {"cublasCreate_v2", {"hipblasCreate", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDestroy_v2", {"hipblasDestroy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetVersion_v2", {"hipblasGetVersion", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGetProperty", {"hipblasGetProperty", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSetStream_v2", {"hipblasSetStream", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetStream_v2", {"hipblasGetStream", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGetPointerMode_v2", {"hipblasGetPointerMode", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasSetPointerMode_v2", {"hipblasSetPointerMode", "", CONV_LIB_FUNC, API_BLAS}}, // GEMV {"cublasSgemv_v2", {"hipblasSgemv", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDgemv_v2", {"hipblasDgemv", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgemv_v2", {"hipblasCgemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemv_v2", {"hipblasZgemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GBMV {"cublasSgbmv_v2", {"hipblasSgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDgbmv_v2", {"hipblasDgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgbmv_v2", {"hipblasCgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgbmv_v2", {"hipblasZgbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRMV {"cublasStrmv_v2", {"hipblasStrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrmv_v2", {"hipblasDtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrmv_v2", {"hipblasCtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrmv_v2", {"hipblasZtrmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TBMV {"cublasStbmv_v2", {"hipblasStbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtbmv_v2", {"hipblasDtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtbmv_v2", {"hipblasCtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtbmv_v2", {"hipblasZtbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TPMV {"cublasStpmv_v2", {"hipblasStpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtpmv_v2", {"hipblasDtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtpmv_v2", {"hipblasCtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtpmv_v2", {"hipblasZtpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSV {"cublasStrsv_v2", {"hipblasStrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrsv_v2", {"hipblasDtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrsv_v2", {"hipblasCtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsv_v2", {"hipblasZtrsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TPSV {"cublasStpsv_v2", {"hipblasStpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtpsv_v2", {"hipblasDtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtpsv_v2", {"hipblasCtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtpsv_v2", {"hipblasZtpsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TBSV {"cublasStbsv_v2", {"hipblasStbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtbsv_v2", {"hipblasDtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtbsv_v2", {"hipblasCtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtbsv_v2", {"hipblasZtbsv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYMV/HEMV {"cublasSsymv_v2", {"hipblasSsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsymv_v2", {"hipblasDsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsymv_v2", {"hipblasCsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsymv_v2", {"hipblasZsymv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChemv_v2", {"hipblasChemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhemv_v2", {"hipblasZhemv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SBMV/HBMV {"cublasSsbmv_v2", {"hipblasSsbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsbmv_v2", {"hpiblasDsbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChbmv_v2", {"hipblasChbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhbmv_v2", {"hipblasZhbmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPMV/HPMV {"cublasSspmv_v2", {"hipblasSspmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspmv_v2", {"hipblasDspmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpmv_v2", {"hipblasChpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpmv_v2", {"hipblasZhpmv", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // GER {"cublasSger_v2", {"hipblasSger", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDger_v2", {"hipblasDger", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgeru_v2", {"hipblasCgeru", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgerc_v2", {"hipblasCgerc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgeru_v2", {"hipblasZgeru", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgerc_v2", {"hipblasZgerc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR/HER {"cublasSsyr_v2", {"hipblasSsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr_v2", {"hipblasDsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr_v2", {"hipblasCsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr_v2", {"hipblasZsyr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCher_v2", {"hipblasCher", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher_v2", {"hipblasZher", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPR/HPR {"cublasSspr_v2", {"hipblasSspr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspr_v2", {"hipblasDspr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpr_v2", {"hipblasChpr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpr_v2", {"hipblasZhpr", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR2/HER2 {"cublasSsyr2_v2", {"hipblasSsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr2_v2", {"hipblasDsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr2_v2", {"hipblasCsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr2_v2", {"hipblasZsyr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCher2_v2", {"hipblasCher2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher2_v2", {"hipblasZher2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SPR2/HPR2 {"cublasSspr2_v2", {"hipblasSspr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDspr2_v2", {"hipblasDspr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasChpr2_v2", {"hipblasChpr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhpr2_v2", {"hipblasZhpr2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // Blas3 (v2) Routines // GEMM {"cublasSgemm_v2", {"hipblasSgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDgemm_v2", {"hipblasDgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgemm_v2", {"hipblasCgemm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCgemm3m", {"hipblasCgemm3m", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCgemm3mEx", {"hipblasCgemm3mEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemm_v2", {"hipblasZgemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZgemm3m", {"hipblasZgemm3m", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, //IO in FP16 / FP32, computation in float {"cublasSgemmEx", {"hipblasSgemmEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGemmEx", {"hipblasGemmEx", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasGemmBatchedEx", {"hipblasGemmBatchedEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasGemmStridedBatchedEx", {"hipblasGemmStridedBatchedEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // IO in Int8 complex/cuComplex, computation in cuComplex {"cublasCgemmEx", {"hipblasCgemmEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasUint8gemmBias", {"hipblasUint8gemmBias", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYRK {"cublasSsyrk_v2", {"hipblasSsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyrk_v2", {"hipblasDsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyrk_v2", {"hipblasCsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyrk_v2", {"hipblasZsyrk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // IO in Int8 complex/cuComplex, computation in cuComplex {"cublasCsyrkEx", {"hipblasCsyrkEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // IO in Int8 complex/cuComplex, computation in cuComplex, Gaussian math {"cublasCsyrk3mEx", {"hipblasCsyrk3mEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HERK {"cublasCherk_v2", {"hipblasCherk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // IO in Int8 complex/cuComplex, computation in cuComplex {"cublasCherkEx", {"hipblasCherkEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // IO in Int8 complex/cuComplex, computation in cuComplex, Gaussian math {"cublasCherk3mEx", {"hipblasCherk3mEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZherk_v2", {"hipblasZherk", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYR2K {"cublasSsyr2k_v2", {"hipblasSsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsyr2k_v2", {"hipblasDsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsyr2k_v2", {"hipblasCsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsyr2k_v2", {"hipblasZsyr2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HER2K {"cublasCher2k_v2", {"hipblasCher2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZher2k_v2", {"hipblasZher2k", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SYMM {"cublasSsymm_v2", {"hipblasSsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDsymm_v2", {"hipblasDsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsymm_v2", {"hipblasCsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZsymm_v2", {"hipblasZsymm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // HEMM {"cublasChemm_v2", {"hipblasChemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZhemm_v2", {"hipblasZhemm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRSM {"cublasStrsm_v2", {"hipblasStrsm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDtrsm_v2", {"hipblasDtrsm", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCtrsm_v2", {"hipblasCtrsm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrsm_v2", {"hipblasZtrsm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // TRMM {"cublasStrmm_v2", {"hipblasStrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDtrmm_v2", {"hipblasDtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCtrmm_v2", {"hipblasCtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZtrmm_v2", {"hipblasZtrmm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // NRM2 {"cublasSnrm2_v2", {"hipblasSnrm2", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDnrm2_v2", {"hipblasDnrm2", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasScnrm2_v2", {"hipblasScnrm2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDznrm2_v2", {"hipblasDznrm2", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // DOT {"cublasDotEx", {"hipblasDotEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDotcEx", {"hipblasDotcEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSdot_v2", {"hipblasSdot", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDdot_v2", {"hipblasDdot", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCdotu_v2", {"hipblasCdotu", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCdotc_v2", {"hipblasCdotc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdotu_v2", {"hipblasZdotu", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdotc_v2", {"hipblasZdotc", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SCAL {"cublasScalEx", {"hipblasScalEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSscal_v2", {"hipblasSscal", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDscal_v2", {"hipblasDscal", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCscal_v2", {"hipblasCscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsscal_v2", {"hipblasCsscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZscal_v2", {"hipblasZscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdscal_v2", {"hipblasZdscal", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AXPY {"cublasAxpyEx", {"hipblasAxpyEx", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasSaxpy_v2", {"hipblasSaxpy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDaxpy_v2", {"hipblasDaxpy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCaxpy_v2", {"hipblasCaxpy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZaxpy_v2", {"hipblasZaxpy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // COPY {"cublasScopy_v2", {"hipblasScopy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDcopy_v2", {"hipblasDcopy", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasCcopy_v2", {"hipblasCcopy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZcopy_v2", {"hipblasZcopy", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // SWAP {"cublasSswap_v2", {"hipblasSswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDswap_v2", {"hipblasDswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCswap_v2", {"hipblasCswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZswap_v2", {"hipblasZswap", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // AMAX {"cublasIsamax_v2", {"hipblasIsamax", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasIdamax_v2", {"hipblasIdamax", "", 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 {"cublasIsamin_v2", {"hipblasIsamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIdamin_v2", {"hipblasIdamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIcamin_v2", {"hipblasIcamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasIzamin_v2", {"hipblasIzamin", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ASUM {"cublasSasum_v2", {"hipblasSasum", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasDasum_v2", {"hipblasDasum", "", CONV_LIB_FUNC, API_BLAS}}, {"cublasScasum_v2", {"hipblasScasum", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDzasum_v2", {"hipblasDzasum", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROT {"cublasSrot_v2", {"hipblasSrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrot_v2", {"hipblasDrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCrot_v2", {"hipblasCrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCsrot_v2", {"hipblasCsrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZrot_v2", {"hipblasZrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZdrot_v2", {"hipblasZdrot", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTG {"cublasSrotg_v2", {"hipblasSrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotg_v2", {"hipblasDrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasCrotg_v2", {"hipblasCrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasZrotg_v2", {"hipblasZrotg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTM {"cublasSrotm_v2", {"hipblasSrotm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotm_v2", {"hipblasDrotm", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, // ROTMG {"cublasSrotmg_v2", {"hipblasSrotmg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, {"cublasDrotmg_v2", {"hipblasDrotmg", "", CONV_LIB_FUNC, API_BLAS, HIP_UNSUPPORTED}}, };