我在某些CUDA函数中遇到了一些问题。如何在C++中声明外部cuda函数模板
我想分开.cu
文件与Nvidia示例中的.cu
文件和.cpp
文件。内核是一个函数模板。当我在C++文件中声明它为外部函数时,我收到一个错误。
的定义是这样的:
template <int BLOCK_SIZE> __global__ void
matrixMulCUDA(float *C, float *A, float *B, int wA, int wB)
而且我声明在C函数++这样的:
template <int BLOCK_SIZE> extern void
matrixMulCUDA(float *C, float *A, float *B, int wA, int wB);
声明并没有给我任何错误,但是当它这样使用:
if (block_size == 16)
{
matrixMulCUDA <16> << < grid, threads >> >(d_C, d_A, d_B, dimsA.x, dimsB.x);
}
else
{
matrixMulCUDA <32> << < grid, threads >> >(d_C, d_A, d_B, dimsA.x, dimsB.x);
}
它告诉我“语法错误'<'”。
有人能告诉我应该如何在C++中声明函数吗?请注意,当所有内容都放在.cu
文件中时,它会正常运行。
请解释一下,在你使用'matrixMulCuda'的时候''>'应该是什么意思。 –
'.cu'文件或'.cpp'文件中的“像这样使用”代码? – Angew
@AlgirdasPreidžius它是CUDA内核调用语法(插入一个奇怪的空间)。 – Angew