编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本
在跑一些深度学习代码的时候,如果需要使用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了。
编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本的更多相关文章
- gcc 4.9 编译安装 in Ubuntu 18.04(主要用于在无root权限下,进行更新系统 gcc 版本)
gcc 4.9 编译安装教程,因为项目编译过程中,需要采用特定的gcc版本来进行编译,所以进行简要记录,进行备忘: 下载:curl -O -L https://mirrors.tuna.tsinghu ...
- MySQL5.7.20 二进制包无ROOT权限下安装, 滴滴云服务器
01, 下载安装包 => https://dev.mysql.com/downloads/mysql/ 02, 上传到linux系统, 笔者这里使用的 滴滴云服务器 安装在 home/dc2- ...
- 非[无]root权限 服务器 下安装perl以及perl模块--转载
转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...
- 非[无]root权限 服务器 下安装perl以及perl模块
转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...
- 8、非root权限下安装perl以及perl模块
转载:http://www.cnblogs.com/nkwy2012/p/6418669.html 转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无roo ...
- Linux下在root权限下临时使用其它用户运行命令
一.简述 当我们在使用Linux时,经常需要在root权限下执行某些命令,或者在/etc/rc.d/rc.local中写一些角本.而如果某些角本必须使用非root用户时,直接su是不行的,比如Elas ...
- Debian下无root权限使用Python访问Oracle
这篇文章的起因是,在公司的服务器上没有root权限,但是需要使用 Python 访问 Oracle,而不管是使用 pip 安装组件还是安装 Oracle 的 client,都需要相应权限.本文即解决该 ...
- python 安装 easy_intall 和 pip python无root权限安装
http://www.cnblogs.com/haython/p/3970426.html easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安装e ...
- 无root权限安装python
http://lujialong.com/?p=150 pipe 安装第三方包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip http://www.cn ...
- Android 上实现非root的 Traceroute -- 非Root权限下移植可运行二进制文件 脚本文件
作者 : 万境绝尘 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/36438365 演示样例代码下载 : -- CSDN : h ...
随机推荐
- 技术传递温度,HMS Core手语服务走进暖心课堂
近日,华为HMS Core手语服务携手吉林大学.长春大学特教学院联合打造暖心课堂,在直播网课中加入AI手语翻译,于人文中融入科技,知识中融入温暖. 手语翻译:同学们大家好 HMS Core手语服务通过 ...
- HarmonyOS语言基础类库开发指南上线啦!
语言基础类库提供哪些功能?多线程并发如何实现?TaskPool(任务池)和Worker在实现和使用场景上有何不同? 针对开发者关注的并发等语言基础类库的相关能力,我们在新推出的语言基础类库开发指南 ...
- 第十五篇:JavaScript 之 Dom操作
一.后台管理页面布局 主站布局 <div class="pg-header"></div> <div style="width:980px; ...
- HTML基础之input系列
<form action=""> <div> 用户名:<input type="text" name="user&quo ...
- 动态规划(二)——背包dp
01背包问题(每个物品最多选一次) AcWing 2. 0/1背包问题 朴素の版本: #include <bits/stdc++.h> using namespace std; const ...
- HTC vive开发:关于手柄按键对接控制
一.关于左右手柄的对应关系 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个) 在场景 ...
- redis 简单整理——redis 准备篇[一]
前言 简单整理一下redis. 正文 为什么使用redis? 速度快 1.1 内存执行 1.2 c语言编写,速度相对快一些 1.3 单线程,比较符合这种存储模式 2 丰富的数据结构 3 丰富的功能机制 ...
- mysql 重新整理——配置文件[一]
前言 对mysql 进行从新整理一下,仅做参考,如有任何不对望指出. 正文 mysql 一般分windows和linux,但是他们的运行配置其实是一样的,所以在此不做区分. 直接上一个大体的图: 我个 ...
- 什么是ip协议一
前言 两节结束,为网络底层系列做铺垫. 首先来看一张图: IOS有七层,但是我们可以简化层4层,ip属于传输层,可以说是非常重要,下面简单的做一个介绍. 正文 ip的介绍: 1.ip是tcp/ip 协 ...
- django中对模型字段名的限制
Django 对模型的字段名有一些限制: 一个字段的名称不能是 Python 保留字,因为这会导致 Python 语法错误.比如: class Example(models.Model): pass ...