3

按照关于 C++ 集成的 CUDA 示例中的示例代码,我正在编写在文件中调用 CUDA 代码的包装函数.cu

在该文件中,我有一个初始化 CUDA 上下文并分配全局内存并将一些数据放入常量内存的函数。

extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB)
{
   //Allocations
   //Copy to constant memory
}

现在我想做的是重载该initEngine函数以接收更多参数,但我认为没有办法重载该函数,因为它具有C 链接,对吗?

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 引用或类似的东西。

4

1 回答 1

3

是的,重载是一个 C++ 特性。

如果您想拥有可从其他模块调用的重载函数,请始终使用 C++(即不要使用extern "C",并将所有文件保存为 .cpp 或 .cu)。

如果您不想这样做,您可以尝试使用宏或其他一些魔法

于 2013-08-22T12:44:44.267 回答