1、问题描述

  我是编译pcdet的时候,执行命令python setup.py develop,出现了如下这样的问题

gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/opt/python3.7/lib/python3.7/site-packages/torch/include -I/opt/python3.7/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/opt/python3.7/lib/python3.7/site-packages/torch/include/TH -I/opt/python3.7/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda/:/usr/local/cuda-10.1/:/usr/local/cuda-10.1:/usr/local/cuda-10.1::/usr/local/cuda-10.1/include -I/opt/python3.7/include/python3.7m -c pcdet/ops/iou3d_nms/src/iou3d_cpu.cpp -o build/temp.linux-x86_64-3.7/pcdet/ops/iou3d_nms/src/iou3d_cpu.o -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=iou3d_nms_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 pcdet/ops/iou3d_nms/src/iou3d_cpu.cpp:12:18: fatal error: cuda.h: 没有这样的文件或目录 compilation terminated. error: command ‘gcc’ failed with exit status 1

当时没有截图,后来怎么改都不会再出现这个问题了,但我记得不错的话,就是类似上边的这种错误。

2、问题解决

  很多博客给出的都是环境变量设置的解决方法,可我的环境变量明明对了呀,nvcc -V也是正常运行的。但就是一直出现找不到cuda.h的问题,我也曾把/usr/local/cuda/inclde中的cuda.h拷贝过去,发现不现实,需要拷贝的东西很多,放弃了。
  不过你也可以试试修改一下环境变量,也有可能还就是环境变量的问题,不过我建议先执行b步骤,b不行的话再来执行a步骤。

a.修改环境变量

这里我推荐几个参考博客吧,不在赘述了。

def make_cuda_ext(name, module, sources):
    cuda_ext = CUDAExtension(
        name='%s.%s' % (module, name),
        sources=[os.path.join(*module.split('.'), src) for src in sources],
        include_dirs=include_dirs
    )
    return cuda_ext

如下图所示:

如果出现了:/usr/local/cuda/bin/nvcc的问题,那确实需要修改环境变量,可参考这个博客

3、还没能解决问题的话

是否是代码需要修改,这里可以参考W3cschool中关于pytorch的PyTorch torch.utils.cpp_extension的使用,希望能够帮到你,有时候静下心来看一看错误,看一看源码问题可能就解决了。
https://www.w3cschool.cn/pytorch/pytorch-dhfk3bxl.html

致谢博客:
https://blog.csdn.net/qq_39031960/article/details/106211695
https://blog.csdn.net/dongwanli666/article/details/104656679