mxnet1.9.1+cuda11.8+rtx4090+vs2022+win11源码编译安装

本文详细介绍了如何在Windows 11环境下,使用Visual Studio 2022、CUDA 11.8、RTX 4090显卡,从源码编译安装MXNet 1.9.1的过程,包括CUDA、CUDNN、OpenBLAS和OpenCV的配置,以及解决编译和安装中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档:https://mxnet.apache.org/versions/1.9.1/get_started/windows_setup#build-from-source

1.简介

最近在学习 mxnet,虽然它过气了,但是还是一个很好的学习平台,毕竟教程搞得好,大家都来搞。
既然搞了深度学习那必须用gpu啦,但是mxnet的预编译包最多只支持 cuda11.7,而且好像还不支持windows平台
看这张图片,前面说了支持 Linux 和 Windows 平台,后面又说 Windows 是其他平台,需要从源码构建
pC6gQhT.png

还可以查找下这个链接:https://dist.mxnet.io/python,反正我是没找到1.9.1且适配cuda117的windows的.whl文件

官方文档呢,给出的是 vs2017 + cuda9.2 的编译,cuda9.2 是不能支持 rtx4090 显卡的最大计算能力8.9的
所以还是有坑,而且官方文档你不一定能编译的出来…

而且找遍了全网好像也没有最新的编译流程,只好自己搞一遍了,果然是过气了啊。

2.准备

最基础的cmake和vs2022就不说了

2.1 cuda

首先我们要选择合适的 cuda 版本,官方已经给出了cuda11.7的构建包,虽然是Linux上的,也说明了兼容11.7 ,十有八九不兼容12
所以我们的选择范围就是cuda11.x

nvidia显卡还有一个特性叫计算能力,或者叫做架构,每一代的显卡有不同的架构,在编译时会自动选择当前显卡支持的最新架构
所以需要使用可以兼容当前显卡最新架构的cuda版本,首先查看显卡信息
pC6ho0H.png

由于使用的是4090显卡,需要查看显卡支持的最大计算能力:https://developer.nvidia.com/cuda-gpus
下图可以看到30系显卡支持8.6的计算能力,40系支持到8.9
pC6hzng.png

而cuda本身对计算能力有一个支持列表,实际上,cuda11.7不支持8.9,只有cuda11.8才支持8.6
尽管我们可以编译较低等级的架构,也可以在高等级架构的gpu上运行,但是这可能会产生其他问题
所以最好直接编译当前gpu支持的最高架构的代码
pC646KS.png

最后我们选择了cuda11.8,也就是官方没有提供的最近的一个版本
尽管系统里安装了11.8和12.2两个版本,但是它们是可以互不影响的,只需要设置CUDA_PATH为使用的版本,且将其加入PATH

2.2 cudnn

下载支持cuda11.8的cudnn版本:https://developer.nvidia.com/cudnn

2.3 OpenBLAS

首先下载 OpenBLAS https://github.com/xianyi/OpenBLAS/releases
然后配置OpenBLAS_HOME指向其内部的build目录,下面包含了bin和include目录

2.4 OpenCV

使用Chocolatey安装OpenCV,实际上就是从github下载 https://github.com/opencv/opencv/releases
pC65VPI.png
然后配置OpenCV_DIR指向 opencv/build 目录

2.5 mxnet

下载源码 https://github.com/apache/mxnet ,且到1.9.1分支

3.生成

使用cmake生成编译工具链

cmake -DUSE_CUDA=1 -DUSE_CUDNN=1 -DUSE_OPENCV=1 -DUSE_OPENMP=1 -DUSE_BLAS=open -DUSE_LAPACK=1 -DUSE_DIST_KVSTORE=0 -DCUDA_ARCH_LIST=Common -DCUDNN_LIBRARY='D:\dev\IDE\nvidia\cudnn-8.9.1.23_cuda11\lib\x64\cudnn.lib' -DCUDNN_INCLUDE='D:\dev\IDE\nvidia\cudnn-8.9.1.23_cuda11\include' .

CUDNN_LIBRARY:指向cudnn.lib文件
CUDNN_INCLUDE:指向cudnn的include目录

生成完毕后可以看到mxnet.sln文件

但是还有一个小问题,每个cuda版本安装时都会在vs的目录下安装一些文件,我们生成的工具链里使用了12.2版本的文件
因为实际上使用的是cuda11.8,所以需要更改这些文件为11.8
pC65hee.png

4.编译

打开 native x64 command line , 运行编译,大概一个半小时

msbuild mxnet.sln /p:Configuration=Release;Platform=x64 /maxcpucount

pC65xoj.png

