[5.3.X] TRMM functions do not have correct correspondence in hipBLAS
emankov opened this issue · 4 comments
hipBLAS TRMM functions hipblasStrmm
, hipblasDtrmm
, hipblasCtrmm
, hipblasZtrmm
do not match neither cublas TRMM functions, nor cublas TRMM _v2 functions.
For instance:
cublasStrmm:
void CUBLASWINAPI cublasStrmm(char side,
char uplo,
char transa,
char diag,
int m,
int n,
float alpha,
const float* A,
int lda,
float* B,
int ldb);
cublasStrmm_v2:
CUBLASAPI cublasStatus_t CUBLASWINAPI cublasStrmm_v2(cublasHandle_t handle,
cublasSideMode_t side,
cublasFillMode_t uplo,
cublasOperation_t trans,
cublasDiagType_t diag,
int m,
int n,
const float* alpha, /* host or device pointer */
const float* A,
int lda,
const float* B,
int ldb,
float* C,
int ldc);
hipblasStrmm:
HIPBLAS_EXPORT hipblasStatus_t hipblasStrmm(hipblasHandle_t handle,
hipblasSideMode_t side,
hipblasFillMode_t uplo,
hipblasOperation_t transA,
hipblasDiagType_t diag,
int m,
int n,
const float* alpha,
const float* AP,
int lda,
float* BP,
int ldb);
The same goes for rocBLAS analogues rocblas_strmm
, rocblas_dtrmm
, rocblas_ctrmm
, rocblas_ztrmm
(ROCm/rocBLAS#1265).
So, the above 4 hipBLAS and 4 rocBLAS functions are marked as HIP UNSUPPORTED
.
[Solution]
As far as hipBLAS doesn't support v1
BLAS functions, populate hipblas TRMM functions with two missing arguments: float* C
and int ldc
and revise functions' logic.
Hi @emankov,
I've made some comments in ROCm/rocBLAS#1265 regarding the rocBLAS implementation of these functions. The reasoning behind the difference for hipBLAS/cuBLAS is the same.
Moving forward, we do plan on moving to introduce the out-of-place functionality support (with the extra C and ldc parameters) for the hipblasXtrmm API. We announced deprecation of the current trmm API in hipBLAS 0.49 for ROCm 5.0. There is an open pull reqest at #504 which makes these requested changes. We plan on pushing this change into a future release of hipBLAS.
Thanks again,
Daine