来自另一cu文件的CUDA函数调用
我有两个cuda文件,分别是A和B。 我需要调用从a到B的函数,比如来自另一cu文件的CUDA函数调用,cuda,Cuda,我有两个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); } 我该怎么做 我可以使用静态关键字吗?请给我举个例子。简单的回答是你不能。CUDA只支持内
__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);
}
我该怎么做
我可以使用静态关键字吗?请给我举个例子。简单的回答是你不能。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)上生成重复符号。我不确定它是否有效,因此cavaet emptor。我认为同时有可能解决它:
您可以在VS Project Properties->CUDA C/C++->Common或use编译器参数-rdc=true中启用“生成可重新定位的设备代码”