在关于C ++集成的CUDA示例中的示例代码之后,我正在编写在.cu
文件中调用CUDA代码的包装函数。
在该文件中,我有一个初始化CUDA上下文并分配全局内存并将一些数据放入常量内存的函数。
extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB)
{
//Allocations
//Copy to constant memory
}
现在我要做的是重载initEngine
函数以接收更多参数,但我认为没有办法重载该函数,因为它具有 C链接我是对吗? / p>
extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB, int *d_coefC,
int *d_random)
{
//Allocations
//Copy to constant memory
}
你能给我一些建议,只有一个initEngine
功能吗?或者是不可能的,我必须有2个函数,或者可能只有一个带有所有参数的函数,只是传递NULL引用或类似的东西。
答案 0 :(得分:2)
是的,重载是一种C ++功能。
如果您想要从其他模块调用重载函数,请始终使用C ++(即不要使用extern "C"
,并将所有文件保存为.cpp或.cu)。
如果您不希望这样做,可以尝试使用macros or some other magic。