CUDA_VISIBLE_DEVICES 使用指定的GPU组
在一机器多卡的机器中,我们可以指定使用某几台GPU,而剩下的GPU在程序中不会被使用。
例:选择特定的GPU组运行程序可在程序运行命令前,如【train.py】开头部分使用如下命令:
CUDA_VISIBLE_DEVICES=0
0为服务器中的GPU编号,可以为0, 1, 2, 3等,表明对该程序LInux服务器可见的GPU编号。
命令讲解
CUDA_VISIBLE_DEVICES=1
【代码注释】我们设置服务器中只有编号为1的GPU组对程序是可见的。
在程序中,系统会对我们刚才设置的GPU组进行重新编号,从【0】开始。当我们在程序中【device】位置设置成【GPU 0】 ,那么,我们就会使用原服务器中的编号为1的GPU。
CUDA_VISIBLE_DEVICES=2,1,4
【代码注释】我们设置服务器中只有编号为2、1、4三块GPU组成的GPU组对程序是可见的。
在程序中,系统会对我们刚才设置的GPU组进行重新编号,从【0】开始,一直到【2】结束。此时【0】对应的是原服务器中的编号为2的GPU,【1】对应的是原服务器中的编号为1的GPU,【2】对应的是原服务器中的编号为4的GPU。
当我们在程序中【device】位置设置成【GPU 1】,那么,我们就会使用原服务器中的编号为1的GPU。
【注意】系统给我们GPU组排列的顺序是从【0】开始,是对我们预先设置好的GPU组进行重排布。
本文介绍了如何使用CUDA_VISIBLE_DEVICES环境变量来指定多GPU环境中程序所使用的GPU。通过设置该变量,可以控制程序仅访问特定的GPU,例如只使用GPU编号1,或者选择2、1、4号GPU。在程序内部,这些GPU会被重编号为0开始的顺序。理解这一机制对于优化多GPU系统的资源利用至关重要。
3万+

被折叠的 条评论
为什么被折叠?



