首页 > 其他分享 >CUDA_VISIBLE_DEVICES

CUDA_VISIBLE_DEVICES

时间:2025-01-09 19:05:42浏览次数:3  
标签:bashrc 应用程序 VISIBLE DEVICES CUDA GPU

CUDA_VISIBLE_DEVICES

flyfish

CUDA_VISIBLE_DEVICES 是一个环境变量,它用于控制哪些 GPU 设备对 CUDA 应用程序可见。通过设置这个环境变量,可以指定应用程序可以使用的特定 GPU,而忽略其他。

当你在命令行中使用 export CUDA_VISIBLE_DEVICES=0,1,2,3 或者 export CUDA_VISIBLE_DEVICES=0,3 时,你实际上是在告诉CUDA应用程序哪些GPU设备是可见的。这个环境变量的作用范围取决于你在什么地方设置了它。

示例

情景一:设置为 0,1,2,3
export CUDA_VISIBLE_DEVICES=0,1,2,3
  • 含义:这行命令使得编号为0、1、2和3的GPU对随后启动的所有CUDA应用程序可见。
  • 效果:如果系统中有4个或更多GPU,并且运行了一个CUDA程序(比如一个深度学习训练脚本),那么该程序将只能看到并使用这些编号的GPU。这意味着即使你的系统中有其他GPU,它们也不会被此CUDA程序使用。
情景二:设置为 0,3
export CUDA_VISIBLE_DEVICES=0,3
  • 含义:这行命令使得只有编号为0和3的GPU对随后启动的所有CUDA应用程序可见。
  • 效果:同样的,任何CUDA应用程序现在只能访问这两个指定的GPU。值得注意的是,尽管在物理上GPU可能位于位置1和2,但一旦设置了 CUDA_VISIBLE_DEVICES=0,3,CUDA应用程序会认为它有两个GPU可用,分别是编号0和1,其中编号0对应实际的GPU 0,而新的编号1对应实际的GPU 3。

实际应用示例

假设你有一个机器学习模型训练任务想要在两块特定的GPU上运行,你可以这样做:

# 在开始训练之前设置可见的GPU
export CUDA_VISIBLE_DEVICES=0,3

# 然后运行你的训练脚本
python train_model.py

在这个例子中,train_model.py 脚本将只能看到并且能够利用编号为0和3的GPU进行计算。

概念

  • 逻辑索引与物理索引的区别:当设置了 CUDA_VISIBLE_DEVICES 后,CUDA 应用程序将会根据你提供的索引来重新映射GPU。例如,在 CUDA_VISIBLE_DEVICES=0,3 的情况下,虽然实际的GPU是0号和3号,但在CUDA应用程序看来,它们变成了0号和1号GPU。这种重映射可以帮助管理多GPU系统的资源分配,避免不同进程之间的冲突。

设置永久生效

上面的例子展示了如何临时设置 CUDA_VISIBLE_DEVICES,即只影响当前shell会话中的后续命令。如果想设置永久生效,可以将这些命令添加到 .bashrc 文件中。

.bashrc 是 Bash shell 的一个配置文件,它通常位于用户主目录下(即 ~/.bashrc)。这个文件包含了当启动一个新的非登录交互式 Bash shell 时会自动执行的命令。也就是说,每次打开一个新的终端窗口或标签页时,如果你使用的是 Bash shell,那么 .bashrc 文件中的命令就会被执行。

.bashrc 文件中可以定义和设置各种各样的环境变量、别名(aliases)、函数以及自定义提示符等。这使得可以个性化你的shell体验,添加常用的命令缩写,或者设定特定于用户的环境配置。

如何编辑和应用 .bashrc

  1. 编辑

    • 使用喜欢的文本编辑器来编辑 .bashrc 文件。例如,使用 nano 编辑器,可以运行以下命令:
      nano ~/.bashrc
      
    • .bashrc 文件中添加或修改你需要的内容。比如,如果想添加一个新的别名,你可以这样写:
      alias ll='ls -la'
      
  2. 重新加载

    • 完成编辑后,保存文件并退出编辑器。
    • 为了让新的更改生效,需要重新加载 .bashrc 文件。可以通过运行以下命令来做到这一点:
      source ~/.bashrc
      
      或者更简洁地使用:
      . ~/.bashrc
      
  3. 验证更改

    • 你可以通过尝试新设置的功能来验证它们是否正确工作。例如,如果你添加了一个别名,现在应该可以在终端中使用它了。
  4. 永久性

    • 因为 .bashrc 文件是在每次启动新的 Bash shell 时自动读取的,所以你在其中所做的任何更改都会成为永久性的,只要该文件没有被覆盖或删除。
  5. 注意事项

    • 确保不要破坏现有的配置。如果不确定如何做更改,最好先备份原始的 .bashrc 文件。
    • 如果你遇到问题,如命令行行为异常,可以检查最近对 .bashrc 的修改以排查问题。
  6. 与 CUDA_VISIBLE_DEVICES 结合使用

    • 如果你想让 CUDA_VISIBLE_DEVICES 的设置对于所有新的 Bash shell 永久有效,可以在 .bashrc 中添加一行来导出这个环境变量。例如,要使第0号GPU可见,可以添加如下行:
      export CUDA_VISIBLE_DEVICES=0
      

