Skip to content

一些环境创建问题以及解决方法 #27

Description

@fcyi

只能用pip安装,因为其中还涉及到conda提供的cuda和cudnn的安装

pip 和 setuptools 版本

由于CLIP所以来的包版本都比较老,所以采用高版本pip会出问题,建议采用23.3.2版本,setuptools版本可能也需要使用低版本,例如65.5.0

Collecting git+https://github.com/openai/CLIP.git@dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1
  Cloning https://github.com/openai/CLIP.git (to revision dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1) to /tmp/pip-req-build-a_qohohr
  Running command git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git /tmp/pip-req-build-a_qohohr
  Running command git rev-parse -q --verify 'sha^dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1'
  Running command git fetch -q https://github.com/openai/CLIP.git dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1
  Running command git checkout -q dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1
  Resolved https://github.com/openai/CLIP.git to commit dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [17 lines of output]
      Traceback (most recent call last):
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
          main()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
          json_out["return_val"] = hook(**hook_input["kwargs"])
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-laeiczm4/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 333, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
        File "/tmp/pip-build-env-laeiczm4/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-laeiczm4/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 520, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-laeiczm4/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
        File "<string>", line 3, in <module>
      ModuleNotFoundError: No module named 'pkg_resources'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed to build 'git+https://github.com/openai/CLIP.git@dcba3cb2e2827b402d2701e7e1c7d9fed8a20ef1' when getting requirements to build wheel
pip install setuptools==65.5.0
pip install pip==23.3.2

子模块拉取,直接git clone下来的项目不带子模块,必须要去其所指向的项目中拉取

若不拉取,则执行下面的安装指令都会出错

pip install submodules/diff-gaussian-rasterization-depth
pip install submodules/simple-knn
pip install submodules/fused-ssim

一种方式就是找到对应的项目,逐个进行git clone
另一种方式,可以采用下面的命令去拉取所有子模块

git submodule update --init --recursive

numpy、torch 和 cuda

考虑到cuda版本为12.8,所以必须选择与之匹配的torch版本,可以采用2.2.2
torch版本与cuda不兼容时,在安装diff-gaussian-rasterization-depth会出错

Processing ./submodules/diff-gaussian-rasterization-depth
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [17 lines of output]
      Traceback (most recent call last):
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
          main()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
          json_out["return_val"] = hook(**hook_input["kwargs"])
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-_0wn3dzm/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 333, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
        File "/tmp/pip-build-env-_0wn3dzm/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-_0wn3dzm/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 520, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-_0wn3dzm/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
        File "<string>", line 13, in <module>
      ModuleNotFoundError: No module named 'torch'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed to build 'file:///home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth' when getting requirements to build wheel

或者在执行torch.__version__出现下面信息:

2.13.0+cu130
执行print(torch.cuda.is_available()),出现/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/cuda/__init__.py:188: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /__w/pytorch/pytorch/c10/cuda/CUDAFunctions.cpp:119.)
  return torch._C._cuda_getDeviceCount() > 0
False
pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121

torch的使用离不开numpy,若numpy版本不兼容,会出现下面的信息(例如torch版本为2.2.2,numpy>=2),则在import torch时会出现下面的信息

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.2.6 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.

If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.

Traceback (most recent call last):  File "<stdin>", line 1, in <module>
  File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/__init__.py", line 1477, in <module>
    from .functional import *  # noqa: F403
  File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/functional.py", line 9, in <module>
    import torch.nn.functional as F
  File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/nn/__init__.py", line 1, in <module>
    from .modules import *  # noqa: F403
  File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/nn/modules/__init__.py", line 35, in <module>
    from .transformer import TransformerEncoder, TransformerDecoder, \
  File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/nn/modules/transformer.py", line 20, in <module>
    device: torch.device = torch.device(torch._C._get_default_device()),  # torch.device('cpu'),
/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/nn/modules/transformer.py:20: UserWarning: Failed to initialize NumPy: _ARRAY_API not found (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)
  device: torch.device = torch.device(torch._C._get_default_device()),  # torch.device('cpu'),
pip install "numpy<2"

glm编译问题

