装detectron2报错:nvcc fatal : No input files specified; use option --help for more information

装 detectron2[1],开头遇到 ninja 的报错,参考 [2],关掉 ninja。然后又报了 nvcc 的错:

× python setup.py develop did not run successfully.
│ exit code: 1
╰─> [36 lines of output]
    running develop
    running egg_info
    writing detectron2.egg-info/PKG-INFO
    writing dependency_links to detectron2.egg-info/dependency_links.txt
    writing requirements to detectron2.egg-info/requires.txt
    writing top-level names to detectron2.egg-info/top_level.txt
    reading manifest file 'detectron2.egg-info/SOURCES.txt'
    adding license file 'LICENSE'
    writing manifest file 'detectron2.egg-info/SOURCES.txt'
    running build_ext
    building 'detectron2._C' extension
    creating build
    creating build/temp.linux-x86_64-cpython-38
    creating build/temp.linux-x86_64-cpython-38/home
    creating build/temp.linux-x86_64-cpython-38/home/tianyou
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/ROIAlignRotated
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/box_iou_rotated
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/cocoeval
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/deformable
    creating build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/nms_rotated
    gcc -pthread -B /data/tianyou/miniconda3/envs/detectron2/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/TH -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/THC -I/data/tianyou/miniconda3/envs/detectron2/include/python3.8 -c /home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/ROIAlignRotated/ROIAlignRotated_cpu.cpp -o build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/ROIAlignRotated/ROIAlignRotated_cpu.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    /usr/bin/nvcc -DWITH_CUDA -I/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/TH -I/data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/torch/include/THC -I/data/tianyou/miniconda3/envs/detectron2/include/python3.8 -c /home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/ROIAlignRotated/ROIAlignRotated_cuda.cu -o build/temp.linux-x86_64-cpython-38/home/tianyou/codes/data/MvImNet/detectron2/detectron2/layers/csrc/ROIAlignRotated/ROIAlignRotated_cuda.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -O3 -DCUDA_HAS_FP16=1 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
    nvcc fatal   : No input files specified; use option --help for more information
    /data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    /data/tianyou/miniconda3/envs/detectron2/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    error: command '/usr/bin/nvcc' failed with exit code 1
    [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.

官方的 FAQ[3,4]、issues 和博客都没找到解决方案。但在 [3,4] 看到一句测试:

python -c 'import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)'

输出是:

True /usr

/usr 根本就CUDA_HOME 啊喂!看 [5],CUDA_HOME 应该形如 /usr/local/cuda 或者 /usr/local/cuda-11.1 这样怼到具体 cuda 目录的才对。于是初步测试 nvcc 命令:

  • 运行 nvcc -V,报错:
    nvcc fatal   : No input files specified; use option --help for more information
    
  • 运行 nvcc --help报这个错 ↑ \uparrow

有毒吧?看 whereis nvcc

nvcc: /usr/bin/nvcc /etc/nvcc.profile /usr/share/man/man1/nvcc.1.gz

而又在 detectron2/detectron2/utils/collect_env.py 中搜到一句:

nvcc = os.path.join(CUDA_HOME, "bin", "nvcc")

猜测可能是要用 /usr/local/cuda/bin/nvcc 来执行才行,而从上面报错来看,用的是裸的 nvcc 命令,并没有指定 cuda 目录下的 nvcc,再用 /usr/bin/nvcc -V/usr/bin/nvcc --help 可以复现前面的奇怪报错,确定安装的时候用的是 /usr/bin/nvcc

把它改成用 /usr/local/cuda/bin/nvcc 试试:

# 让 shell 先搜到 /usr/local/cuda/nvcc
# 就可以避免使用 /usr/bin/nvcc
PATH=/usr/local/cuda/bin/:$PATH \
$CONDA_BIN/python -m pip install -e detectron2

结果就成功了。

installing script

我安装 detectron2 的脚本:

#!/bin/bash

# facebookresearch/detectron2
#   - https://github.com/facebookresearch/detectron2
# installation
#   - https://detectron2.readthedocs.io/en/latest/tutorials/install.html


CONDA_P=~/miniconda3
ENV=detectron2
if [ ! -d $CONDA_P/envs/$ENV ]; then
    conda create --name $ENV python=3.8 -y
fi
CONDA_BIN=$CONDA_P/envs/$ENV/bin

$CONDA_BIN/pip install torch==1.8.2 torchvision==0.9.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
$CONDA_BIN/pip install opencv-python

# 从 github 下
# git clone https://github.com/facebookresearch/detectron2.git
echo 从 gitee 的公开中转仓下(加速)
git clone https://gitee.com/xoxleoxox/detectron2

# 停用 `ninja` 避坑:改 *detectron2/setup.py*
# ref: https://blog.csdn.net/jiankangyq/article/details/121879936
sed -i "s/BuildExtension\}/BuildExtension\.with_options\(use_ninja\=False\)\}/" detectron2/setup.py

if [ -d detectron2/build ]; then rm -rf detectron2/build/ **/*.so; fi

# BUG: 默认的 `nvcc -> /usr/bin/nvcc` 连 `nvcc -V`、`nvcc --help` 都会报错!
# 换用 */usr/local/cuda/bin/nvcc*
PATH=/usr/local/cuda/bin/:$PATH \
$CONDA_BIN/python -m pip install -e detectron2

if [ -d detectron2/build ]; then rm -rf detectron2/build/; fi

References

  1. facebookresearch/detectron2
  2. 安装detectron2的一些坑
  3. Common Installation Issues
  4. facebookresearch/detectron2/INSTALL.md
  5. 安装detectron2 报错
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值