ROCm / rocBLAS

Next generation BLAS implementation for ROCm platform
https://rocm.docs.amd.com/projects/rocBLAS/en/latest/
Other
331 stars 152 forks source link

[HIPIFY][#1281][ROC][CUDA 12.0][feature] Support of "pure int64_t" APIs in ROC, since they are introduced in cuBLAS 12.0 #1291

Open emankov opened 1 year ago

emankov commented 1 year ago

[IMP] int64_t rocBLAS APIs should be available in the same compilation unit. That means, int-based APIs can live in the same code simultaneously with int64_t ones. For instance:

cublasStatus_t CUBLASWINAPI cublasGetVector(int n, int elemSize, const void* x, int incx, void* y, int incy);
cublasStatus_t CUBLASWINAPI cublasGetVector_64(int64_t n, int64_t elemSize, const void* x, int64_t incx, void* y, int64_t incy);

Current rocBLAS analogue:

ROCBLAS_EXPORT rocblas_status rocblas_get_vector(rocblas_int n, rocblas_int elem_size, const void* x, rocblas_int incx, void* y, rocblas_int incy);

A possible obstacle to reaching the above aim in rocBLAS is the following preprocessing conditional defines for rocblas_int:

#if defined(rocblas_ILP64)
typedef int64_t rocblas_int;
#else
typedef int32_t rocblas_int;
#endif
TorreZuk commented 5 days ago

int64_t rocBLAS APIs should be available for all Level-3, Level-2, and Level-1 BLAS functions in develop branch now, they are in addition to the original 32-bit rocblas_int APIs. The new functions end with the suffix _64 when available and all the rocblas_int arguments are replaced by int64_t typed arguments.