拉取子模块后,并且确保glm.hpp存在的情况下,执行

pip install --no-cache-dir submodules/diff-gaussian-rasterization-depth

会出现下面的错误信息:

Processing ./submodules/diff-gaussian-rasterization-depth
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: diff_gauss
  Building wheel for diff_gauss (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [448 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-310/diff_gauss
      copying diff_gauss/__init__.py -> build/lib.linux-x86_64-cpython-310/diff_gauss
      running build_ext
      /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py:415: UserWarning: The detected CUDA version (12.8) has a minor version mismatch with the version that was used to compile PyTorch (12.1). Most likely this shouldn't be a problem.
        warnings.warn(CUDA_MISMATCH_WARN.format(cuda_str_version, torch.version.cuda))
      /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py:425: UserWarning: There are no /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-c++ version bounds defined for CUDA version 12.8
        warnings.warn(f'There are no {compiler_name} version bounds defined for CUDA version {cuda_str_version}')
      building 'diff_gauss._C' extension
      creating /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer
      Emitting ninja build file /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/build.ninja...
      Compiling objects...
      Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
      [1/5] /home/lenovo/miniconda3/envs/skyfall-gs/bin/nvcc --generate-dependencies-with-compile --dependency-output /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/rasterizer_impl.o.d -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.cu -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/rasterizer_impl.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'"'"'' -I/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/ -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_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 -ccbin /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-cc -std=c++17
      FAILED: [code=2] /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/rasterizer_impl.o
      /home/lenovo/miniconda3/envs/skyfall-gs/bin/nvcc --generate-dependencies-with-compile --dependency-output /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/rasterizer_impl.o.d -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.cu -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/rasterizer_impl.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'"'"'' -I/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/ -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_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 -ccbin /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-cc -std=c++17
      nvcc warning : incompatible redefinition for option 'compiler-bindir', the last value of this option was used
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(24): error: namespace "std" has no member "uintptr_t"
            std::size_t offset = (reinterpret_cast<std::uintptr_t>(chunk) + alignment - 1) & ~(alignment - 1);
                                                        ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(40): error: identifier "uint32_t" is undefined
            uint32_t* point_offsets;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(41): error: identifier "uint32_t" is undefined
            uint32_t* tiles_touched;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(49): error: identifier "uint32_t" is undefined
            uint32_t* n_contrib;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(57): error: identifier "uint64_t" is undefined
            uint64_t* point_list_keys_unsorted;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(58): error: identifier "uint64_t" is undefined
            uint64_t* point_list_keys;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(59): error: identifier "uint32_t" is undefined
            uint32_t* point_list_unsorted;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h(60): error: identifier "uint32_t" is undefined
            uint32_t* point_list;
            ^
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.cu(175): warning #549-D: variable "img" is used before its value is set
          obtain(chunk, img.n_contrib, N, 128);
                        ^
      
      Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.cu(184): warning #549-D: variable "binning" is used before its value is set
          obtain(chunk, binning.point_list, P, 128);
                        ^
      
      8 errors detected in the compilation of "/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.cu".
      [2/5] /home/lenovo/miniconda3/envs/skyfall-gs/bin/nvcc --generate-dependencies-with-compile --dependency-output /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/forward.o.d -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/forward.cu -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/forward.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'"'"'' -I/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/ -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_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 -ccbin /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-cc -std=c++17
      nvcc warning : incompatible redefinition for option 'compiler-bindir', the last value of this option was used
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/auxiliary.h(152): warning #177-D: variable "p_proj" was declared but never referenced
          float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };
                 ^
      
      Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/glm/./ext/../detail/_vectorize.hpp(89): warning #20011-D: calling a __host__ function("glm::TMax<float> ::operator ()(const float &, const float &)") from a __host__ __device__ function("glm::detail::functor2< ::glm::vec, (int)3, float, ( ::glm::qualifier)0> ::call< ::glm::TMax<float> > ") is not allowed
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/glm/./ext/../detail/_vectorize.hpp(89): warning #20011-D: calling a __host__ function("glm::TMax<float> ::operator ()(const float &, const float &)") from a __host__ __device__ function("glm::detail::functor2< ::glm::vec, (int)3, float, ( ::glm::qualifier)0> ::call< ::glm::TMax<float> > ") is not allowed
      
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/glm/./ext/../detail/_vectorize.hpp(89): warning #20011-D: calling a __host__ function("glm::TMax<float> ::operator ()(const float &, const float &)") from a __host__ __device__ function("glm::detail::functor2< ::glm::vec, (int)3, float, ( ::glm::qualifier)0> ::call< ::glm::TMax<float> > ") is not allowed
      
      [3/5] /home/lenovo/miniconda3/envs/skyfall-gs/bin/nvcc --generate-dependencies-with-compile --dependency-output /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/backward.o.d -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/backward.cu -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/cuda_rasterizer/backward.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'"'"'' -I/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/ -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_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 -ccbin /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-cc -std=c++17
      nvcc warning : incompatible redefinition for option 'compiler-bindir', the last value of this option was used
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/auxiliary.h(152): warning #177-D: variable "p_proj" was declared but never referenced
          float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };
                 ^
      
      Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
      
      [4/5] /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-c++ -MMD -MF /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/ext.o.d -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -fPIC -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/ext.cpp -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/ext.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++17
      [5/5] /home/lenovo/miniconda3/envs/skyfall-gs/bin/nvcc --generate-dependencies-with-compile --dependency-output /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/rasterize_points.o.d -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/TH -I/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/THC -I/home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/build/temp.linux-x86_64-cpython-310/rasterize_points.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'"'"'' -I/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/third_party/glm/ -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_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 -ccbin /home/lenovo/miniconda3/envs/skyfall-gs/bin/x86_64-conda-linux-gnu-cc -std=c++17
      nvcc warning : incompatible redefinition for option 'compiler-bindir', the last value of this option was used
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu: In function 'std::tuple<int, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor> RasterizeGaussiansCUDA(const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, float, const at::Tensor&, const at::Tensor&, const at::Tensor&, int, const at::Tensor&, const at::Tensor&, float, float, float, int, int, const at::Tensor&, int, const at::Tensor&, bool, bool)':
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu:102:136: warning: 'T* at::Tensor::data() const [with T = float]' is deprecated: Tensor.data<T>() is deprecated. Please use Tensor.data_ptr<T>() instead. [-Wdeprecated-declarations]
        102 |     rendered = CudaRasterizer::Rasterizer::forward(
            |                                                                                                                                        ^
      /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/ATen/core/TensorBody.h:247:1: note: declared here
        247 |   T * data() const {
            | ^ ~~                                                                                                                                                                                                                                                 ...                                                                                                                               
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu: In function 'std::tuple<at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor, at::Tensor> RasterizeGaussiansBackwardCUDA(const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, float, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, float, float, float, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, const at::Tensor&, int, const at::Tensor&, const at::Tensor&, int, const at::Tensor&, const at::Tensor&, const at::Tensor&, bool)':
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu:199:97: warning: 'T* at::Tensor::data() const [with T = float]' is deprecated: Tensor.data<T>() is deprecated. Please use Tensor.data_ptr<T>() instead. [-Wdeprecated-declarations]
        199 |     CudaRasterizer::Rasterizer::backward(P, degree, M, R, F,
            |                                                          ~~~                                    ^
      /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/ATen/core/TensorBody.h:247:1: note: declared here
        247 |   T * data() const {
            | ^ ~~
...
      /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/include/ATen/core/TensorBody.h:247:1: note: declared here
        247 |   T * data() const {
            | ^ ~~
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu: In function 'at::Tensor markVisible(at::Tensor&, at::Tensor&, at::Tensor&)':
      /home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/rasterize_points.cu:256:80: warning: 'T* at::Tensor::data() const [with T = float]' is deprecated: Tensor.data<T>() is deprecated. Please use Tensor.data_ptr<T>() instead. [-Wdeprecated-declarations]
        256 |     CudaRasterizer::Rasterizer::markVisible(P,
            |                                            ~~~                                 ^
...
      ninja: build stopped: subcommand failed.
      Traceback (most recent call last):
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 2096, in _run_ninja_build
          subprocess.run(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/subprocess.py", line 526, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 2.
      
      The above exception was the direct cause of the following exception:
      
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/home/lenovo/hqd/workspace/Skyfall-GS/submodules/diff-gaussian-rasterization-depth/setup.py", line 17, in <module>
          setup(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1001, in run_commands
          self.run_command(cmd)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/command/bdist_wheel.py", line 370, in run
          self.run_command("build")
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 135, in run
          self.run_command(cmd_name)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 97, in run
          _build_ext.run(self)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 367, in run
          self.build_extensions()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 871, in build_extensions
          build_ext.build_extensions(self)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 483, in build_extensions
          self._build_extensions_serial()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 509, in _build_extensions_serial
          self.build_extension(ext)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 262, in build_extension
          _build_ext.build_extension(self, ext)
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 564, in build_extension
          objects = self.compiler.compile(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 684, in unix_wrap_ninja_compile
          _write_ninja_file_and_compile_objects(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1774, in _write_ninja_file_and_compile_objects
          _run_ninja_build(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 2112, in _run_ninja_build
          raise RuntimeError(message) from e
      RuntimeError: Error compiling objects for extension
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for diff_gauss
  Running setup.py clean for diff_gauss
Failed to build diff_gauss
ERROR: Could not build wheels for diff_gauss, which is required to install pyproject.toml-based projects

大模型回答如下:
现在遇到了新的编译错误:rasterizer_impl.h 中使用了 std::uintptr_tuint32_t 等类型,但没有包含对应的头文件 <cstdint>。这导致 CUDA 编译器找不到这些类型定义。

解决方案
修改源码,添加头文件包含
这是最直接有效的方法。请编辑文件:

submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h

在文件最顶部(在所有其他 include 之前)添加一行:

#include <cstdint>

例如,文件开头可能原本是:

#pragma once
#include <glm/glm.hpp>
...

修改后:

#include <cstdint>
#pragma once
#include <glm/glm.hpp>
...

保存文件后,重新执行安装:

pip install submodules/diff-gaussian-rasterization-depth

如果仍然报错,可以尝试清理缓存后重试:

pip install --no-cache-dir submodules/diff-gaussian-rasterization-depth

补充说明

  • 为什么会出现这个问题?
    这是因为 CUDA 代码依赖了标准整数类型,但在 C++ 标准中,这些类型定义在 <cstdint><stdint.h> 中,而原作者可能依赖于某些编译器的隐式包含(例如 NVIDIA 的 nvcc 在某些版本中会自动包含),但在当前环境下并未自动包含,所以需要显式声明。

  • 如果编辑后仍有其他错误
    可能还有其他类似的缺少头文件的问题(例如 <cstring><algorithm> 等),但最核心的 uint32_t 问题解决后,后续编译应该能通过。如果遇到其他 undefined 错误,可以参考类似方式添加对应的标准头文件。

  • 备选方案
    也可以尝试在编译命令中添加 -include stdint.h 等参数,但修改源码更简单可靠。

请尝试修改后再次编译,如果成功,则说明问题解决。如果还有其他报错,请将新的错误信息贴出来,我会继续协助。

torch的xpu编译问题

安装fused-ssim,出现下面的问题:

Processing ./submodules/fused-ssim
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: torch>=2.0.0 in /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages (from fused-ssim==1.0.0) (2.2.2+cu121)
...
Building wheels for collected packages: fused-ssim
  Building wheel for fused-ssim (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for fused-ssim (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [116 lines of output]
      /tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/_subclasses/functional_tensor.py:368: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /__w/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:84.)
        cpu = _conversion_method_template(device=torch.device("cpu"))
      /tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/cuda/__init__.py:188: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /__w/pytorch/pytorch/c10/cuda/CUDAFunctions.cpp:119.)
        return torch._C._cuda_getDeviceCount() > 0
      W0710 18:59:44.951000 178009 torch/utils/cpp_extension.py:178] No CUDA runtime is found, using CUDA_HOME='/home/lenovo/miniconda3/envs/skyfall-gs'
      Compiling for XPU.
      Detected Intel XPU (SYCL)
      Compiling for XPU.
      Detected Intel XPU (SYCL)
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-310/fused_ssim
      copying fused_ssim/__init__.py -> build/lib.linux-x86_64-cpython-310/fused_ssim
      running egg_info
      writing fused_ssim.egg-info/PKG-INFO
      writing dependency_links to fused_ssim.egg-info/dependency_links.txt
      writing requirements to fused_ssim.egg-info/requires.txt
      writing top-level names to fused_ssim.egg-info/top_level.txt
      reading manifest file 'fused_ssim.egg-info/SOURCES.txt'
      adding license file 'LICENSE'
      writing manifest file 'fused_ssim.egg-info/SOURCES.txt'
      running build_ext
      W0710 18:59:44.980000 178009 torch/utils/cpp_extension.py:590]                                !! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Your compiler (icpx) is not compatible with the compiler Pytorch wasbuilt with for this platform, which is g++ on linux. Pleaseuse g++ to compile your extension. Alternatively, you maycompile PyTorch from source using icpx, and then you can also useicpx to compile your extension.See https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md for helpwith compiling PyTorch from source.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                              !! WARNING !!
      
      ==================================================
      Building with GPU architecture: Intel XPU (SYCL)
      ==================================================
      
      building 'fused_ssim_xpu' extension
      creating /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310
      W0710 18:59:44.982000 178009 torch/utils/cpp_extension.py:590]                                !! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Your compiler (icpx) is not compatible with the compiler Pytorch wasbuilt with for this platform, which is g++ on linux. Pleaseuse g++ to compile your extension. Alternatively, you maycompile PyTorch from source using icpx, and then you can also useicpx to compile your extension.See https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md for helpwith compiling PyTorch from source.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                              !! WARNING !!
      [1/2] icpx -MMD -MF /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310/ext.o.d -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -fPIC -I/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/include -I/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/ext.cpp -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310/ext.o -O3 -std=c++17 -fsycl -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=fused_ssim_xpu
      FAILED: [code=127] /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310/ext.o
      icpx -MMD -MF /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310/ext.o.d -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/lenovo/miniconda3/envs/skyfall-gs/include -I/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/include -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib -L/home/lenovo/miniconda3/envs/skyfall-gs/targets/x86_64-linux/lib/stubs -fPIC -I/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/include -I/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -I/home/lenovo/miniconda3/envs/skyfall-gs/include/python3.10 -c -c /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/ext.cpp -o /home/lenovo/hqd/workspace/Skyfall-GS/submodules/fused-ssim/build/temp.linux-x86_64-cpython-310/ext.o -O3 -std=c++17 -fsycl -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=fused_ssim_xpu
      /bin/sh: 1: icpx: not found
      ...
      ninja: build stopped: subcommand failed.
      Traceback (most recent call last):
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 2893, in _run_ninja_build
          subprocess.run(
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/subprocess.py", line 526, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 127.
      
      The above exception was the direct cause of the following exception:
      
      Traceback (most recent call last):
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 441, in build_wheel
          return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 429, in _build
          return self._build_with_temp_dir(
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 410, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
        File "<string>", line 102, in <module>
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1001, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/command/bdist_wheel.py", line 370, in run
          self.run_command("build")
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 135, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 97, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 367, in run
          self.build_extensions()
        File "<string>", line 100, in build_extensions
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1289, in build_extensions
          super().build_extensions()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 483, in build_extensions
          self._build_extensions_serial()
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 509, in _build_extensions_serial
          self.build_extension(ext)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 262, in build_extension
          _build_ext.build_extension(self, ext)
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 564, in build_extension
          objects = self.compiler.compile(
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 1027, in unix_wrap_ninja_compile
          _write_ninja_file_and_compile_objects(
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 2475, in _write_ninja_file_and_compile_objects
          _run_ninja_build(
        File "/tmp/pip-build-env-oa9kbx4l/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 2910, in _run_ninja_build
          raise RuntimeError(message) from e
      RuntimeError: Error compiling objects for extension
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for fused-ssim
Failed to build fused-ssim

错误信息显示 fused-ssim 在编译时错误地尝试使用 Intel XPU (SYCL) 后端,调用了 icpx 编译器,但您的系统上并未安装 Intel oneAPI 工具链,也没有 icpx 命令。这导致编译失败。

根本原因
fused-ssimsetup.py 中检测到了某种条件(可能是环境变量或 torch.xpu.is_available() 返回 True),从而选择了 XPU 分支,而非您期望的 CUDA 分支。您的环境是 NVIDIA GPU,应该使用 CUDA 版本。

解决方案

1. 检查环境变量(快速排查)
运行以下命令,查看是否有 Intel 相关的环境变量被设置:

env | grep -i sycl
env | grep -i oneapi

如果存在,可以暂时取消它们(例如 unset SYCL_ROOT 等),然后重试安装。

2. 强制禁用 XPU 检测(推荐)
编辑 submodules/fused-ssim/setup.py,找到检测 XPU 的部分(通常类似 if torch.xpu.is_available():),将其修改为 if False: 或直接删除/注释掉该分支,强制使用 CUDA 路径。

具体操作

  1. 打开 submodules/fused-ssim/setup.py
  2. 搜索关键字 xpusyclicpx
  3. 找到类似这样的结构:
if torch.xpu.is_available():
# XPU/SYCL 编译选项
...
else:
# CUDA 或 CPU 编译选项
...
  1. if torch.xpu.is_available(): 改为 if False:,或者直接交换两个分支。
  2. 保存文件,重新执行:
pip install submodules/fused-ssim

torch卸载不干净引发的错误

注释掉setup.py中使用xpu编译的部分后,执行pip install submodules/fused-ssim,出现下面的问题:

Processing ./submodules/fused-ssim
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: torch>=2.0.0 in /home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages (from fused-ssim==1.0.0) (2.2.2+cu121)
...
Building wheels for collected packages: fused-ssim
  Building wheel for fused-ssim (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for fused-ssim (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [81 lines of output]
      /tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/torch/_subclasses/functional_tensor.py:368: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /__w/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:84.)
        cpu = _conversion_method_template(device=torch.device("cpu"))
      /tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/torch/cuda/__init__.py:188: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /__w/pytorch/pytorch/c10/cuda/CUDAFunctions.cpp:119.)
        return torch._C._cuda_getDeviceCount() > 0
      W0710 19:03:41.637000 179332 torch/utils/cpp_extension.py:178] No CUDA runtime is found, using CUDA_HOME='/home/lenovo/miniconda3/envs/skyfall-gs'
      Compiling for CUDA.
      Failed to detect GPU architecture: The NVIDIA driver on your system is too old (found version 12080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.. Falling back to multiple architectures.
      Compiling for CUDA.
      Failed to detect GPU architecture: The NVIDIA driver on your system is too old (found version 12080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.. Falling back to multiple architectures.
      running bdist_wheel
      running build
      running build_py
      copying fused_ssim/__init__.py -> build/lib.linux-x86_64-cpython-310/fused_ssim
      running egg_info
      writing fused_ssim.egg-info/PKG-INFO
      writing dependency_links to fused_ssim.egg-info/dependency_links.txt
      writing requirements to fused_ssim.egg-info/requires.txt
      writing top-level names to fused_ssim.egg-info/top_level.txt
      reading manifest file 'fused_ssim.egg-info/SOURCES.txt'
      adding license file 'LICENSE'
      writing manifest file 'fused_ssim.egg-info/SOURCES.txt'
      running build_ext
      
      ==================================================
      Building with GPU architecture: multiple architectures
      ==================================================
      
      Traceback (most recent call last):
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/lenovo/miniconda3/envs/skyfall-gs/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 441, in build_wheel
          return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 429, in _build
          return self._build_with_temp_dir(
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 410, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
        File "<string>", line 102, in <module>
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1001, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/command/bdist_wheel.py", line 370, in run
          self.run_command("build")
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 135, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 341, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 97, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 367, in run
          self.build_extensions()
        File "<string>", line 100, in build_extensions
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 817, in build_extensions
          _check_cuda_version(compiler_name, compiler_version)
        File "/tmp/pip-build-env-8ldilolz/overlay/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 646, in _check_cuda_version
          raise RuntimeError(CUDA_MISMATCH_MESSAGE, cuda_str_version, torch.version.cuda)
      RuntimeError: ('The detected CUDA version (%s) mismatches the version that was used to compilePyTorch (%s). Please make sure to use the same CUDA versions.', '12.8', '13.0')
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for fused-ssim
Failed to build fused-ssim

问题根源是 PyTorch 的 CUDA 版本(13.0)与您系统驱动的 CUDA 版本(12.8)不匹配,而 fused-ssim 在编译 CUDA 扩展时强校验了版本一致性。

尽管您已降级 PyTorch 至 2.2.2+cu121,但根据错误信息,torch.version.cuda 仍显示为 13.0,说明降级未生效或存在多个 PyTorch 版本冲突。

解决方案:彻底清理并重新安装匹配的 PyTorch

  1. 完全卸载现有 PyTorch
pip uninstall torch torchvision torchaudio

多次执行以确保全部移除,并检查是否还有其他版本的残留(如通过 conda 安装的):

conda uninstall pytorch torchvision torchaudio -c pytorch
  1. 清除 pip 缓存(可选)
pip cache purge
  1. 重新安装与驱动匹配的 PyTorch(CUDA 12.1)
    请务必从 PyTorch 官网指定的源下载:
pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121
  1. 验证安装
    在 Python 中执行:
import torch
print(torch.__version__)          # 应为 2.2.2+cu121
print(torch.version.cuda)         # 应为 12.1
print(torch.cuda.is_available())  # 虽然驱动旧可能返回 False,但版本号正确即可
  1. 重新安装 fused-ssim
pip install submodules/fused-ssim

python -c "import torch; print(torch.version.cuda)"的输出为12.1,这说明torch安装没问题,nvcc --version的输出为12.8,则说明cuda的版本没问题。并且考虑到submodules/fused-ssim/setup.py没有关于cuda_version的检验,若还出现上面的问题,那么问题的根源在于 :
pip 在构建 fused-ssim 时默认会创建隔离环境(build-env),该环境中会重新安装 torch 以满足 install_requirestorch>=2.0.0)。由于您的本地环境中已安装了 CUDA 12.1 的 PyTorch,但隔离环境可能安装的是最新版 PyTorch(例如 2.3.0 或更高版本),而最新版 PyTorch 可能已基于 CUDA 13.0 编译,从而导致 torch.version.cuda 在构建时变为 13.0,与系统的 nvcc 版本(12.8)不匹配,进而触发版本校验失败。
为什么隔离环境会安装新版本?

  • pyproject.tomlsetup.pyinstall_requires 中写有 torch>=2.0.0
  • 当 pip 执行 pep517 构建时,会创建一个临时虚拟环境,并在其中安装 torch 的最新版本,以解析依赖。
  • 最新版本(如 2.3.1)可能已使用 CUDA 13.0 编译,导致与您的系统 CUDA(12.8)不匹配。
    使用 --no-build-isolation 可完全避免这一行为。

解决方案:使用 --no-build-isolation 强制使用当前环境
在安装 fused-ssim 时添加 --no-build-isolation 参数,使构建过程直接使用您当前 conda 环境中的 PyTorch,而不是在隔离环境中重新安装。

pip install --no-build-isolation submodules/fused-ssim

这样,构建时将使用您已验证过的 CUDA 12.1 版本的 PyTorch,版本校验即可通过。

注意--no-build-isolation 要求您当前环境中已安装所有构建依赖(如 torchsetuptoolswheel 等)。您已拥有这些,因此可以放心使用。

如果仍然报错

若上述方法无效,请尝试以下备选:

  1. 清理构建缓存(避免残留的隔离环境缓存):
pip install --no-build-isolation --no-cache-dir submodules/fused-ssim
  1. 检查 pyproject.toml(如果存在):
    如果 submodules/fused-ssim/pyproject.toml 中有 build-system 字段,可以考虑临时移除或修改其依赖,但这通常不必要。

  2. 手动安装构建依赖(确保当前环境完整):

pip install setuptools wheel ninja

验证安装成功
安装完成后,测试导入:

python -c "import fused_ssim; print('OK')"

若无错误输出,则安装成功。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions