只能用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'),
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_t、uint32_t 等类型,但没有包含对应的头文件 <cstdint>。这导致 CUDA 编译器找不到这些类型定义。
解决方案
修改源码,添加头文件包含
这是最直接有效的方法。请编辑文件:
submodules/diff-gaussian-rasterization-depth/cuda_rasterizer/rasterizer_impl.h
在文件最顶部(在所有其他 include 之前)添加一行:
例如,文件开头可能原本是:
#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-ssim 的 setup.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 路径。
具体操作:
- 打开
submodules/fused-ssim/setup.py。
- 搜索关键字
xpu、sycl 或 icpx。
- 找到类似这样的结构:
if torch.xpu.is_available():
# XPU/SYCL 编译选项
...
else:
# CUDA 或 CPU 编译选项
...
- 将
if torch.xpu.is_available(): 改为 if False:,或者直接交换两个分支。
- 保存文件,重新执行:
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
- 完全卸载现有 PyTorch
pip uninstall torch torchvision torchaudio
多次执行以确保全部移除,并检查是否还有其他版本的残留(如通过 conda 安装的):
conda uninstall pytorch torchvision torchaudio -c pytorch
- 清除 pip 缓存(可选)
- 重新安装与驱动匹配的 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
- 验证安装
在 Python 中执行:
import torch
print(torch.__version__) # 应为 2.2.2+cu121
print(torch.version.cuda) # 应为 12.1
print(torch.cuda.is_available()) # 虽然驱动旧可能返回 False,但版本号正确即可
- 重新安装
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_requires(torch>=2.0.0)。由于您的本地环境中已安装了 CUDA 12.1 的 PyTorch,但隔离环境可能安装的是最新版 PyTorch(例如 2.3.0 或更高版本),而最新版 PyTorch 可能已基于 CUDA 13.0 编译,从而导致 torch.version.cuda 在构建时变为 13.0,与系统的 nvcc 版本(12.8)不匹配,进而触发版本校验失败。
为什么隔离环境会安装新版本?
pyproject.toml 或 setup.py 的 install_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 要求您当前环境中已安装所有构建依赖(如 torch、setuptools、wheel 等)。您已拥有这些,因此可以放心使用。
如果仍然报错
若上述方法无效,请尝试以下备选:
- 清理构建缓存(避免残留的隔离环境缓存):
pip install --no-build-isolation --no-cache-dir submodules/fused-ssim
-
检查 pyproject.toml(如果存在):
如果 submodules/fused-ssim/pyproject.toml 中有 build-system 字段,可以考虑临时移除或修改其依赖,但这通常不必要。
-
手动安装构建依赖(确保当前环境完整):
pip install setuptools wheel ninja
验证安装成功
安装完成后,测试导入:
python -c "import fused_ssim; print('OK')"
若无错误输出,则安装成功。
只能用pip安装,因为其中还涉及到conda提供的cuda和cudnn的安装
pip 和 setuptools 版本
由于CLIP所以来的包版本都比较老,所以采用高版本pip会出问题,建议采用23.3.2版本,setuptools版本可能也需要使用低版本,例如65.5.0
子模块拉取,直接git clone下来的项目不带子模块,必须要去其所指向的项目中拉取
若不拉取,则执行下面的安装指令都会出错
一种方式就是找到对应的项目,逐个进行git clone
另一种方式,可以采用下面的命令去拉取所有子模块
numpy、torch 和 cuda
考虑到cuda版本为12.8,所以必须选择与之匹配的torch版本,可以采用2.2.2
torch版本与cuda不兼容时,在安装diff-gaussian-rasterization-depth会出错
或者在执行torch.__version__出现下面信息:
torch的使用离不开numpy,若numpy版本不兼容,会出现下面的信息(例如torch版本为2.2.2,numpy>=2),则在import torch时会出现下面的信息
pip install "numpy<2"glm编译问题
拉取子模块后,并且确保glm.hpp存在的情况下,执行
会出现下面的错误信息:
大模型回答如下:
现在遇到了新的编译错误:
rasterizer_impl.h中使用了std::uintptr_t、uint32_t等类型,但没有包含对应的头文件<cstdint>。这导致 CUDA 编译器找不到这些类型定义。解决方案
修改源码,添加头文件包含
这是最直接有效的方法。请编辑文件:
在文件最顶部(在所有其他 include 之前)添加一行:
例如,文件开头可能原本是:
修改后:
保存文件后,重新执行安装:
如果仍然报错,可以尝试清理缓存后重试:
补充说明
为什么会出现这个问题?
这是因为 CUDA 代码依赖了标准整数类型,但在 C++ 标准中,这些类型定义在
<cstdint>或<stdint.h>中,而原作者可能依赖于某些编译器的隐式包含(例如 NVIDIA 的 nvcc 在某些版本中会自动包含),但在当前环境下并未自动包含,所以需要显式声明。如果编辑后仍有其他错误:
可能还有其他类似的缺少头文件的问题(例如
<cstring>、<algorithm>等),但最核心的uint32_t问题解决后,后续编译应该能通过。如果遇到其他 undefined 错误,可以参考类似方式添加对应的标准头文件。备选方案:
也可以尝试在编译命令中添加
-include stdint.h等参数,但修改源码更简单可靠。请尝试修改后再次编译,如果成功,则说明问题解决。如果还有其他报错,请将新的错误信息贴出来,我会继续协助。
torch的xpu编译问题
安装fused-ssim,出现下面的问题:
错误信息显示
fused-ssim在编译时错误地尝试使用 Intel XPU (SYCL) 后端,调用了icpx编译器,但您的系统上并未安装 Intel oneAPI 工具链,也没有icpx命令。这导致编译失败。根本原因
fused-ssim的setup.py中检测到了某种条件(可能是环境变量或torch.xpu.is_available()返回True),从而选择了 XPU 分支,而非您期望的 CUDA 分支。您的环境是 NVIDIA GPU,应该使用 CUDA 版本。解决方案
1. 检查环境变量(快速排查)
运行以下命令,查看是否有 Intel 相关的环境变量被设置:
如果存在,可以暂时取消它们(例如
unset SYCL_ROOT等),然后重试安装。2. 强制禁用 XPU 检测(推荐)
编辑
submodules/fused-ssim/setup.py,找到检测 XPU 的部分(通常类似if torch.xpu.is_available():),将其修改为if False:或直接删除/注释掉该分支,强制使用 CUDA 路径。具体操作:
submodules/fused-ssim/setup.py。xpu、sycl或icpx。if torch.xpu.is_available():改为if False:,或者直接交换两个分支。torch卸载不干净引发的错误
注释掉setup.py中使用xpu编译的部分后,执行pip install submodules/fused-ssim,出现下面的问题:
问题根源是 PyTorch 的 CUDA 版本(13.0)与您系统驱动的 CUDA 版本(12.8)不匹配,而
fused-ssim在编译 CUDA 扩展时强校验了版本一致性。尽管您已降级 PyTorch 至
2.2.2+cu121,但根据错误信息,torch.version.cuda仍显示为13.0,说明降级未生效或存在多个 PyTorch 版本冲突。解决方案:彻底清理并重新安装匹配的 PyTorch
多次执行以确保全部移除,并检查是否还有其他版本的残留(如通过
conda安装的):请务必从 PyTorch 官网指定的源下载:
在 Python 中执行:
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_requires(torch>=2.0.0)。由于您的本地环境中已安装了 CUDA 12.1 的 PyTorch,但隔离环境可能安装的是最新版 PyTorch(例如 2.3.0 或更高版本),而最新版 PyTorch 可能已基于 CUDA 13.0 编译,从而导致torch.version.cuda在构建时变为13.0,与系统的nvcc版本(12.8)不匹配,进而触发版本校验失败。为什么隔离环境会安装新版本?
pyproject.toml或setup.py的install_requires中写有torch>=2.0.0。pep517构建时,会创建一个临时虚拟环境,并在其中安装torch的最新版本,以解析依赖。使用
--no-build-isolation可完全避免这一行为。解决方案:使用
--no-build-isolation强制使用当前环境在安装
fused-ssim时添加--no-build-isolation参数,使构建过程直接使用您当前 conda 环境中的 PyTorch,而不是在隔离环境中重新安装。这样,构建时将使用您已验证过的 CUDA 12.1 版本的 PyTorch,版本校验即可通过。
如果仍然报错
若上述方法无效,请尝试以下备选:
检查
pyproject.toml(如果存在):如果
submodules/fused-ssim/pyproject.toml中有build-system字段,可以考虑临时移除或修改其依赖,但这通常不必要。手动安装构建依赖(确保当前环境完整):
验证安装成功
安装完成后,测试导入:
python -c "import fused_ssim; print('OK')"若无错误输出,则安装成功。