编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本

mmdetection3d,root,cuda · 浏览次数 : 0

小编点评

**安装 CUDA 驱动程序** 1. 下载你想要的 CUDA 版本的 CUDA Toolkit 的最新版本。您可以从 NVIDIA 的官方网站 (developer.nvidia.com) 上下载。 2. 在命令行中输入以下命令,其中 `11.3` 代表您下载的 CUDA Toolkit 版本: ```bash wget -c 11.3.0-windows10-x64-vnc.zip unzip 11.3.0-windows10-x64-vnc.zip ``` 3. 进入下载到的 CUDA Toolkit 路径,并运行以下命令: ```bash nvcc -V ``` **更改虚拟环境中默认的 nvcc 命令位置** 1. 退出当前虚拟环境。 2. 在虚拟环境中运行以下命令: ```bash conda activate <虚拟环境名称> ``` 3. 设置 `NVCC_HOME`、`LD_LIBRARY_PATH` 和 `PATH`环境变量以指向您的 CUDA Toolkit 安装路径。 **创建虚拟环境的 activate 和 deactivate 文件** 1. 创建一个名为 `activate.sh` 的文件,并在该文件中添加以下内容: ```bash # Set CUDA_HOME CUDA_HOME=/path/to/cuda/cuda-11.3 # Set LD_LIBRARY_PATH LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH # Set PATH PATH=$CUDA_HOME/bin:$PATH ``` 2. 创建一个名为 `deactivate.sh` 的文件,并在该文件中添加以下内容: ```bash # Restore original CUDA_HOME, LD_LIBRARY_PATH and PATH CUDA_HOME=$ORIGINALS_CUDA_HOME LD_LIBRARY_PATH=$ORIGINALS_LD_LIBRARY_PATH PATH=$ORIGINALS_PATH # Remove the activate and deactivate scripts from the environment rm -rf /home/user/.conda/envs/<虚拟环境名称>/etc/conda/activate.d rm -rf /home/user/.conda/envs/<虚拟环境名称>/etc/conda/deactivate.d ``` 3. 在 `activate.sh` 和 `deactivate.sh` 文件中,分别设置 `CUDA_HOME`、`LD_LIBRARY_PATH` 和 `PATH`环境变量。 **安装 cuDNN** 1. 从 NVIDIA 的官方网站下载 CUDA cuDNN 库。 2. 将 cuDNN 的压缩文件解压缩到一个 temp 文件夹中。 3. 在 temp 文件夹中,执行以下命令: ```bash tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz -C ./temp/ ``` 4. 将 libcudnn 和 include 文件复制到您的 CUDA Toolkit 的 `include` 和 `lib64` 文件夹中。 5. 重新启动虚拟环境。

正文

在跑一些深度学习代码的时候,如果需要使用mmdetection3d框架,下载的pytorch的cudatoolkit最好需要和本机的cuda版本是一样的,即输入nvcc -V命令后显示的版本一样。

但是如果是在学校里,一般是服务器管理员装的cuda驱动是啥版本,cudatoolkit就是啥版本,且非root用户改变不了。

但是有非root用户也能为自己用户下的虚拟环境更改cudatoolkit版本的操作。

本文是实现进入该虚拟环境后便切换成该环境下专属的cudatoolkit版本的教程。

一、装好CUDA

首先去下面链接中下载你想要的版本的cuda:

https://developer.nvidia.com/cuda-toolkit-archive

以11.3为例,那么就是这样:

在命令行中输入该wget指令

然后下载的时候,Driver要取消勾选

因为没有root权限,所以要进入Options,然后更改toolkit的安装位置,然后比如下载到/home/username/cuda/cuda-11.3 (要自己在cuda文件夹内新建一个cuda-11.3)

username替换为自己的用户名,cuda-11.3视版本更改。

2 更改虚拟环境中默认的nvcc命令指向的位置

首先要知道虚拟环境的配置文件都放在哪儿:

conda activate 虚拟环境名
echo ${CONDA_PREFIX}

假设得到的是:/home/username/.conda/envs/CRN,在本文示例中

然后然后conda deactivate 退出虚拟环境(重要!)

使用以下命令创建脚本(注意用上面找到的路径替换下面的,下面的是在本文具体情况下的示例)

//创建文件夹
mkdir -p /home/username/.conda/envs/CRN/etc/conda/activate.d
//新写一个虚拟环境启动的时候的脚本
vi /home/username/.conda/envs/CRN/etc/conda/activate.d/activate.sh

往脚本中写入(注意替换username与版本号)

ORIGINAL_CUDA_HOME=$CUDA_HOME
ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
ORIGINAL_PATH=$PATH
export CUDA_HOME=/home/username/cuda/cuda-11.3
export PATH=/home/username/cuda/cuda-11.3/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

然后就是编写退出虚拟环境时的脚本:

