2017-01-12 3 views
3

Как я могу проверить, использует ли CNTK графический процессор? Я установил на моем компьютере бинарные файлы 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 я получаю:

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 машине, или вам нужно явно установить его?

+0

Какой у вас GPU? как Nvidia или Intel. –

+0

У меня есть графический процессор Nvidia. – OlavT

ответ

1

Это звучит как прерывистый сбой. Это может произойти на некоторых ноутбуках, таких как Surface Book, которые имеют два графических процессора, один из NVIDIA и один интегрированный, а ноутбук выключил графический процессор NVIDIA для экономии энергии, например. когда он работает от аккумулятора.

Что касается поведения по умолчанию, то по умолчанию CNTK выберет наилучшее доступное устройство, и если он будет GPU, он будет заблокировать его, чтобы ни один другой процесс не мог его использовать. Если вы явно используете set_default_device(gpu(0)), тогда GPU не будет заблокирован, и другие процессы смогут его использовать.

+0

Добавлена ​​дополнительная информация. – OlavT

+0

Да, я думаю, вы абсолютно правы, что проблема с графическим процессором - прерывистый провал. Я видел случаи, когда графический процессор Nvidia должным образом не присутствует в диспетчере устройств в книге поверхности. Отсоединение и повторное подключение экрана может решить проблему. – OlavT