所以我在系统中配置了以下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