4

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

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

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

4

1 回答 1

3

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

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

于 2012-08-16T19:53:30.750 回答