gpt4 book ai didi

c++ - 链接时突然收到 maxrregcount 警告和 undefined reference 错误

转载 作者:行者123 更新时间:2023-11-28 04:39:23 25 4
gpt4 key购买 nike

我维护 C+=-flavored CUDA API wrappers图书馆。该库的当前提交经过了相对良好的测试,有一些示例程序和相当多的用户。然而,最近的某个时候(不能确切地说是什么时候),并且没有提交任何新的东西,我现在在我的示例程序的“dlink”阶段收到 NVCC 警告,例如:

/path/to/nvcc /path/to/cuda-api-wrappers/examples/modified_cuda_samples/vectorAdd/vectorAdd.cu -dc -o /path/to/cuda-api-wrappers/CMakeFiles/vectorAdd.dir/examples/modified_cuda_samples/vectorAdd/./vectorAdd_generated_vectorAdd.cu.o -ccbin /opt/gcc-5.4.0/bin/gcc -m64 -gencode arch=compute_52,code=compute_52 --std=c++11 -Xcompiler -Wall -O3 -DNDEBUG -DNVCC -I/path/to/cuda/include -I/path/to/cuda-api-wrappers/src
/path/to/nvcc -gencode arch=compute_52,code=compute_52 --std=c++11 -Xcompiler -Wall -O3 -DNDEBUG -m64 -ccbin /opt/gcc-5.4.0/bin/gcc -dlink /export/path/to/cuda-api-wrappers/CMakeFiles/vectorAdd.dir/examples/modified_cuda_samples/vectorAdd/./vectorAdd_generated_vectorAdd.cu.o /path/to/cuda/lib64/libcublas_device.a -o /export/path/to/cuda-api-wrappers/CMakeFiles/vectorAdd.dir/./vectorAdd_intermediate_link.o
@O@ptxas info : 'device-function-maxrregcount' is a BETA feature
@O@ptxas info : 'device-function-maxrregcount' is a BETA feature
@O@ptxas info : 'device-function-maxrregcount' is a BETA feature
... this repeats many times ...

但 dlink 的脸确实得出结论。这已经很奇怪了,因为我没有明确使用任何测试版功能。

/opt/gcc-5.4.0/bin/g++   -Wall -Wpedantic -O2 -DNDEBUG  -L/path/to/cuda/lib64 -rdynamic CMakeFiles/vectorAdd.dir/examples/modified_cuda_samples/vectorAdd/vectorAdd_generated_vectorAdd.cu.o CMakeFiles/vectorAdd.dir/vectorAdd_intermediate_link.o  -o examples/bin/vectorAdd lib/libcuda-api-wrappers.a -Wl,-Bstatic -lcudart_static -Wl,-Bdynamic -lpthread -ldl -lrt -lnvToolsExt -Wl,-Bstatic -lcudadevrt -Wl,-Bdynamic 
CMakeFiles/vectorAdd.dir/vectorAdd_intermediate_link.o: In function `__cudaRegisterLinkedBinary_25_cublas_compute_70_cpp1_ii_f0559976':
link.stub:(.text+0xe0): undefined reference to `__fatbinwrap_25_cublas_compute_70_cpp1_ii_f0559976'
CMakeFiles/vectorAdd.dir/vectorAdd_intermediate_link.o: In function `__cudaRegisterLinkedBinary_25_xerbla_compute_70_cpp1_ii_cd7f3ad3':
link.stub:(.text+0x190): undefined reference to `__fatbinwrap_25_xerbla_compute_70_cpp1_ii_cd7f3ad3'
CMakeFiles/vectorAdd.dir/vectorAdd_intermediate_link.o: In function `__cudaRegisterLinkedBinary_23_nrm2_compute_70_cpp1_ii_8edbce95':
link.stub:(.text+0x240): undefined reference to `__fatbinwrap_23_nrm2_compute_70_cpp1_ii_8edbce95'
... more udnefined reference errors here ...

我的问题:为什么会发生这种情况,我该如何规避/避免/解决它?

注意事项:

  • 我正在使用可分离编译
  • 我在使用 CUDA 9.1 和 SM 5.2 设备(没有 7.0)时遇到这些特定错误。
  • CMakeLists.txthere .
  • 我显然在构建之前清除了 CMakeCache.txt
  • 我在 GNU/Linux Mint 18.3 和 Fedora 26 上都遇到过这种情况。在第一台机器上已经完成了一些 apt-get dist-upgrade,现在 GCC 已经升级到 5.5.0 版,以防万一事项。在第二台机器上——据我所知,确实没有任何变化;相同的编译器和 CUDA 版本。

最佳答案

部分答案/解决方法:

此问题似乎仅在 libcublas 时出现参与。如果我从 -dlink 阶段命令行中删除 /path/to/cuda/lib64/libcublas_device.a ,所有警告和错误都会消失(包括后期阶段) .事实上,我的包装器库没有注意到 cublas,不确定为什么 CMake 要添加它;它不在 $CUDA_LIBRARIES 中。另见:

Why does CMake force the use of libcublas with separable compilation?

关于c++ - 链接时突然收到 maxrregcount 警告和 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50581280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com