Created by: wangchaochaohu
PR types
Others
PR changes
Others
Describe
cuda11的cublas中可能存在一下情况
cublasStatus_t cublasGemmEx(cublasHandle_t handle,
cublasOperation_t transa,
cublasOperation_t transb,
int m,
int n,
int k,
const void *alpha,
const void *A,
cudaDataType_t Atype,
int lda,
const void *B,
cudaDataType_t Btype,
int ldb,
const void *beta,
void *C,
cudaDataType_t Ctype,
int ldc,
cublasComputeType_t computeType,
cublasGemmAlgo_t algo)
#if defined(__cplusplus)
cublasStatus_t cublasGemmEx(cublasHandle_t handle,
cublasOperation_t transa,
cublasOperation_t transb,
int m,
int n,
int k,
const void *alpha,
const void *A,
cudaDataType Atype,
int lda,
const void *B,
cudaDataType Btype,
int ldb,
const void *beta,
void *C,
cudaDataType Ctype,
int ldc,
cudaDataType computeType,
cublasGemmAlgo_t algo)
#endif
通过上述代码 我们可以看出cuda11的cublas 存在同名函数, 为了解决这个问题, 我们添加了对同名函数不同参数的cublas 支持 解决方式可以参考 https://stackoverflow.com/questions/22291737/why-cant-decltype-work-with-overloaded-functions
之前通过decltype中&::__name
这种单纯从名字进行类型推断,实际这种情况在C++ 函数重载的时候可能存在问题,会报错, 这里为了解决这个问题,在进行模板推断的时候为函数推断添加可变长参数(Args...),参数可以通过declvar返回右值引用,通过参数进一步区别不同函数