我对 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/