从另一个cu文件调用CUDA函数

4

我有两个CUDA文件,称为A和B。 我需要从A调用一个函数到B中,如下所示...

__device__ int add(int a, int b) //this is a function in A
{
   return a+b;
}



__device__ void fun1(int a, int b) //this is a function in B
{
    int c = A.add(a,b);
}

我该怎么做?

我可以使用static关键字吗?请给我一个例子。

2个回答

4
简短回答是不行。CUDA仅支持内部链接,因此编译内核所需的所有内容都必须在同一个翻译单元中定义。
你可以将函数放入头文件中,像这样:
// Both functions in func.cuh
#pragma once
__device__ inline int add(int a, int b) 
{
   return a+b;
}

__device__ inline void fun1(int a, int b)
{
    int c = add(a,b);
}

需要将该头文件包含到每个需要使用函数的.cu文件中。CUDA构建链似乎支持inline关键字,这种声明不会在我使用的任何CUDA平台上生成重复符号(不包括Windows)。我不确定它是否打算起作用,所以请注意。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接