如何使用 os.environ['CUDA_VISIBLE_DEVICES'] = " " 将 GPU 计数设置为 0 ?



所以我在系统中配置了以下GPU:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 461.33       Driver Version: 461.33       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100S-PCI...  TCC  | 00000000:3B:00.0 Off |                    0 |
| N/A   30C    P0    25W / 250W |      1MiB / 32642MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100S-PCI...  TCC  | 00000000:D8:00.0 Off |                    0 |
| N/A   31C    P0    25W / 250W |      1MiB / 32642MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

现在,通过python,我必须设置环境,这样,GPU计数=0。在从各种来源学习后,我尝试了以下方法:

import os
os.environ["CUDA_VISIBLE_DEVICES"]=""
import torch
torch.device_count()

但是,它仍然将输出作为";2〃;如系统中的2个GPU。如何设置环境,使其输出";0〃?

以任何其它方式,将计数设置为"0";0";也值得赞赏,但它应该是任何ML库的不可知论者。(例如,我不能使用device = torch.device("cpu"),因为这只适用于Pytorch,而不适用于其他库(

要防止GPU被使用,请设置os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

最简单的方法是使用正确的环境集运行python。例如,在Linux 上

CUDA_VISIBLE_DEVICES="" python ...

以下也应该起作用:

os.environ["CUDA_VISIBLE_DEVICES"]=""

但这必须在首次导入torch之前完成。

我认为在您的案例中发生的情况是,您必须更早地导入torch,可能是通过一些使用torch的库间接导入的。

os.environ["CUDA_VISIBLE_DEVICES"]="-1"

应该设置为不使用GPU。从…起https://sodocumentation.net/tensorflow/topic/10621/tensorflow-gpu-setup#run-仅在cpu上使用tensorflow--使用--cuda可见设备--环境变量-

os.environment["CUDA_VISIBLE_DEVICES"]=";0,1">
torch.cuda.device_count((#结果为2

os.environg["CUDA_VISIBLE_DEVICES"]=";0">
torc.cuda.device_count((#结果为1,使用第一个GPU

os.environg["CUDA_VISIBLE_DEVICES"]=";1〃
torc.cuda.device_count((#结果为1,使用第二个GPU

最新更新