Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接CUDA代码时出错:`\uu cudaRegisterLinkedBinary的多个定义__C++_Cuda_Static Linking_Fat Binaries - Fatal编程技术网

C++ 链接CUDA代码时出错:`\uu cudaRegisterLinkedBinary的多个定义_

C++ 链接CUDA代码时出错:`\uu cudaRegisterLinkedBinary的多个定义_,c++,cuda,static-linking,fat-binaries,C++,Cuda,Static Linking,Fat Binaries,我有一些正在编译到.a库中的CUDA代码,还有一些(与CUDA相关的)用于使用它的应用程序的常规C++代码。一切都在进行中间链接 现在,在一台机器上(使用CUDA 8.0 RC)构建成功,但在另一台机器上(使用Maxwell而不是开普勒卡,以防万一)我得到: 实际上,我开始从编译成调用库代码的二进制文件中删除文件——只有删除所有文件,链接才会成功 我的问题是: 在什么情况下可能发生这种不一致的行为 这可能是库和二进制文件“第二次链接”的结果吗 我可以做些什么来准确确定实际冲突的内容(例如,要查

我有一些正在编译到.a库中的CUDA代码,还有一些(与CUDA相关的)用于使用它的应用程序的常规C++代码。一切都在进行中间链接

现在,在一台机器上(使用CUDA 8.0 RC)构建成功,但在另一台机器上(使用Maxwell而不是开普勒卡,以防万一)我得到:

实际上,我开始从编译成调用库代码的二进制文件中删除文件——只有删除所有文件,链接才会成功

我的问题是:

  • 在什么情况下可能发生这种不一致的行为
  • 这可能是库和二进制文件“第二次链接”的结果吗
  • 我可以做些什么来准确确定实际冲突的内容(例如,要查找哪些符号)
  • 如果事实上没有冲突,我应该怎么做来避免这种情况
注意事项:

  • 在一台机器上我用的是CUDA7.5,在另一台机器上我用的是CUDA8.0RC
  • 在什么情况下可能发生这种不一致的行为
如果您在单个应用程序中尝试多个设备链接

  • 这可能是库和二进制文件“第二次链接”的结果吗
几乎毫无疑问

  • 我可以做些什么来准确确定实际冲突的内容(例如,要查找哪些符号)
冲突是运行时在设备链接阶段生成的样板文件的多个定义,用于通过运行时API将设备代码加载到上下文中

  • 如果事实上没有冲突,我应该怎么做来避免这种情况

冲突是真实的。避免涉及正确链接单独遵守的设备代码。除此之外,我无法确切地告诉您如何修复它,因为您选择不告诉我们您到底在做什么。

您可以使用
c++filt
之类的工具来要求名称。@JesperJuhl:由于损坏,该标识符并不神秘。您所说的很好地缩小了搜索空间以获得MCVE,我很快就会尝试这么做。几乎我做的每件事都把我置于“未定义的引用到..fatbin…”的领域。最后,我刚刚关闭了CUDA的CMake单独编译选项,奇怪的是,它现在以某种方式工作了(尽管我不清楚到底是谁在做设备链接。无论如何,既然这有效地解决了我的问题,我接受了。
/tmp/tmpxft_00001796_00000000-2_ktkernels_intermediate_link.reg.c:25: multiple definition of `__cudaRegisterLinkedBinary_66_tmpxft_00007a5f_00000000_16_cuda_device_runtime_compute_52_cpp1_ii_8b1a5d37'
CMakeFiles/tester.dir/tester_intermediate_link.o:/tmp/tmpxft_0000180b_00000000-2_tester_intermediate_link.reg.c:4: first defined here
collect2: error: ld returned 1 exit status
CMakeFiles/tester.dir/build.make:1766: recipe for target 'bin/tester' failed
make[2]: *** [bin/tester] Error 1