gpt4 book ai didi

从 C 调用 cuda 函数

转载 作者:行者123 更新时间:2023-12-02 05:45:40 25 4
gpt4 key购买 nike

我有一个包含函数 void A() 的文件 A.cu。我有另一个文件 test_A.c 调用 cuda 函数 A() 并且函数声明为

extern void A();

现在我编译链接如下

nvcc -c -o A.o A.cu 
gcc -o test_A test_A.c A.o /opt/cuda-4.0/cuda/lib64/libcudart.so

然后我得到类似

的错误
undefined reference to `A'

我错过了什么?

最佳答案

问题可能出在 C++ 名称修改上。 CUDA 代码是用 C++ 编译器编译的,而不是 C 编译器。如果转储 A.o 的内容,您应该找到一个名为 _Z1Av 的符号,而不是 C 编译器期望的 A

为了克服这个问题,您可以在 A.cu 文件中使用以下声明:

extern "C" void A(void)
{
.......
}

这将告诉 C++ 编译器在编译代码时使用 C 约定,并将一个适当命名的函数写入 C 编译器和链接器可以理解的目标文件 A.o

关于从 C 调用 cuda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com