标签:bashrc,应用程序,VISIBLE,DEVICES,CUDA,GPU
From: https://blog.csdn.net/flyfish1986/article/details/145029065

相关文章

  • wx.getConnectedBluetoothDevices
    wx.getConnectedBluetoothDevices(Objectobject)基础库1.1.0开始支持,低版本需做兼容处理。以Promise风格调用:支持小程序插件:支持,需要小程序基础库版本不低于1.9.6微信鸿蒙OS版:支持相关文档:蓝牙介绍功能描述根据主服务UUID获取已连接的蓝牙设备。参数......
  • cuda profiler
    cudaapi的采样主要cudart提供了profiler的接口,定义在cuda_profiler_api.h文件中,下面的代码是一个例子。参考https://blog.csdn.net/weixin_43603658/article/details/130441136,可以看到使用cudaProfilerStart和cudaProfilerEnd可以查看程序中指定段的性能数据。nsys在这个基础......
  • GPU介绍之CUDA
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • cuda 中BYTE*
    在CUDA编程中,BYTE*通常指的是一个指向字节的指针。CUDA是NVIDIA的并行计算平台和编程模型,用于利用GPU的强大计算能力。BYTE一般是一个无符号字符类型(unsignedchar),用于表示原始数据或字节流。以下是一些与BYTE*相关的常见用法和注意事项:1.定义和初始化在CUDA中,你......
  • BOOST 结合 CUDA 的原理、操作及多领域应用
    摘要:本文深入探讨了BOOST库与CUDA技术相结合的具体操作方法、优势以及在诸多领域中的实际应用案例。首先介绍了BOOST和CUDA的基本概念与特点,随后详细阐述了两者结合的配置步骤、数据交互方式等操作细节,并且通过多个不同领域(如图像处理、机器学习、科学计算等)的具体应用......
  • 如何配置显卡cuda用来pytorch训练
    1、更新显卡驱动程序到最新版上英伟达官网https://www.nvidia.cn/drivers/lookup/现在,更新!2、查看显卡是否支持cuda。打开显卡控制面板。nvidia查看显卡的驱动程序版本,此处为566.36上官网https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查看对......
  • 高性能计算-CUDA单流多流控制
    1.介绍:(1)用CUDA计算pow(sin(id),2)+pow(cos(id),2)的结果(2)对比单流(同步传输、异步传输)、多流深度优先调度、多流广度优先调度的效率(包含数据传输和计算)核心代码1.用CUDA计算pow(sin(id),2)+pow(cos(id),2)的结果2.对比单流(同步传输、异步传输)、多流深度优......
  • cuda kernel启动的反汇编
    原始代码//Typeyourcodehere,orloadanexample.extern"C"__global__voidsquare(int*array,intn){inttid=blockDim.x*blockIdx.x+threadIdx.x;if(tid<n)array[tid]=array[tid]*array[tid];}voidsquare_do(int......
  • Linux服务器无Root权限安装Cuda方法及问题解决
    CUDA简介什么是CUDA?CUDA(ComputeUnifiedDeviceArchitecture)是由NVIDIA提供的一种并行计算平台和编程模型,用于加速计算密集型任务。CUDA允许开发者使用GPU的计算能力,通过并行处理来快速执行复杂的计算任务。CUDA包括以下主要组成部分:CUDAToolkit:为开发人员提供工......
  • 深度学习CUDA环境安装教程---动手学深度学习
    首先说明我安装的是《动手学深度学习》中的环境本人是小白,一次安装,可能有不对的地方,望包含。安装CUDA因为我们是深度学习,很多时候要用到gpu进行训练,所以我们需要一种方式加快训练速度。通俗地说,CUDA是一种协助“CPU任务分发+GPU并行处理”的编程模型/平台,用于加速GPU和CPU之......