目录
相关环境安装教程:Windows 环境下安装 triton、causal-conv1d 和 mamba-ssm 教程(2026最新版)-CSDN博客
一、前言
最近在复现 Vivim 项目时,按照原作者教程在 Windows 环境下安装 causal-conv1d 1.0.0 和 mamba-ssm 1.0.1 的遇到很多问题,原版 Vivim 项目主要面向 Linux 环境,为方便 Windows 用户复现 Vivim,现将修改后的文件上传到 1552186151/Vivim-Windows-Install ,实测可稳定在 Win 10/11 环境编译,在此本文记录完整的安装教程和原项目常见安装 bug 的修复介绍。

话不多说,GitHub 仓库地址如下,路过的小伙伴麻烦点个小星星 Star:
测试环境如下,安装环境版本不必一一对应,如果编译失败在换版本:
系统:Windows
IDE:PyCharm
Conda 环境:mmdet_vivim
GPU:NVIDIA RTX 4090
PyTorch:2.5.1+cu121
CUDA Runtime:12.1
Visual Studio:Visual Studio 2022 Build Tools
其中 RTX 4090 对应的 CUDA 架构是:
sm_89
如果是 RTX 30 系列,一般对应:
sm_86
如果显卡不同,后续 TORCH_CUDA_ARCH_LIST 需要相应修改。
二、安装教程
1. 克隆 Github 仓库
首先进入自己的项目目录:
cd "D:\PycharmProjects\DeepLearning"
克隆 Windows 适配仓库:
git clone https://github.com/1552186151/Vivim-Windows-Install.git
进入仓库:
cd Vivim-Windows-Install
该仓库中主要包含:
causal-conv1d
mamba
test_scripts
README.md
其中:
causal-conv1d:Mamba 所需的一维因果卷积 CUDA 扩展
mamba:Vivim 所需的 mamba-ssm 源码
test_scripts:环境测试脚本
2. 创建 Conda 环境
如果已经有一个能正常运行 PyTorch / MMDetection 的环境,可以直接克隆:
conda create -n mmdet_vivim --clone mmdet
conda activate mmdet_vivim
如果没有现成环境,也可以新建 Python 3.10 环境:
conda create -n mmdet_vivim python=3.10 -y
conda activate mmdet_vivim
安装基础依赖:
python -m pip install -U pip setuptools wheel
pip install packaging ninja timm transformers einops
检查 PyTorch 和 CUDA 是否可用:
python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available())"
如果输出类似:
2.5.1+cu121
12.1
True
说明 PyTorch CUDA 可用,环境版本不必一一对应,如果编译失败在换版本。
3. 配置 Visual Studio 编译环境
Windows 下编译 causal-conv1d 和 mamba-ssm 需要 MSVC 编译器。
安装过程可参考: Windows 环境下安装 triton、causal-conv1d 和 mamba-ssm 教程(2026最新版)-CSDN博客
需要安装:
Visual Studio Build Tools 2022
MSVC v143
Windows 10 SDK 或 Windows 11 SDK
C++ CMake tools for Windows
如果使用 PyCharm 的 PowerShell 终端,需要先加载 Visual Studio 编译环境:
& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\Launch-VsDevShell.ps1" -Arch amd64 -HostArch amd64
检查 cl.exe 和 nvcc 是否可用:
where.exe cl
where.exe nvcc
如果能看到 cl.exe 和 nvcc.exe 路径,说明编译环境已经生效。
本文后续命令均以 PowerShell 为例。
4. 安装 causal-conv1d
进入 causal-conv1d 目录:
cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install\causal-conv1d"
清理旧编译文件:
python setup.py clean
Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue
设置编译参数:
注意:第三行命令根据显卡型号来填,RTX 20 系列:7.5 RTX 30 系列:8.6 RTX 40 系列:8.9
$env:CAUSAL_CONV1D_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"
参数含义如下:
CAUSAL_CONV1D_FORCE_BUILD=TRUE:强制本地编译 causal-conv1d
MAX_JOBS=1:限制单线程编译,降低内存压力
TORCH_CUDA_ARCH_LIST=8.9:只编译 RTX 4090 对应的 sm_89 架构
CL=/Zm1000 /bigobj:增加 MSVC 编译器堆空间
执行安装:
python setup.py install
安装完成后测试:
python -c "import causal_conv1d; print('causal_conv1d OK')"
如果输出:
causal_conv1d OK
说明安装成功。
5. 安装 mamba-ssm
进入 mamba 目录:
cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install\mamba"
清理旧编译文件:
python setup.py clean
Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue
设置编译参数:
注意:第三行命令根据显卡型号来填,RTX 20 系列:7.5 RTX 30 系列:8.6 RTX 40 系列:8.9
$env:MAMBA_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"
执行安装:
python setup.py install
安装完成后测试:
python -c "import mamba_ssm; print('mamba_ssm OK')"
python -c "from mamba_ssm import Mamba; print('Mamba class OK')"
如果输出:
mamba_ssm OK
Mamba class OK
说明 mamba-ssm 安装成功。
继续测试 CUDA 前向传播:
python -c "import torch; from mamba_ssm import Mamba; x=torch.randn(2,64,16,device='cuda'); model=Mamba(d_model=16,d_state=16,d_conv=4,expand=2).cuda(); y=model(x); print(y.shape); print('mamba cuda forward OK')"
如果输出:
mamba cuda forward OK
说明 Mamba CUDA 扩展可以正常运行。
6. 运行测试脚本
仓库中提供了测试脚本,位于 test_scripts 文件夹,回到仓库根目录:
cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install"
测试 Triton:
python .\test_scripts\test_triton_cuda.py
测试 causal-conv1d 和 mamba-ssm:
python .\test_scripts\test_mamba_cuda.py
测试 Vivim 前向推理:
python .\test_scripts\test_vivim_forward.py
如果测试均通过,说明 Vivim 所需核心环境已经配置完成。
三、常见 Bug 与解决方法
1. M_LOG2E is undefined(error: identifier "M_LOG2E" is undefined)
报错:
identifier "M_LOG2E" is undefined
原因是 Windows/MSVC 下没有默认定义 M_LOG2E 数学常量。
解决方法是在以下两个文件开头补充:
mamba\csrc\selective_scan\selective_scan_bwd_kernel.cuh
mamba\csrc\selective_scan\selective_scan_fwd_kernel.cuh
补充内容:
#ifndef M_LOG2E
#define M_LOG2E 1.4426950408889634074
#endif
本仓库已完成该修改。
2. 模板参数不是编译期常量(error C2975: “kIsVariableB_”)
报错示例:
kIsVariableB_ template parameter is invalid
kIsVariableC_ template parameter is invalid
kIsEvenLen_ template parameter is invalid
原因是 Windows/MSVC 对 lambda 中的局部 constexpr bool 处理更严格。
解决方法是在:
mamba\csrc\selective_scan\static_switch.h
将 constexpr bool 修改为 static constexpr bool
本仓库已完成该修改。
3. kNRows_ 模板参数无效(error C2975: “kNRows_”)
报错:
kNRows_ template parameter is invalid
expression did not evaluate to a constant
解决方法是在:
mamba\csrc\selective_scan\selective_scan_fwd_kernel.cuh
将 constexpr int kNRows = 1; 修改为 static constexpr int kNRows = 1;
本仓库已完成该修改。
4. MSVC 编译器堆空间不足(fatal error C1060: 编译器的堆空间不足)
报错:
fatal error C1060: 编译器的堆空间不足
常见原因是编译架构过多,导致 CUDA 生成的中间文件过大。
解决方法:
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"
如果仍然失败:
$env:CL="/Zm2000 /bigobj"
5. Windows 编译兼容问题
在 Windows 下编译 mamba-ssm 时,可能会遇到 Windows 头文件宏冲突或模板展开问题。
解决方法是在:
mamba\setup.py
中的 nvcc 参数列表里加入:
"-DWIN32_LEAN_AND_MEAN",
本仓库已完成该修改。
p.s. 若遇到以上问题,需清理旧编译文件后重新安装
cd "D:\PycharmProjects\DeepLearning\Vivim\mamba"
python setup.py clean
Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue
$env:MAMBA_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"
python setup.py install

450

被折叠的 条评论
为什么被折叠?



