如何在模板函数中使用Cublas库?

问题描述 投票:0回答:1
template <typename T> foo(...) { ... cublas<S/D/C/Z>geam(..., const T* A, ...); ... }

如何触发正确的函数调用?

I为具有相同功能名称的不同类型编写了Cublas包装器功能。
inline cublasStatus_t cublasGgeam(cublasHandle_t handle, cublasOperation_t transa, cublasOperation_t transb, int m, int n, const float *alpha, const float *A, int lda, const float *B, int ldb, const float *beta, float *C, int ldc) { return cublasSgeam(handle, transa, transb, m, n, alpha, A, lda, B, ldb, beta, C, ldc); } inline cublasStatus_t cublasGgeam(cublasHandle_t handle, cublasOperation_t transa, cublasOperation_t transb, int m, int n, const double *alpha, const double *A, int lda, const double *B, int ldb, const double *beta, double *C, int ldc) { return cublasDgeam(handle, transa, transb, m, n, alpha, A, lda, B, ldb, beta, C, ldc); }

在此之后,您可以针对具有相同函数名称的任何类型调用geam()。 C ++编译器将通过参数的类型选择正确的函数。在您的情况下,应该像
c++ templates cublas
1个回答
3
投票
template <typename T> foo(...) { ... cublasGgeam(..., A, ...); ... }

这是一个综合时间过载,根本没有运行时的成本,尽管您必须为包装函数编写一个长列表。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.