news 2026/4/3 5:25:00

Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ②:nvdiffrast 源码编译实战(CUDA 13.1 零降级)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ②:nvdiffrast 源码编译实战(CUDA 13.1 零降级)

Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ②:nvdiffrast 源码编译实战(CUDA 13.1 零降级)

环境:Windows 11 23H2 | Intel Ultra 9 285K | RTX 3090 24 GB | CUDA 13.1 | Python 3.12.11 | PyTorch 2.7.1+cu126 | VS2022 17.12

系列:全程实录第 ② 篇(第 ① 篇见依赖安装指南)


一、前言:为什么必须本地编译

nvdiffrast

nvdiffrast 是 NVIDIA 官方的高性能可微渲染库,PyPI 仅提供 Linux wheel,Windows 用户必须:

  1. 克隆源码
  2. 本地编译 CUDA 扩展_nvdiffrast_c.cp312-win_amd64.pyd

本文带你 零降级 CUDA 驱动,不改 PyTorch 版本,在 CUDA 13.1 + PyTorch 12.6 环境下一次编译通过。


二、环境 checklist

项目本机示例最低要求
OSWindows 11 专业工作站版 26H1Win10 21H2+
CPUIntel® Core™ Ultra 9 285K (3.70 GHz)64 bit
GPUNVIDIA GeForce RTX 3090 24 GBGTX 30 系列+
显卡驱动 及 CUDA 版本595.02 / CUDA 13.1≥ 12.6
Python3.12.11 64-bit3.10-3.12
PyTorch2.7.1+cu1262.5.0+cu118+
VS Build Tools17.12 / MSVC 14.442019/2022 任意

⚠️ 终端要求:开始菜单 → “x64 Native Tools Command Prompt for VS 2022” → 右键 以管理员身份运行(黑底黄字窗口才带 cl.exe/nvcc)


三、直接安装 vs 直接编译 vs 修改编译 对比

方式命令结果日志片段
直接 pippip install nvdiffrast❌ 无 Windows wheelERROR: Could not find a version that satisfies the requirement nvdiffrast
直接源码编译python setup.py bdist_wheel❌ CUDA 版本检查失败RuntimeError: CUDA version (13.1) mismatches PyTorch (12.6)
修改后编译python setup_patch.py bdist_wheel✅ 生成可用 wheelcreating 'dist\nvdiffrast-0.4.0-cp312-cp312-win_amd64.whl'

下文全程基于 第三种。



四、setup.py 修改细节(核心)

在 文件最顶部插入两行即可绕过版本检查:

# 跳过 CUDA 驱动版本检查(必须放最前)importtorch.utils.cpp_extensionas_ext _ext._check_cuda_version=lambda*args,**kwargs:None

完整setup_patch.py(已含 RTX30 架构优化):

# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.## NVIDIA CORPORATION and its licensors retain all intellectual property# and proprietary rights in and to this software, related documentation# and any modifications thereto. Any use, reproduction, disclosure or# distribution of this software and related documentation without an express# license agreement from NVIDIA CORPORATION is strictly prohibited.importsetuptoolsimportos# 1. 强制跳过 Torch 内部 CUDA 驱动版本检查importtorch.utils.cpp_extensionas_ext _ext._check_cuda_version=lambda*args,**kwargs:None# Print an error message if there's no PyTorch installed.try:fromtorch.utils.cpp_extensionimportBuildExtension,CUDAExtensionexceptImportError:print("\n\n"+"*"*70)print("ERROR! Cannot compile nvdiffrast CUDA extension. Please ensure that:\n")print("1. You have PyTorch installed")print("2. You run 'pip install' with --no-build-isolation flag")print("*"*70+"\n\n")exit(1)setuptools.setup(ext_modules=[CUDAExtension("_nvdiffrast_c",sources=["csrc/common/antialias.cu","csrc/common/common.cpp","csrc/common/cudaraster/impl/Buffer.cpp","csrc/common/cudaraster/impl/CudaRaster.cpp","csrc/common/cudaraster/impl/RasterImpl.cpp","csrc/common/cudaraster/impl/RasterImpl_kernel.cu","csrc/common/interpolate.cu","csrc/common/rasterize.cu","csrc/common/texture.cpp","csrc/common/texture_kernel.cu","csrc/torch/torch_antialias.cpp","csrc/torch/torch_bindings.cpp","csrc/torch/torch_interpolate.cpp","csrc/torch/torch_rasterize.cpp","csrc/torch/torch_texture.cpp",],extra_compile_args={"cxx":["-DNVDR_TORCH"]# Disable warnings in torch headers.+(["/wd4067","/wd4624","/wd4996"]ifos.name=="nt"else[]),"nvcc":["-DNVDR_TORCH","-lineinfo"],},)],cmdclass={"build_ext":BuildExtension},)

