首页 > 其他分享 >单台机器上安装多个cuda&即时切换功能实现小记

单台机器上安装多个cuda&即时切换功能实现小记

时间:2022-11-24 13:12:56浏览次数:68  
标签:安装 单台 cuda usr 版本 执行 local 小记

单台机器上安装多个cuda&即时切换功能实现小记

写在前面:最近做实验需要用到老版本的pytorch,新的cuda不支持,所以寻思着能不能安装多个版本的cuda,之前有看过相应的帖子,应该是有解决办法,在此记录下解决过程以及注意事项

另:如果能通过改代码的方式兼容就别更改环境,毕竟环境很麻烦,有时候需要用的管理员权限,还是有一定风险

准备&资源网站

  • 确认自己的系统信息cat /proc/version
  • 确认需要下载的cuda版本
  • 确认需要使用的pytorch版本
  • cuda下载地址在这儿
  • torch下载地址在这儿
  • 先行下载好相应的cuda版本;torch可以选择创建anaconda虚拟环境后使用pip或者conda命令安装,如果不愿意换源也可以在上述地址先行下好轮子备用

开始安装新CUDA

写在前面:安装的时候机器上应该有一个版本的cuda,如果没有cuda,请参照别的教程,本记录针对已有cuda安装新cuda的情况

  • 注意事项:新有的cuda不会覆盖原有的cuda,如果要在全局实现切换,需要改动/usr/local里的cuda软链接,这个软链接制定这当前使用的cuda目录,而全局环境变量里使用的也是这个软链接,但是并不推荐这种操作,因为服务器有很多用户使用,每个用户使用需求不同,针对此问题,应该在个人用户的.bashrc文件中更改指定cuda版本,或者使用export命令在shell窗口临时指定cuda版本(这种方法会在窗口关闭后失效,不会影响其他用户或者shell终端)

步骤

  • 在下载下来的cudaxxx.run目录下使用root权限执行.run文件(如果没有权限可以使用chmod添加权限-->只需要添加当前root或者有管理员权限用户的执行权限)

  • 在此界面输入accept,表示同意协议

  • 再次界面只选择ToolKit和Documentation,其余都不选

    • 其中Driver是指驱动,因为已经有cuda,所以不需要安装驱动
    • 注意事项:X代表选中,空代表不选,操作命令下面一行有说
  • 然后在上面的界面,将选项移动到cuda Toolkit,然后按a,进入内部选项,也就是这个页面,将create symbolic link字样的选项去掉,这个是创建软链接,因为我们已经有了一个cuda,所以暂时不需要更新/usr/local下的软链接(如果更改了,全局的都会变);另外shortcut也取消掉,不需要快捷方式

    • 注意:这里可以更改Toolkit的安装路径,按自己需要更改,我这里没改
  • 然后返回上一层界面,执行install(done选项表示当前操作完成,返回上一层)

  • 安装完成

  • 这个时候执行nvcc -V命令还是显示之前的CUDA版本(说明软链接没有覆盖);执行ll /usr/local命令可以看到文件夹下多了一个10.2的cuda

实时切换cuda版本

写在前面:这个时候机器上应该有两个版本的cuda了,但是直接使用用到的还是最初的那个cuda,下面记录下如何即时切换版本而不影响其他用户

  • 原理:临时更改当前用户的环境变量,让终端能够找到新的cuda所在地,作用范围仅限当前终端,其余终端或者用户不受影响

步骤

  • 执行export -p | grep cuda查看cuda相关的环境变量

  • 然后使用export命令更改相关变量(可以看到nvcc显示的cuda已经变成10.2了)

  • 此时其他终端则不受影响,使用的还是之前的cuda版本

  • 命令记录(可以封装进.sh脚本中执行,这样就不用每次手动敲了,但是需要注意的是,执行.文件时得用source命令,而不能直接执行)

    export CUDA_HOME="/usr/local/cuda-10.2
    export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64"
    export PATH="/home/wanli/anaconda3/bin:/home/wanli/anaconda3/condabin:/usr/local/cuda-10.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
    
    • 解释:source执行是将.sh文件内部命令提到当前shell中执行,而直接执行就是在文件中执行,相当于局部变量,执行完就释放了,所以可以观察到,source执行后当前临时环境变量会改变,而直接执行不会

ref

https://blog.csdn.net/hizengbiao/article/details/88625044

https://blog.csdn.net/qq_41917697/article/details/114437924

标签:安装,单台,cuda,usr,版本,执行,local,小记
From: https://www.cnblogs.com/lavender-pansy/p/16921532.html

相关文章

  • 封校小记
    翻相册之时发现封校已然一月整,困于宿舍的无趣生活不免催生摆烂心态,各ddl重压下的情形下反而更加有记一记近日生活的欲望,本想压一压等周末把作业高差不多再写,不过“ddl只会......
  • 安装Vivado小记
    Vivado简介CAD:ComputerAidedDesignCAE:ComputerAidedEngineeringEDA:ElectronicDesignAutomation(Verilog)ESL:ElectronicSystemLevel(VivadoHLS,Sys......
  • CUDA中threadIdx、blockIdx、blockDim和gridDim的全称以及使用
    threadIdx是threadindex线程索引缩写blockIdx是blockindex块索引缩写blockDim是block dimension块维度缩写gridDim是grid dimension网格纬度缩写使用可参考cud......
  • 从头开始进行CUDA编程:流和事件
    流(Streams)当我们启动内核(函数)时,它会在GPU中排队等待执行,GPU会顺序按照启动时间执行我们的内核。设备中启动的许多任务可能依赖于之前的任务,所以“将它们放在同一个队......
  • CLion调试经验小记
    Clion的调试是按照开始调试前的行号进行的。这就是说,当你在调试时修改代码时,有可能出现断点对不上、数据与显示的已执行逻辑不一致等问题。这与VS不同,VS要么不支持修改后......
  • 分拆数小记
    前言感觉大家应该都很早接触过分拆数这个逆天东西,因为形式比较灵活多变啊。感觉初赛就有几个这样的题。当然在分拆数以外还有一些划分数相关的小内容。基础内容以下问......
  • 11.19小记
    上午参加洛谷模拟赛,想了3hT1仍不会正解,想着打个暴力拿80,没想到数组开小只有60,开大之后就100了下午参加端点星,T1一眼,T2写了个nklog,没开O2只有30,T3少看条件认为不可做就溜去......
  • cuda11镜像
    目录pullgputf使用镜像测试是否使用的gpupulldockerpullnvidia/cuda:11.2.0-cudnn8-devel-ubi7dockertagnvidia/cuda:11.2.0-cudnn8-devel-ubi7registry.cn-......
  • 语言基础小记
    1.C#支持哪几个预定义的值类型?值类型:简单类型(整型、布尔型、字符型、浮点型、小数型)       结构类型       枚举类型(byte、bool、int、f......
  • ubuntu双系统+NVIDIA+cuda驱动安装+bios grub一条龙踩坑
    目录ubuntu双系统+NVIDIA+cuda驱动+grub一条龙踩坑ubuntu+windows双系统时间设置修改启动时默认进入的系统ubuntu内部NVIDIA驱动+cuda系统启动时和安装cuda时可能遇到的坑u......