在CUDA中,我们如何在另一个翻译单元中调用设备功能?

时间:2012-08-16 19:19:09

标签: cuda

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

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

这在CUDA 4.2和5.0中都有出现。我想知道如何配置我的MVS以避免此错误。对于nooby问题感到抱歉,感谢任何建议!

1 个答案:

答案 0 :(得分:3)

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

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