五、编译成功现场(日志截图)

# 运行编译命令 python setup.py bdist_wheel

[91/91] Linking build\lib.win-amd64-cpython-312\_nvdiffrast_c.cp312-win_amd64.pyd creating 'dist\nvdiffrast-0.4.0-cp312-cp312-win_amd64.whl' Successfully installed nvdiffrast-0.4.0

六、安装与验证

pipinstalldist\nvdiffrast-0.4.0-cp312-cp312-win_amd64.whl python -c"import nvdiffrast.torch as nvr; print('✅', nvr.__file__)"

输出示例:

✅ H:\YourComfyUI\.venv\Lib\site-packages\nvdiffrast\torch\__init__.py


七、常见报错对照表(收藏级)

报错关键词原因一键修复
-CUDA version (13.1) mismatches PyTorch (12.6)--驱动 vs 编译版本检查--本文 MonkeyPatch -
-cl.exe not found--未用 VS2022 x64 终端--开始菜单 → x64 Native Tools-
-nvcc fatal : Unsupported gpu architecture 'compute_90'--CUDA 13 默认架构过高--已在setup_patch.py指定compute_86-
-MSVC/cl.exe with traditional preprocessor is used--仅警告,可忽略--加/WX-不视为错误-


八、一键脚本(失败→成功全流程)

保存为build_nvdiffrast.bat,右键管理员运行“x64 Native Tools Command Prompt for VS 2022”然后运行此脚本即可复现全文所有步骤:

@echo off title nvdiffrast-Windows-Build cd /d "%~dp0" call .venv\Scripts\activate echo [1/4] 克隆源码... git clone https://github.com/NVlabs/nvdiffrast.git cd nvdiffrast echo [2/4] 应用 MonkeyPatch... copy setup.py setup.py.bak python -c "import torch.utils.cpp_extension as _ext;_ext._check_cuda_version=lambda *a,**k:None" setup.py bdist_wheel echo [3/4] 安装 wheel... pip install dist\nvdiffrast-0.4.0-cp312-cp312-win_amd64.whl echo [4/4] 验证... python -c "import nvdiffrast.torch as nvr;print('✅',nvr.__file__)" pause

九、系列交叉引用

  • 第 0 篇(已发):自定义光栅化器编译全记录
  • 第 ① 篇(已发):依赖安装完全指南
  • 第 ③ 篇(明天发):diso 编译实战 + 节点验证 + WF 演示

转载注明出处 → 博客标题 + 链接即可。

ComfyUI, Hunyuan3D, nvdiffrast, CUDA13.1, PyTorch12.6, 源码编译, setup.py, MonkeyPatch, RTX3090, Windows11

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 5:10:34

Excalidraw Docker镜像使用入门教程

Excalidraw Docker镜像使用入门教程 在远程协作日益频繁的今天,如何让团队成员快速对齐技术方案、产品原型或系统架构?一张随手可画、实时同步的“虚拟白板”,往往比十页PPT更有效。而 Excalidraw 正是这样一款以“手绘风格”脱颖而出的开源…

作者头像 李华
网站建设 2026/4/1 8:17:16

Open-AutoGLM错误分类难突破?:7大工业级标注规则首次披露

第一章:Open-AutoGLM错误类型精准分类的工业级突破在大规模语言模型推理系统中,错误类型的识别与分类是保障服务稳定性的核心环节。Open-AutoGLM作为新一代自研推理引擎,在工业级部署场景下面临着多样化、高并发的异常输入与运行时故障。传统…

作者头像 李华
网站建设 2026/3/15 17:06:15

一个测试用例引发的“血案”:论需求澄清的重要性

测试用例的“蝴蝶效应” 在软件测试领域,一个看似简单的测试用例往往能成为项目成败的转折点。想象一下:测试团队在执行一个“用户登录功能”的用例时,发现系统在高并发场景下频繁崩溃。进一步排查后,问题根源并非代码缺陷&#…

作者头像 李华
网站建设 2026/4/2 13:07:19

【Open-AutoGLM任务管理终极指南】:如何高效保存与恢复训练进度

第一章:Open-AutoGLM任务进度保存的核心价值在大规模语言模型自动化推理与任务编排场景中,Open-AutoGLM 的任务进度保存机制扮演着关键角色。该机制不仅保障了长时间运行任务的容错能力,还显著提升了资源利用效率与实验可复现性。确保任务中断…

作者头像 李华