cuda - 在 CUDA 中,我们如何调用另一个翻译单元中的设备函数?

标签 cuda

我对 CUDA 很陌生。我使用 Microsoft Visual Studio 2010,无需担心编写 makefile。当我试图在 .cu 文件中调用一个在 .h 文件中声明并在另一个 .cu 文件中定义的设备函数时出现了一个问题。在构建结束时,我收到一条错误消息:

1>ptxas : fatal error : Unresolved extern function '_Z22atomicAddEmulateDoublePdd'

这出现在 CUDA 4.2 和 5.0 中。我想知道我应该如何配置我的 MVS 以避免这个错误。对不起,菜鸟的问题,感谢您的任何建议!

最佳答案

CUDA 4.2 不支持静态链接,因此设备功能必须在同一编译单元中定义。一种常用的技术是将设备函数写入 .cuh 文件并将其包含在 .cu 文件中。

CUDA 5.0 支持称为单独编译的新功能。 CUDA 5.0 VS msbuild 规则应该在 CUDA 5.0 RC 下载中可用。

关于cuda - 在 CUDA 中,我们如何调用另一个翻译单元中的设备函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994010/

相关文章:

crash - CUDA程序导致nvidia驱动程序崩溃

cuda - 内核故障: invalid configuration argument

c++ - 类问题中的 CUDA 内存管理/指针

c - Nsight Eclipse 5.5 标识符未定义

c++ - 在 cuda __device__ 函数中分配 (malloc) double**

c++ - 可由设备或主机调用的 CUDA 函数

python - 为什么我的代码(与 CUDA 链接)偶尔会导致 Python 中的段错误?

python - 在 windows 上为 gpu 安装 Theano - 怀疑是 nvcc 版本问题

CUDA合作组: Linking error

python - 使用 CUDA 或 OpenCL 在 python 中进行多维 FFT