编译完成后会在Release目录下生成 mxnet.dll 和 mxnet_89.dll

5.安装

安装的一个前置工作是,必须保证所有的dll在PATH中可用:

  • cudart64_110.dll:来自cuda
  • libopenblas.dll:来自openblas
  • libgcc_s_seh-1.dll:来自mingw64
  • libgfortran-5.dll:来自mingw64
  • libquadmath-0.dll:来自mingw64
  • libwinpthread-1.dll:来自mingw64
  • opencv_world470.dll:来自opencv
  • cudnn64_8.dll:来自cudnn

配置MXNET_LIBRARY_PATH 环境变量指向 libmxnet.dll
然后执行安装 pip install ./python

6.测试

import mxnet as mx
print(1)
a = mx.nd.ones((2, 3), mx.gpu(0))
print(a)
b = a * 2 + 1
print(b)
print(b.asnumpy())

得到在gpu 上分配的结果

1

[[1. 1. 1.]
 [1. 1. 1.]]
<NDArray 2x3 @gpu(0)>

[[3. 3. 3.]
 [3. 3. 3.]]
<NDArray 2x3 @gpu(0)>
[[3. 3. 3.]
 [3. 3. 3.]]

到此为止,使用cuda11.8 编译的兼容8.9架构的mxnet就可以使用了

