如何验证GPU的使用情况?
How to verify the usage of the GPU?
如何验证 CNTK 是否正在使用 GPU?我已经在我的机器上安装了 CNTK-2-0-beta7-0-Windows-64bit-GPU-1bit-SGD 二进制文件。但是,当我尝试 运行 从 Python:
from cntk.device import set_default_device, gpu
set_default_device(gpu(0))
我得到:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-eca77b3090be> in <module>()
1 from cntk.device import set_default_device, gpu
----> 2 set_default_device(gpu(0))
C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py34\lib\site-packages\cntk\device.py in gpu(device_id)
74 :class:`~cntk.device.DeviceDescriptor`: GPU device descriptor
75 '''
---> 76 return cntk_py.DeviceDescriptor.gpu_device(device_id)
77
78 def use_default_device():
ValueError: Specified GPU device id (0) is invalid.
今天补充一些信息:
这是运行宁NVidia_smi.exe
的结果
C:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
Thu Jan 12 20:38:30 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 369.61 Driver Version: 369.61 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GPU WDDM | 0000:01:00.0 Off | N/A |
| N/A 51C P0 2W / N/A | 864MiB / 1024MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
在 Jupyter Notebook 中重启内核后,我得到:
import cntk as C
if C.device.default().type() == 0:
print('running on CPU')
else:
print('running on GPU')
running on CPU
然而今天我能够运行:
from cntk.device import set_default_device, gpu
set_default_device(gpu(0))
import cntk as C
if C.device.default().type() == 0:
print('running on CPU')
else:
print('running on GPU')
running on GPU
GPU 应该是 GPU 机器上的默认值,还是需要明确设置?
这听起来像是间歇性故障。这可能发生在某些笔记本电脑上,例如 Surface Book,它有两个 GPU,一个来自 NVIDIA,一个集成的,并且笔记本电脑关闭了 NVIDIA GPU 以节省能源,例如当电池 运行 时。
关于默认行为,默认情况下 CNTK 将选择最佳可用设备,如果它是 GPU,它将锁定它,因此其他进程无法使用它。如果您明确使用 set_default_device(gpu(0))
,则 GPU 不会被锁定,其他进程可以使用它。
如何验证 CNTK 是否正在使用 GPU?我已经在我的机器上安装了 CNTK-2-0-beta7-0-Windows-64bit-GPU-1bit-SGD 二进制文件。但是,当我尝试 运行 从 Python:
from cntk.device import set_default_device, gpu
set_default_device(gpu(0))
我得到:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-eca77b3090be> in <module>()
1 from cntk.device import set_default_device, gpu
----> 2 set_default_device(gpu(0))
C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py34\lib\site-packages\cntk\device.py in gpu(device_id)
74 :class:`~cntk.device.DeviceDescriptor`: GPU device descriptor
75 '''
---> 76 return cntk_py.DeviceDescriptor.gpu_device(device_id)
77
78 def use_default_device():
ValueError: Specified GPU device id (0) is invalid.
今天补充一些信息:
这是运行宁NVidia_smi.exe
的结果C:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
Thu Jan 12 20:38:30 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 369.61 Driver Version: 369.61 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GPU WDDM | 0000:01:00.0 Off | N/A |
| N/A 51C P0 2W / N/A | 864MiB / 1024MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
在 Jupyter Notebook 中重启内核后,我得到:
import cntk as C
if C.device.default().type() == 0:
print('running on CPU')
else:
print('running on GPU')
running on CPU
然而今天我能够运行:
from cntk.device import set_default_device, gpu
set_default_device(gpu(0))
import cntk as C
if C.device.default().type() == 0:
print('running on CPU')
else:
print('running on GPU')
running on GPU
GPU 应该是 GPU 机器上的默认值,还是需要明确设置?
这听起来像是间歇性故障。这可能发生在某些笔记本电脑上,例如 Surface Book,它有两个 GPU,一个来自 NVIDIA,一个集成的,并且笔记本电脑关闭了 NVIDIA GPU 以节省能源,例如当电池 运行 时。
关于默认行为,默认情况下 CNTK 将选择最佳可用设备,如果它是 GPU,它将锁定它,因此其他进程无法使用它。如果您明确使用 set_default_device(gpu(0))
,则 GPU 不会被锁定,其他进程可以使用它。