安装SegmentAnything3D时遇PyTorch CUDA IndexError问题求助
解决SegmentAnything3D安装中
python setup.py install的IndexError问题 我在安装SegmentAnything3D 3D分割项目时,执行python setup.py install命令出现如下错误:
!! self.initialize_options() running bdist_egg running egg_info writing pointops.egg-info/PKG-INFO writing dependency_links to pointops.egg-info/dependency_links.txt writing requirements to pointops.egg-info/requires.txt writing top-level names to pointops.egg-info/top_level.txt reading manifest file 'pointops.egg-info/SOURCES.txt' writing manifest file 'pointops.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py running build_ext /home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/utils/cpp_extension.py:425: UserWarning: There are no g++ version bounds defined for CUDA version 11.8 warnings.warn(f'There are no {compiler_name} version bounds defined for CUDA version {cuda_str_version}') building 'pointops._C' extension /home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/cuda/__init__.py:628: UserWarning: Can't initialize NVML warnings.warn("Can't initialize NVML") Traceback (most recent call last): File "setup.py", line 16, in <module> setup( File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/__init__.py", line 103, in setup return distutils.core.setup(**attrs) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/install.py", line 84, in run self.do_egg_install() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/install.py", line 132, in do_egg_install self.run_command('bdist_egg') File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command self.distribution.run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/bdist_egg.py", line 167, in run cmd = self.call_command('install_lib', warn_dir=0) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/bdist_egg.py", line 153, in call_command self.run_command(cmdname) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command self.distribution.run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/install_lib.py", line 11, in run self.build() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/command/install_lib.py", line 111, in build self.run_command('build_ext') File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command self.distribution.run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 88, in run _build_ext.run(self) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run self.build_extensions() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 871, in build_extensions build_ext.build_extensions(self) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions self._build_extensions_serial() File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial self.build_extension(ext) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 249, in build_extension _build_ext.build_extension(self, ext) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 548, in build_extension objects = self.compiler.compile( File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 675, in unix_wrap_ninja_compile cuda_post_cflags = unix_cuda_flags(cuda_post_cflags) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 574, in unix_cuda_flags cflags + _get_cuda_arch_flags(cflags)) File "/home/makogan/anaconda3/envs/sam3d/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1976, in _get_cuda_arch_flags arch_list[-1] += '+PTX' IndexError: list index out of range
我已尝试重装CUDA并重启电脑,但问题仍未解决,以下是可行的解决方法:
手动指定CUDA架构
该错误是PyTorch的cpp_extension无法自动检测CUDA架构,导致arch_list为空。执行安装命令时手动指定你的GPU对应架构,比如RTX 30系列(安培架构)可执行:TORCH_CUDA_ARCH_LIST="8.0" python setup.py install常见GPU对应架构版本:
- RTX 20系列/Titan V: 7.5
- RTX 30系列/A100: 8.0/8.6
- RTX 40系列: 8.9
- GTX 10系列: 6.1
检查PyTorch与CUDA版本兼容性
确保当前PyTorch版本和CUDA 11.8兼容,运行以下命令查看PyTorch绑定的CUDA版本:import torch print(torch.version.cuda)若版本不匹配,重新安装适配CUDA 11.8的PyTorch:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118修改setup.py强制指定架构
找到项目中的setup.py,在构建扩展部分给CUDAExtension添加架构参数:from torch.utils.cpp_extension import CUDAExtension ext_modules=[ CUDAExtension( 'pointops._C', sources=[...], # 保留原文件中的sources内容 extra_compile_args={ 'cxx': [...], # 保留原文件中的cxx参数 'nvcc': ['-arch=sm_80'] # 替换为你的GPU架构 } ) ]保存后重新执行
python setup.py install修复NVML初始化问题
错误中提示Can't initialize NVML,可能是NVIDIA驱动异常:- 重新安装适配CUDA 11.8的NVIDIA驱动
- 运行
nvidia-smi检查驱动状态,若命令报错优先解决驱动问题
内容的提问来源于stack exchange,提问作者Makogan
相关产品推荐
相关产品推荐