mkdir -p /home/username/.conda/envs/CRN/etc/conda/deactivate.d
vi /home/username/.conda/envs/CRN/etc/conda/deactivate.d/deactivate.sh

往里写入:

export CUDA_HOME=$ORIGINAL_CUDA_HOME
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH
export PATH=$ORIGINAL_PATH
unset ORIGINAL_CUDA_HOME
unset ORIGINAL_LD_LIBRARY_PATH
unset ORIGINAL_PATH

3 再安装一下cuDNN(给CUDA加速用的)

在链接中下载对应的cudnn

https://developer.nvidia.com/rdp/cudnn-archive

然后随便解压到某一个temp文件夹中,举例:

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz -C ./temp/

在该temp文件夹中:

cp ./include/cudnn* /home/username/cuda/cuda-11.3/include
cp ./lib/libcudnn* /home/username/cuda/cuda-11.3/lib64
chmod a+r /home/username/cuda/cuda-11.3/include/cudnn* /home/chen_shihang/cuda/cuda-11.7/lib64/libcudnn*

这样就可以了,最后conda activate CRN进入虚拟环境后,输入nvcc -V的时候显示的就是所需要的版本,就可以去编译mmdetection3d了。

参考博客:
https://blog.csdn.net/Mr__George/article/details/106984574

https://blog.csdn.net/zhaozebin666/article/details/129817030

与编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本相似的内容:

编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本

在跑一些深度学习代码的时候,如果需要使用mmdetection3d框架,下载的pytorch的cudatoolkit最好需要和本机的cuda版本是一样的,即输入nvcc -V命令后显示的版本一样。 但是如果是在学校里,一般是服务器管理员装的cuda驱动是啥版本,cudatoolkit就是啥版本,且非

【编译原理】第一二章课后习题(王原生第三版)

前言 课本: 编译原理(第三版)[王生原、董渊..等编著] 习题: 主要习题内容是第一章到第八章,具体内容如下表 章节 内容 链接 第一章 课后部分选择题 https://blog.csdn.net/Zchengjisihan/article/details/136243955 第二章 课后部分选择

编译打包rabbitmq然后一键部署的简单方法

摘要 之前总结过一版,但是感觉不太全面 想着本次能够将使用中遇到的问题总结一下. 所以本次是第二版 介质下载 rabbitmq 不区分介质的打包文件 rabbitmq-server-generic-unix-3.11.6.tar.xz 注意需要上官网.公司的网络无法下载.建议自行查找 erlang的

[转帖]编译安装Erlang+RabbitMQ

https://www.cnblogs.com/hellxz/ 楔子 由于国内信创越来越火,客户现场也开始使用国产操作系统替换CentOS之类的开源操作系统,最近做实施的同事找到我,说现场是ARM架构的操作系统编译安装RabbitMQ一直提示无法启动也没有日志文件生成,找过了好几个同事都没解决这才找

[转帖]GoAccess的简单处理

编译安装 安装 GoAccess 非常的容易。只需要下载、解压以及编译就好了: $ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./confi

[转帖]编译实战 | 手摸手教你在Windows环境下运行Redis6.x

原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 哈喽大家好啊,我是没事就愿意瞎捣鼓的Hydra。 不知道有没有小伙伴像我一样,平常开发中用的是windows操作系统,有时候想装点什么软件,一看只支持linux系统,无奈要么启动虚拟机、要么装在云服务器上。 这不前几天又是这样,刚想用一下Red

[转帖]第53篇-编译线程的初始化

专注虚拟机与编译器研究 https://www.cnblogs.com/mazhimazhi/p/15796256.html 即时编译(Just In Time,JIT)的运行模式有两种:client模式(C1编译器)和server模式(C2编译器)。这两种模式采用的编译器是不一样的,client模

[转帖]编译升级openssl和openssh版本脚步

https://www.cnblogs.com/zhangb8042/p/15800738.html #!/bin/bash build_dir=/data/project_build openssl_download=https://www.openssl.org/source/openssl-1

[转帖]编译安装goofys挂载Scaleway免费75G对象存储

日常•2022年5月29日 goofys编译 goofys是一个开源的使用Go编写的s3存储桶挂载工具,主打高性能。由于使用Go编写,没有用到什么特别的依赖,自己编译也很容易。截止2022.5.27,官方github仓库貌似一直有提交,但是提供的预编译安装包貌似只到2020年4月,而且只有x86版本

【译】Apache Kafka 快速入门

编译自官方文档。 第 1 步:获取 Kafka 下载最新版本(当前为 v3.3.1)的 Kafka 并解压: $ tar -xzf kafka_2.13-3.3.1.tgz $ cd kafka_2.13-3.3.1 第 2 步:启动 Kafka 环境 注意:本地环境必须安装了 Java 8+。 A