在跑一些深度学习代码的时候,如果需要使用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版本的更多相关文章

  1. gcc 4.9 编译安装 in Ubuntu 18.04(主要用于在无root权限下,进行更新系统 gcc 版本)

    gcc 4.9 编译安装教程,因为项目编译过程中,需要采用特定的gcc版本来进行编译,所以进行简要记录,进行备忘: 下载:curl -O -L https://mirrors.tuna.tsinghu ...

  2. MySQL5.7.20 二进制包无ROOT权限下安装, 滴滴云服务器

    01, 下载安装包 =>  https://dev.mysql.com/downloads/mysql/ 02, 上传到linux系统, 笔者这里使用的 滴滴云服务器 安装在 home/dc2- ...

  3. 非[无]root权限 服务器 下安装perl以及perl模块--转载

    转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...

  4. 非[无]root权限 服务器 下安装perl以及perl模块

    转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...

  5. 8、非root权限下安装perl以及perl模块

    转载:http://www.cnblogs.com/nkwy2012/p/6418669.html 转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无roo ...

  6. Linux下在root权限下临时使用其它用户运行命令

    一.简述 当我们在使用Linux时,经常需要在root权限下执行某些命令,或者在/etc/rc.d/rc.local中写一些角本.而如果某些角本必须使用非root用户时,直接su是不行的,比如Elas ...

  7. Debian下无root权限使用Python访问Oracle

    这篇文章的起因是,在公司的服务器上没有root权限,但是需要使用 Python 访问 Oracle,而不管是使用 pip 安装组件还是安装 Oracle 的 client,都需要相应权限.本文即解决该 ...

  8. python 安装 easy_intall 和 pip python无root权限安装

    http://www.cnblogs.com/haython/p/3970426.html easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安装e ...

  9. 无root权限安装python

    http://lujialong.com/?p=150 pipe 安装第三方包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip http://www.cn ...

  10. Android 上实现非root的 Traceroute -- 非Root权限下移植可运行二进制文件 脚本文件

    作者 : 万境绝尘 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/36438365 演示样例代码下载 : -- CSDN : h ...

随机推荐

  1. OpenHarmony轻松玩转GIF数据渲染

    OpenAtom OpenHarmony(以下简称"OpenHarmony")提供了Image组件支持GIF动图的播放,但是缺乏扩展能力,不支持播放控制等.今天介绍一款三方库--o ...

  2. C语言简易万年历带注释

    同学问的课后作业,顺便加了写注释. #include<stdio.h> /* * 注意 每周的第一天是星期天 */ int main() { int day_per_mo[12] = { ...

  3. C 语言函数:入门指南

    C 语言中的函数声明和定义 您可以通过以下方式创建并调用函数: // 创建一个函数 void myFunction() { printf("我刚被执行了!"); } int mai ...

  4. Python 函数:定义、调用、参数、递归和 Lambda 函数详解

    函数是一段代码块,只有在调用时才会运行.您可以将数据(称为参数)传递给函数. 函数可以返回数据作为结果. 创建函数 在Python中,使用def关键字定义函数: 示例 def my_function( ...

  5. RabbitMQ 11 死信队列

    死信队列 概述 消息队列中的数据,如果迟迟没有消费者来处理,就会一直占用消息队列的空间. 比如抢车票的场景,用户下单高铁票之后,会进行抢座,然后再进行付款,但是如果用户下单之后并没有及时的付款,这张票 ...

  6. HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

    随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...

  7. vue3 快速入门系列 —— vue3 路由

    vue3 快速入门系列 - vue3 路由 在vue3 基础上加入路由. vue3 需要使用 vue-router V4,相对于 v3,大部分的 Vue Router API 都没有变化. Tip:不 ...

  8. MogDB/openGauss数据库package关键字的两种用法

    MogDB/openGauss 数据库 package 关键字的两种用法 本文出处:https://www.modb.pro/db/237701 package 关键字在 MogDB 数据库里有两种用 ...

  9. Native Drawing开发指导,实现HarmonyOS基本图形和字体的绘制

      场景介绍 Native Drawing模块提供了一系列的接口用于基本图形和字体的绘制.常见的应用场景举例: ● 2D图形绘制. ● 文本绘制. 接口说明 接口名 描述 OH_Drawing_Bit ...

  10. 使用 Docker 部署 instantbox 轻量级 Linux 系统

    1)instantbox 介绍 GitHub:https://github.com/instantbox/instantbox instantbox 是一款非常实用的项目,它能够让你在几秒内启动一个主 ...