CUDA 模板错误:没有函数模板实例与参数列表匹配

白胡子

我无法弄清楚的编译器错误。我的函数调用似乎与参数列表匹配。

nvcc -o main main.cu

error:  no instance of function template "gemm_template_batched_nn_kernel" matches the argument list argument types are (int, int, int, double **, int, double **, int, double **, int, double, double)

gemm.h

template <typename T, const int DIM_X, const int DIM_Y,
         const int BLK_M, const int BLK_N, const int BLK_K, 
         const int DIM_XA, const int DIM_YA, const int DIM_XB, const int DIM_YB, 
         const int CONJA, const int CONJB>
static __global__
void gemm_template_batched_nn_kernel(
    int M, int N, int K,
    T const * const * Aarray, int LDA,
    T const * const * Barray, int LDB,
    T**       Carray, int LDC,
    T alpha, T beta)
{
    const int batchid = blockIdx.z;

    gemm_template_device_nn
        <T, DIM_X, DIM_Y, BLK_M, BLK_N, BLK_K, DIM_XA, DIM_YA, DIM_XB, DIM_YB, (BLK_M/DIM_X), (BLK_N/DIM_Y), CONJA, CONJB>
        ( M, N, K, 
          Aarray[batchid], LDA, 
          Barray[batchid], LDB, 
          Carray[batchid], LDC, 
          alpha, beta );
}

主文件

#include "gemm.h"
#define N 256
#define BLK_M 16
#define DIM_X 16
#define DIM_Y 16

int main() {
    double *Ad, *Bd, *Cd;
    dim3 dimGrid(N/BLK_M, N/BLK_M);
    dim3 dimBlock(DIM_X, DIM_Y);
    ...
    gemm_template_batched_nn_kernel<double><<<dimGrid,dimBlock>>>(N,N,N,&Ad,N,&Bd,N,&Cd,N,1.0,1.0);
    ...
}
燕窝

我的评论似乎奏效了,所以让它成为一个答案......

你的模板有十二个模板参数,没有默认值;而您正试图仅用一个 ( <double>)来实例化它要么指定所有这些,要么不指定。

其他注意事项:

  • 拥有这么多参数并不是一个好主意,可以考虑将它们放入一些结构体中,或者使用spans
  • CUDA 中的指针数组?可能是个坏主意
  • 正如 CUDA 编程指南所建议的那样,您可能应该使用__restrict__指针参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有与参数列表匹配的函数模板实例,参数类型为:(std::string, CommandLineArgumentTypes)

没有函数模板“ max”的实例与参数列表匹配的参数类型为(int,int)

如何修复 C++ 中的“没有函数模板‘Defer’的实例与参数列表匹配”错误?

没有函数模板的实例与参数列表匹配(尝试打印数组)

没有函数模板“ std :: make_pair”的实例与参数列表匹配

没有函数模板的实例与参数列表匹配,我不知道为什么

C ++模板类:没有构造函数的实例与参数列表匹配

C ++ / Cuda模板

没有匹配函数调用可变参数模板函数

c ++模板-多个重载函数实例与参数列表匹配

可变参数模板,没有匹配的调用函数

CUDA9.2及更高版本中带有模板默认参数的未解决外部函数错误

没有CUDA代码的线程中的CUDA分段错误

如何在C++中声明一个外部cuda函数模板

c ++可变参数模板和模板模板参数:错误:模板参数列表中参数1的类型/值不匹配

CUDA编译实例

使用不同的枚举参数时,VC ++函数模板实例化错误C2664

没有构造函数的实例与参数列表匹配

C ++没有构造函数的实例与参数列表匹配。

没有重载函数的实例与参数列表匹配

cuda内核的配置参数

cuda无效的配置参数

CUDA fmaf函数

映射中的C ++结构作为值-错误“没有重载函数的实例与参数列表匹配”

错误 没有重载函数“getline”的实例与参数列表匹配

错误:没有构造函数“ Faktura :: Faktura”的实例与参数列表匹配

c ++ getline()错误,没有重载函数“ getline”的实例与参数列表匹配

分段错误C ++ Cuda

CUDA未知错误