<think>好的,用户现在想在Ubuntu 20.04上基于CUDA 11.8安装依赖项。我需要根据提供的引用和之前的回答来调整指南。首先,注意到用户之前的问题是关于安装CUDA 11.3和Apex,但现在他们需要CUDA 11.8,所以必须更新步骤。 首先,检查引用中的信息。引用[1]和[3]提到在Ubuntu 22.04安装CUDA 11.8,但用户需要的是Ubuntu 20.04。需要确认CUDA 11.8是否支持Ubuntu 20.04。根据NVIDIA的官方文档,CUDA 11.8支持Ubuntu 20.04,所以可以继续。 接下来,安装CUDA 11.8。用户之前的指南使用runfile安装,但引用[3]中的步骤也使用runfile。需要调整下载链接为适合Ubuntu 20.04的版本。官网可能提供不同版本的runfile,需要确认正确的下载URL。 然后,安装NVIDIA驱动。根据引用[2],用户提到安装535-server版本的驱动,但需要检查CUDA 11.8兼容的驱动版本。通常CUDA 11.8需要至少520版本的驱动,所以需要更新驱动安装步骤,可能使用apt仓库或runfile。 接下来是cuDNN的安装。引用[4]提到使用deb包安装cuDNN 8.9.7,但需要确认cuDNN版本是否与CUDA 11.8兼容。根据NVIDIA的兼容性列表,cuDNN 8.x支持CUDA 11.x,所以需要下载对应的cuDNN版本。 然后,安装Python环境和PyTorch。之前的回答使用conda环境,这里同样适用。需要指定PyTorch版本与CUDA 11.8兼容,例如PyTorch 2.0.x或更高,确保用户安装正确的cudatoolkit=11.8。 依赖项部分,之前的回答已经列出了一些系统依赖,但可能需要补充CUDA 11.8所需的额外依赖,例如gcc版本或其他库。需要检查CUDA 11.8的系统要求,可能要求gcc 910,而Ubuntu 20.04默认的gcc是9,所以可能没问题。 常见问题方面,用户可能会遇到驱动冲突或版本不兼容的问题。需要提供清理旧驱动和CUDA的方法,如使用apt purge或运行CUDA自带的卸载脚本。 最后,验证安装是否正确,包括检查nvcc版本、PyTorch是否能识别CUDA以及cuDNN是否正确安装。可能需要添加测试cuDNN的步骤,例如使用PyTorch的测试代码。 需要确保所有步骤在Ubuntu 20.04上可行,特别是驱动和CUDA安装方式。如果用户之前尝试过其他方法导致问题,可能需要提供替代方案,比如使用runfile安装驱动而不是apt。 总结步骤:安装驱动→安装CUDA 11.8安装cuDNN→设置环境变量→安装Python环境→验证。同时注意处理可能的依赖关系和冲突问题。</think>### 在 Ubuntu 20.04 上基于 CUDA 11.8 安装依赖项的完整指南 --- #### 一、安装 NVIDIA 驱动(兼容 CUDA 11.8) 根据引用[2]的提示,**推荐使用 535 版本专有驱动**(最低要求 520.61.05): ```bash # 添加专有驱动仓库 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 安装驱动(支持 CUDA 11.8 的最低版本) sudo apt install nvidia-driver-535 # 重启系统生效 sudo reboot ``` **验证安装**: ```bash nvidia-smi # 应显示 Driver Version: 535.xx.xx ``` --- #### 二、安装 CUDA 11.8(适配 Ubuntu 20.04) 根据引用[3][4],**使用官方 runfile 安装**: ```bash # 下载 CUDA 11.8 安装包 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run # 执行安装(需关闭图形界面) sudo systemctl isolate multi-user.target sudo sh cuda_11.8.0_520.61.05_linux.run ``` *安装选项:* 1. 取消勾选 `Driver`(已单独安装驱动) 2. 保留 `CUDA Toolkit 11.8` 和 `Samples` 3. 设置安装路径为默认 `/usr/local/cuda-11.8` **配置环境变量**: ```bash echo &#39;export PATH=/usr/local/cuda-11.8/bin:$PATH&#39; >> ~/.bashrc echo &#39;export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH&#39; >> ~/.bashrc source ~/.bashrc ``` **验证安装**: ```bash nvcc --version # 应输出 release 11.8 ``` --- #### 三、安装 cuDNN 8.9.7(匹配 CUDA 11.8) 根据引用[4],**使用 deb 包安装**: ```bash # 下载 cuDNN 8.9.7(需 NVIDIA 开发者账号) wget https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/11.x/cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb # 安装依赖 sudo apt install zlib1g # 安装 cuDNN sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.7.29/cudnn-local-*-keyring.gpg /usr/share/keyrings/ sudo apt update sudo apt install libcudnn8=8.9.7.29-1+cuda11.8 ``` **验证安装**: ```bash cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # 应显示 8.9.7 ``` --- #### 四、系统级依赖安装 ```bash # 开发工具链 sudo apt install -y build-essential cmake ninja-build sudo apt install -y libssl-dev zlib1g-dev libncurses5-dev # CUDA 编译依赖 sudo apt install -y libgl1-mesa-dev libx11-dev # 兼容性库 sudo apt install -y g++-9 gcc-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 ``` --- #### 五、Python 环境配置(基于引用[1]优化) ```bash # 安装 Miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda source ~/miniconda/bin/activate # 创建隔离环境 conda create -n cuda118 python=3.10 -y conda activate cuda118 # 安装 PyTorch 2.0.1(支持 CUDA 11.8) conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia ``` --- #### 六、关键验证测试 1. **CUDA 可用性验证**: ```python import torch print(torch.cuda.is_available()) # 应返回 True print(torch.version.cuda) # 应显示 11.8 ``` 2. **cuDNN 功能验证**: ```python from torch.backends import cudnn print(cudnn.is_available()) # 应返回 True ``` --- #### 七、常见问题解决方案 1. **驱动版本冲突**: - 症状:`Failed to initialize NVML: Driver/library version mismatch` - 方案:彻底清除旧驱动: ```bash sudo apt purge nvidia-* sudo apt autoremove ``` 2. **CUDA 路径错误**: - 症状:`error while loading shared libraries: libcudart.so.11.8` - 方案:更新链接库缓存: ```bash sudo ldconfig /usr/local/cuda-11.8/lib64 ``` 3. **cuDNN 安装失败**: - 症状:`E: Unable to locate package libcudnn8` - 方案:手动安装 deb 包: ```bash sudo dpkg -i libcudnn8_8.9.7.29-1+cuda11.8_amd64.deb ``` --- ### 版本兼容对照表 | 组件 | 推荐版本 | 验证命令 | |------------|---------------|---------------------------| | NVIDIA驱动 | 535.xx.xx | `nvidia-smi` | | CUDA | 11.8 | `nvcc --version` | | cuDNN | 8.9.7 | `cat /usr/include/cudnn_version.h` | | PyTorch | 2.0.1 | `python -c "import torch; print(torch.__version__)"` | --- ### 相关问题 1. **如何在多版本 CUDA 之间切换?** *答*:通过更新软链接实现版本切换: ```bash sudo rm /usr/local/cuda sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda ``` 2. **CUDA 11.8 支持哪些深度学习框架?** *答*:支持 PyTorch ≥2.0、TensorFlow ≥2.11MXNet1.9.1[^3]。 3. **安装过程中出现`Unmet dependencies`错误如何处理?** *答*:尝试修复依赖关系: ```bash sudo apt --fix-broken install sudo apt update && sudo apt upgrade ``` [^1]: 《在 Ubuntu 22.04 上安装 CUDA 11.8 和 Anaconda,并配置环境变量》 [^2]: NVIDIA 驱动安装方法说明 [^3]: CUDA 与深度学习框架兼容性文档 [^4]: cuDNN 官方安装指南
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

afan_coding

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

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

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

打赏作者

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

抵扣说明:

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

余额充值