2016-03-09 2 views
2

Я только начинаю изучать OpenCL. Это на простой настольный компьютер с процессором Intel Haswell CPU + Intel HD Graphics 4600. На данный момент я использую PyOpenCL и приведенные примеры. Мой вопрос в том, работает ли код на процессоре или графическом процессоре?OpenCL: Ядро работает на процессоре или iGPU?

platforms = cl.get_platforms() 
platforms[0].get_devices() 
[<pyopencl.Device 'Intel(R) Core(TM) i5-4570S CPU @ 2.90GHz' on 'Intel(R) OpenCL' at 0x706ac40>] 

Это похоже на CPU. Но есть ли вообще различия или это драйвер Intel решает, где работает ядро ​​(CPU или GPU)? если это только процессор, то как я могу запустить его на iGPU?

+0

Это выглядит как часть процессора для меня, потому что Intel называет часть GPU как HD xxxx или Iris Pro. Есть ли в списке 'platform' другая запись? –

+0

Не только этот. Я также использовал инструмент обновления драйверов Intel для получения новейших драйверов. –

ответ

1

Я нашел проблему. Используется только процессор, а GPU отсутствует. Я на Windows 7. Проблема/решение я нашел на this другой вопрос.

Максим Шевцов (Intel): Вероятно, это настоящая причина. В настоящее время устройство OCL для видеокарты процессора недоступно в «безголовой» конфигурации (без подключения монитора).

Я подключаюсь к указанному ПК через удаленный рабочий стол (не спрашивайте, почему ...), и, следовательно, он безголовый и, следовательно, iGPU недоступен в качестве устройства OpenCL.

Согласно this thread на форумах Intel с новейшими драйверами и Windows 8 или выше это работает. Но не в Windows 7 (и насколько я могу сказать не о процессорах третьего поколения Core i, например, Ivy bridge).

Достаточно хорошо для меня, пока я начинаю. Позже я хотел бы увидеть, получаю ли я что-нибудь от GPU.

+0

Графический процессор должен быть на порядок лучше. Итак, не делайте выводы с результатами ЦП. – DarkZeros

+0

Да, если все сделано правильно. Но я действительно начинаю с OpenCL из личного интереса. Таким образом, производительность пока не так важна. Просто хотел убедиться, что я все правильно понял. –

1

Ну, я никогда не использовал pyopencl, но вы должны иметь возможность запрашивать тип устройства в pyopencl, а также в C/C++.

Глядя на документацию pyopencl:

class pyopencl.device_info 
    ... 
    TYPE 
    VENDOR 
    VENDOR_ID 
    VERSION 

Вы должны быть в состоянии получить тип устройства из DEVICE_INFO экземпляра текущего устройства.

OpenCL определяет три (четыре) различных типов устройств в стандарте:

CL_DEVICE_TYPE_CPU 
CL_DEVICE_TYPE_GPU 
CL_DEVICE_TYPE_ACCELERATOR 
CL_DEVICE_TYPE_DEFAULT 

Сравнивая тип вашего фактического устройства к pyopencl представлению CL_DEVICE_TYPE_CPU и CL_DEVICE_TYPE_GPU должно дать вам необходимую информацию о вашем исполняющее устройство ,

+0

Это процессор. Разве Intel делает различие между 2? Если у вас есть процессор с графикой Intel HD, должно ли быть 2 устройства? –

+0

Да. Однако драйверы Intel, поддерживающие OpenCL для Linux для графических процессоров Intel HD, являются совершенно новыми. Возможно, вам не хватает драйвера: https://software.intel.com/en-us/articles/opencl-drivers здесь вы можете получить драйверы linux и windows, чтобы включить OpenCL на устройствах Intel. –