热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多版本CUDA共存与即时切换方案

本文探讨了在同一台机器上安装并管理多个CUDA版本的方法,以适应不同软件或项目的需求。特别是在使用旧版PyTorch等依赖特定CUDA版本的软件时,该方法尤为实用。

多版本CUDA共存与即时切换方案

背景介绍:在进行某些实验时,可能遇到需要使用较旧版本的PyTorch或其他软件的情况,这些软件可能只支持特定版本的CUDA。因此,探索如何在同一台机器上安装并即时切换多个CUDA版本变得尤为重要。本文将记录这一过程,并分享一些注意事项。

提示:若可以通过修改代码来达到兼容目的,则尽量避免更改环境设置,因为环境配置往往较为复杂,且可能需要管理员权限,存在一定的安全风险。

准备工作及资源获取

  • 检查操作系统信息:使用命令cat /proc/version
  • 确定所需安装的CUDA版本。
  • 确定需配合使用的PyTorch版本。
  • 访问CUDA官方网站获取下载链接。
  • PyTorch的安装可以通过Anaconda环境管理器使用pip或conda命令完成,也可提前从官网下载相应版本。

新CUDA版本的安装

前提条件:假设您的系统中已安装了一个CUDA版本。如果尚未安装CUDA,请参考其他教程先行安装。本文主要针对已有CUDA环境下新增版本的情况。

  • 重要提示:安装新CUDA版本不会覆盖现有版本。为了实现全局范围内的版本切换,通常需要修改/usr/local目录下的CUDA符号链接。然而,考虑到服务器可能有多个用户同时使用,建议通过个人用户配置文件(如.bashrc)或在shell会话中临时指定CUDA版本来实现版本切换,以减少对其他用户的影响。

安装步骤

  • 在下载好的CUDA安装包所在目录,以root权限运行安装脚本(如需增加执行权限,可使用chmod +x cudaxxx.run)。
  • 阅读并接受许可协议。
  • 选择安装组件时,仅勾选“ToolKit”和“Documentation”,忽略驱动程序安装(已有CUDA版本的情况下)。
  • 在安装选项中,取消创建符号链接的选项,以免影响全局CUDA版本设置。同时,可根据需要调整安装路径。
  • 完成上述配置后,继续安装过程直至结束。
  • 安装完成后,通过nvcc -V检查当前CUDA版本是否仍为旧版本,确保未被新版本覆盖。

即时切换CUDA版本

当前,系统中应已存在两个CUDA版本,但默认使用的仍是最初安装的那个版本。接下来,我们将介绍如何实现即时版本切换,同时不影响其他用户。

  • 基本原理:通过临时修改当前用户的环境变量,使终端指向新的CUDA位置,从而实现版本切换。此操作仅限于当前终端会话,不会影响其他用户或终端。

切换步骤

  • 使用echo $PATHprintenv | grep cuda查看当前CUDA相关环境变量。
  • 通过export命令动态修改环境变量,例如:export CUDA_HOME=/usr/local/cuda-10.2; export PATH=$CUDA_HOME/bin:$PATH; export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
  • 验证CUDA版本是否已成功切换至目标版本。
  • 为简化操作,可将上述命令封装成shell脚本,并通过source script.sh方式执行,确保环境变量在当前shell会话中生效。

参考资料

更多详细信息请参阅:CSDN博客1CSDN博客2


推荐阅读
  • 下面根据配置文件,来说明一些底层与webservices的关系:回顾一下servlet的映射模式。我们知道,servlet是从javax.servlet.http.HttpServ ... [详细]
  • 使用Python轻松合并大量复杂Excel文件
    当面对大量的Excel文件时,如何高效地将它们合并成一个文件成为了一项挑战。本文将指导初学者如何利用Python的几个库,在几十行代码内完成这一任务。 ... [详细]
  • scrapyredis分布式爬虫 ... [详细]
  • 本文详细介绍了Python的multiprocessing模块,该模块不仅支持本地并发操作,还支持远程操作。通过使用multiprocessing模块,开发者可以利用多核处理器的优势,提高程序的执行效率。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文介绍了如何通过自定义View中的declare-styleable属性创建枚举类型,并在代码中访问这些枚举值的方法。 ... [详细]
  • 本文汇集了使用C#中不同HTTP客户端向Web API上传文件的实例,旨在为开发者提供实用的技术指南。 ... [详细]
  • 本文详细介绍了在PHP中如何创建新文件以及如何使自定义函数在整个项目中全局可用的方法,包括最新的实践技巧。 ... [详细]
  • 本文介绍了在一卡通项目中设计加密管理方案时,证书服务器的配置步骤及其在用户权限控制中的应用。首先概述了证书服务器的基本设置,包括操作系统的选择和证书服务的安装,随后详细描述了服务器证书及客户端证书的创建过程。 ... [详细]
  • CGroups: 资源管理和控制
    CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ... [详细]
  • Python3兼容性提升:Robot Framework与RIDE的最新进展
    本文介绍了Robot Framework,一个基于Python的自动化测试框架,以及其配套IDE RIDE的最新更新。随着Python3的广泛采用,RIDE终于实现了对Python3的支持,这为Robot Framework的用户带来了福音。 ... [详细]
  • 使用Gulp进行前端资源压缩
    本文探讨了如何利用Gulp这一强大的自动化构建工具,通过集成各种第三方插件来实现JavaScript、CSS和HTML等前端资源的高效压缩,以提升网站性能。 ... [详细]
  • 本文档详细描述了在Windows 7环境下使用Python 2.7和Git进行mavlink协议移植时遇到的问题及解决方案,包括pip3的环境配置与使用。 ... [详细]
  • 本文详细探讨了在Python开发中遇到的ImportError: 无法找到名为Crypto.Cipher的模块的问题,并提供了多种解决方案,包括环境配置、库安装和代码调整等方法。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
author-avatar
少年奇趣视频
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有