Linux更新后编译C++/Cuda代码的问题



我们有一个内部C++代码,部分使用CUDA。CUDA代码分布在文件"之间;cudakernel.hpp";以及";cudakernel.cu";。一切都很好,代码是在我的本地机器和集群上编译的。

现在,我不得不将我的Linux从顽皮更新为jammy,这是我在周五完成的。当我今天试图编译上述项目时,我收到了以下错误消息:

Making all in dergeraet
make[1]: Entering directory '/home/paul/Projekte/DerGeraet/dergeraet'
make  all-am
make[2]: Entering directory '/home/paul/Projekte/DerGeraet/dergeraet'
CXX      poisson.o
make[2]: *** No rule to make target '/usr/include/c++/10/new', needed by 'cuda_kernel.o'.  Stop.
make[2]: Leaving directory '/home/paul/Projekte/DerGeraet/dergeraet'
make[1]: *** [makefile:306: all] Error 2
make[1]: Leaving directory '/home/paul/Projekte/DerGeraet/dergeraet'
make: *** [Makefile:374: all-recursive] Error 1

所以我检查了是否安装了nvcc。nvcc --version没有返回任何信息,所以我按照https://developer.nvidia.com/cuda-downloads安装cuda,然后运行CCD_ 2。现在调用nvcc --versionLinux时返回

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

好吧,我想,让我们再次编译,但错误消息仍然保持不变。

我检查了"/usr/include/c++/10/new",只有"/usr/include/c++/11/new",即没有"/usr/include+c++/10"文件夹。

我真的没有线索了。尝试使用不同的版本号(11.6和11.7(重新安装cuda两次,但错误仍然存在。这是gcc和nvcc之间的一些奇怪的不兼容问题吗?

其他内部代码(没有CUDA(编译得很好,所以我认为这一定是一个与CUDA相关的问题。

感谢您提前提供的帮助!

此错误是由主机g++安装不完整引起的。在本例中,libstdc++-10开发包丢失或安装不正确。

最新更新