Windows10 CUDA 12.1 环境安装Pytorch3d教程 踩的无数坑解决方法(2025年4月)

前言

Win10安装Pytorch3d还是比较复杂的,特别是CUDA版本比较高的情况下,故记录下。

本教程适用于CUDA>=12.1的版本,因为这个版本网上教程很少,坑特别多。不一定适用其他版本。

参考资料

教程

1.创建环境并配置

#创建并激活环境
conda create -n 你的环境名称(以pytorch3d为例) python=3.9
conda activate pytorch3d

#安装环境
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install jupyter
pip install scikit-image matplotlib imageio plotly opencv-python
pip install black usort flake8 flake8-bugbear flake8-comprehensions

创建完后,下载Pytorch3d的压缩包

注意,这里需要根据自己的Pytorch版本下载(比如我是pytorch 2.4.0的版本,我就直接下载0.7.8的pytorch3d包):

添加图片注释,不超过 140 字(可选)

下载完后,移动到你刚刚创建的anaconda3环境目录下:
I:\Codingtools\PythonTools\Anaconda3\envs\你的环境(这里以pytorch3d为例)\Lib\site-packages
解压并改名为pytroch3d:

添加图片注释,不超过 140 字(可选)

修改 pyTorch3d\setup.py 文件:
- 注释掉 extra_compile_args = {"cxx": ["-std=c++14"]}
- 替换为 extra_compile_args = {"cxx": []}

2. 不要安装CUB!!!!

网上很多教程都有教安装CUB,但其实高版本的CUDA(比如CUDA12.1)已经自带CUB了,不需要再自己傻傻安装CUB了,这也是为什么CUB官网(https://github.com/NVIDIA/cub)的最高支持CUDA版本只到12.0。当然,如果你的CUDA版本比较低的话还是需要安装CUB的,本文主要面向CUDA 12.1。

添加图片注释,不超过 140 字(可选)

3. 更改CUDA的config文件

不进行这一步的话,安装Pytorch3d时会显示版本错误。
打开你的CUDA环境下的目录,找到这个文件(比如我的是在I:\DeepLearning\CUDA\CUDA Development\include\thrust\system\cuda文件夹下):

在这里插入图片描述

添加以下代码:
即在#ifndef THRUST_IGNORE_CUB_VERSION_CHECK前,添加一行#define THRUST_IGNORE_CUB_VERSION_CHECK代码

添加图片注释,不超过 140 字(可选)

4. 不用安装Visual Studio 2019!

不需要安装Visual Studio 2019,网上很多方法都用到了Visual Studio 2019,但CUDA版本比较高的时候,用2019反而会报错。

正确做法:
以管理员身份打开x64 Native Tools Command Prompt for VS 2022 (一定一定要管理员!):
在这里插入图片描述

打开一个文件窗口,找到以下目录(可能是在"“(你的VS的安装目录)\2022\Community\VC\Auxiliary\Build”,也可能是在"(你的VS的安装目录)\VisualStudio\VSIDE\VC\Auxiliary\Build" 需要自己找找):
在这里插入图片描述

然后在Prompt窗口里输入指令(这里的14.29.16.11根据你文件夹红框的数字决定,不一样的需要自己修改):

"I:\IDE\VisualStudio\VSIDE\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.29.16.11

输入完指令后,应该可以看到Prompt窗口显示初始化环境成功。

注意,这个初始化环境只在当前Prompt窗口有效,初始化后我们只在这个Prompt窗口进行后续操作。

4. 开始安装Pytorch3d

前置工作完成后,就可以开始安装Pytorch3d了。

在当前Prompt窗口,cd到你的pytorch3d目录下,运行以下指令:

set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
python setup.py install

如果安装过程中,你有遇到各种报错问题,请跳转到下面的报错解决】章节。
一切顺利的话会显示以下输出:
在这里插入图片描述

这里提一嘴:如果你的pytorch3d所在目录名称过长,会导致最后编译的时候出错,因为visual studio 不支持这么长的目录名:

I:\Codingtools\PythonTools\Anaconda3\envs\pytorch3d\Lib\site-packages\pytorch3d\csrc\mesh_normal_consistency\
mesh_normal_consistency_cpu.cpp:  fatal error C1083: 无法打开编译器生成的文件
(Unable to open compiler generated file): " ": Invalid argument ......

这时候只需要把你的pytorch3d放到其他任意目录下再编译即可。

5.测试

创建test.py文件,写以下代码:

import torch
import pytorch3d


def test_pytorch3d():
    print("PyTorch3D imported successfully!")

    if torch.cuda.is_available():
        device = torch.device("cuda")
        print("CUDA is available. Testing PyTorch3D with GPU...")

        # 创建一个 tensor 并移动到 GPU
        x = torch.tensor([[1.0, 2.0, 3.0]], device=device)  # 确保点是二维的

        from pytorch3d.transforms import RotateAxisAngle
        rot = RotateAxisAngle(angle=90, axis="X").to(device)  # 将变换移动到 GPU
        x_transformed = rot.transform_points(x)

        print("Tensor on GPU: ", x)
        print("Transformed Tensor: ", x_transformed)
    else:
        print("CUDA is not available. Please check your PyTorch and GPU settings.")


test_pytorch3d()

输入指令:

conda activate pytorch3d
python test.py

常见报错

1. error: asm operand type size(8) does not match type/size implied by constraint ‘r‘ 或CUB error: no instance of overloaded “operator new” matches the argument list

你用的是”x64 Native Tools Command Prompt for VS 2019“而不是”x64 Native Tools Command Prompt for VS 2022“,改用2022可以解决这个问题。

2. fatal error C1083: 无法打开包括文件: “crtdefs.h”: No such file or directory

原因:安装的Cuda默认使用x64,而VS默认为x86,导致位数不匹配
你忘记在python setup.py install之前输入以下指令了:

set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1

3. Command ‘[‘ninja’, ‘-v’]’ returned non-zero exit status 1.

参考资料:failed building wheel for pytorch3d-CSDN博客
添加图片注释,不超过 140 字(可选)

4. errors detected in the compilation of “D:/Project/IPDAE-main/pytorch3d-0.7.5/pytorch3d/csrc/pulsar/cuda/renderer.backward.gpu.cu”.

参考资料
在setup.py中的nvcc_args加入

"-DWIN32_LEAN_AND_MEAN"

5. ImportError: cannot import name ‘packaging’ from ‘pkg_resources’

参考资料
原因:setuptool版本太高了

python -m pip install setuptools==69.5.1

6. I:\Codingtools\PythonTools\Anaconda3\envs\mvrlt\Lib\site-packages\pytorch3d\pytorch3d\csrc\mesh_normal_consistency\mesh_normal_consistency_cpu.cpp : fatal error C1083: 无法打开编译器生成的文件: “”: Invalid argument error: command ‘I:\IDE\VisualStudio\VSIDE\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe’ failed with exit code 1

因为visual studio 不支持这么长的名字,这时候只需要把你的pytorch3d放到其他任意目录下,再重新安装即可。

7. The version of CUB in your include path is not compatible with this release of Thrust CUB is now included in the CUDA Toolkit so you no longer need to use your own checkout of CUB Define THRUST IGNORE CUB_VERSION_CHECK to ignore this.

没有在CUDA的config.h((比如我的是在I:\DeepLearning\CUDA\CUDA Development\include\thrust\system\cuda\config.h文件夹下)中写下代码:
添加图片注释,不超过 140 字(可选)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bartender-XD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值