Windows 11 + CUDA 12.8环境从源码构建PyTorch3D失败:提示无法打开头文件'thrust/detail/cstdint.h'
我之前也踩过这个坑,大概率是CUDA 12.x版本里Thrust库的路径变动,或者PyTorch3D的构建脚本没适配新CUDA版本导致的,给你几个亲测有效的解决办法:
手动指定Thrust头文件路径
CUDA 12.8里的Thrust头文件位置和旧版本有差异,先找到你的CUDA安装目录下的Thrust文件夹,一般在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include\thrust。在构建PyTorch3D前,通过环境变量把这个路径传给编译器:set C_INCLUDE_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include;%C_INCLUDE_PATH% set CXX_INCLUDE_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include;%CXX_INCLUDE_PATH%也可以在执行CMake命令时加上
-DCMAKE_INCLUDE_PATH="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include"参数来指定。降级CUDA到11.8版本
目前PyTorch3D对CUDA 12.x的支持还不算特别完善,很多开发者反馈降级到CUDA 11.8后构建成功率高很多。如果不是必须用12.8的新特性,这是最省心的方案,记得同时安装对应版本的PyTorch(比如PyTorch 2.0+适配CUDA 11.8)。修改PyTorch3D源码的头文件引用
找到报错的renderer.norm_sphere_gradients.gpu.cu文件,把里面的#include <thrust/detail/cstdint.h>改成#include <cstdint>——Thrust里的这个文件本质是封装的标准库头文件,直接替换不会影响功能。改完后重新执行构建命令即可。确认PyTorch与CUDA版本匹配
先运行以下命令检查PyTorch对应的CUDA版本:python -c "import torch; print(torch.version.cuda)"如果输出不是12.8,先安装适配CUDA 12.8的PyTorch版本,比如用pip安装:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
内容来源于stack exchange

