Установите OpenCL на Ubuntu 16.04, ноутбук Intel i5 7-го поколения Dell Inspiron.

Недавно я купил ноутбук Dell Inspiron серии 3000 с процессором Intel i5 7-го поколения. Машина поставлялась с предустановленной Windows 8, но, будучи сторонником Ubuntu, я установил на нее Ubuntu 16.04.

Мне нужно работать с OpenCL на моем ноутбуке, для которого я выполнил процедуру, перечисленную в этом потоке ( OpenCL В Ubuntu 16.04, Intel Sandy Bridge CPU), и установил PyOpenCL (кстати, этот поток отлично работал для моей рабочей станции на работе, где я есть машина Xeon)

Я использовал следующий скрипт Python ( https://github.com/benshope/PyOpenCL-Tutorial/blob/master/010_introspection.py), чтобы получить этот вывод на моем ноутбуке:

============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name:  Intel Gen OCL Driver
Platform - Vendor:  Intel
Platform - Version:  OpenCL 1.2 beignet 1.1.1
Platform - Profile:  FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)

Тот же скрипт на моей рабочей станции дает мне:

============================================================
Platform - Name:  Intel(R) OpenCL
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.0 LINUX
Platform - Profile:  FULL_PROFILE
--------------------------------------------------------
Device - Name:  Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Device - Type:  CPU
Device - Max Clock Speed:  2200 Mhz
Device - Compute Units:  24
Device - Local Memory:  32 KB
Device - Constant Memory:  128 KB
Device - Global Memory: 31 GB
Device - Max Buffer/Image Size: 8013 MB
Device - Max Work Group Size: 8192

lspci дает мне:

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)

(Возможно, на другой ноте я также установил графический драйвер на свой ноутбук, чего не было, когда я впервые попробовал установить OpenCL)

По сути, я не могу понять, какой формат OpenCL подойдет для моего оборудования.

Любой совет будет действительно здорово:)

2 ответа

Решение

Хорошо, так что я понял это. Кроме того, это НЕ ракетостроение:/

Ссылка ( OpenCL на Ubuntu 16.04, процессор Intel Sandy Bridge), по которой я следовал ранее, была идеальной, так как я работал на машине Xeon. Это не сработало бы (большой сюрприз!) На моем ноутбуке, поскольку, очевидно, это не машина Xeon.

Мне нужно было использовать SDK для Linux, который доступен после заполнения формы. После заполнения формы вы будете перенаправлены на страницу, где сможете выбрать продукт и версию и загрузить файл.gz или файл.tgz. . Tgz для Yocto OS, но во время установки вы можете запустить его без потери обобщения для Ubuntu 16.04.

Установка довольно проста, поскольку для ее использования очень удобен исполняемый скрипт оболочки install.sh.

Основные шаги, которые необходимо выполнить:

  1. извлечь папку

    tar -xzvf intel_sdk_for_opencl_2017_yocto_7.0.0.2567_x64.tgz
    
  2. запустить скрипт оболочки

    ./install.sh
    
  3. Следуй инструкциям

Выходные данные скрипта python затем показывают:

============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name:  Intel Gen OCL Driver
Platform - Vendor:  Intel
Platform - Version:  OpenCL 1.2 beignet 1.1.1
Platform - Profile:  FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
============================================================
Platform - Name:  Experimental OpenCL 2.1 CPU Only Platform
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.1 LINUX
Platform - Profile:  FULL_PROFILE
    --------------------------------------------------------
    Device - Name:  Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    Device - Type:  CPU
    Device - Max Clock Speed:  2500 Mhz
    Device - Compute Units:  4
    Device - Local Memory:  32 KB
    Device - Constant Memory:  128 KB
    Device - Global Memory: 8 GB
    Device - Max Buffer/Image Size: 1962 MB
    Device - Max Work Group Size: 8192
============================================================
Platform - Name:  Intel(R) OpenCL
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.0 
Platform - Profile:  FULL_PROFILE
    --------------------------------------------------------
    Device - Name:  Intel(R) HD Graphics
    Device - Type:  GPU
    Device - Max Clock Speed:  1000 Mhz
    Device - Compute Units:  23
    Device - Local Memory:  64 KB
    Device - Constant Memory:  3209904 KB
    Device - Global Memory: 6 GB
    Device - Max Buffer/Image Size: 3135 MB
    Device - Max Work Group Size: 256
    --------------------------------------------------------
    Device - Name:  Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    Device - Type:  CPU
    Device - Max Clock Speed:  2500 Mhz
    Device - Compute Units:  4
    Device - Local Memory:  32 KB
    Device - Constant Memory:  128 KB
    Device - Global Memory: 8 GB
    Device - Max Buffer/Image Size: 1962 MB
    Device - Max Work Group Size: 8192

После более чем 16 часов работы над OpenCL для работы в Windows и Linux я понимаю, что OpenCL В Ubuntu 16.04 процессор Intel Sandy Bridge является наиболее близким к нему.

То, что не работало для меня, было от установки драйверов и конфигурации, после чего я попробовал от некоторых других мест. Да, версии были разные. Я принимал это во внимание везде, где это было возможно. Но тогда я впервые установил библиотеки и установил ссылки. Итак, я надеюсь, что это поможет любым новичкам, как я. Я рассмотрел только часть на графических процессорах Intel

Как заставить OpenCL работать

sudo apt install clinfo ocl-icd-opencl-dev opencl-headers

Проверьте вывод Clinfo

clinfo | grep "GPU"

проверить, включен ли GPU. Если нет такой строки, как

Device Type                            GPU

на выходе GPU еще не поддерживает OpenCL. В этом случае попробуйте установить beignet-opencl-icd, mesa-opencl-icd и т. Д. - по одному. Продолжайте проверять вывод clinfo после каждого. Если он включает в себя строку выше, все готово.

Установка драйверов Intel OpenCL

Если это не сработает, установите драйверы opencl для Intel по https://software.intel.com/en-us/articles/opencl-drivers. Автоматическая установка требует много времени и места. Хотя есть альтернативный метод. Распакуйте архив. Установите иностранца, если у вас его еще нет: sudo apt установите иностранца

cd в разархивированную папку и запустите

sudo alien -i *.rpm

Проверьте вывод "clinfo" еще раз. У него должен быть графический процессор. Clinfo | ГРЕП "ГПУ"

На этом этапе у вас будет работающая реализация OpenCL.

Однако, пробуя примеры ( отсюда), я обнаружил, что большинство примеров работают с библиотеками Intel (см. Ниже), некоторые не работают с библиотеками, установленными с дистрибутивом (установленным выше). (Я думаю, это из-за различных версий OpenCL.)

Установите Intel OpenCL SDK

Установите Intel OpenCL SDK для Linux (после бесплатной регистрации) вместе с ними, отсюда Intel OpenCL SDK для Linux. Просто запустите установочный скрипт - не нужно работать над частями, чтобы он работал с Eclipse и всеми остальными. Вам может понадобиться

sudo apt install dkms

К этому моменту у вас все должно быть готово.

Если вы новичок (как и я)

Знать процесс компиляции C-программ: сначала создаются объектные файлы, затем они связываются. См. https://stackoverflow.com/questions/31179452/what-exactly-is-in-a-o-a-so-file.

В IDE (я не знаю о терминале) есть две части работы с библиотеками. Первый включает в себя путь к заголовочным файлам. Второе - это включение файлов библиотеки в проект.

Я использую CodeBlocks. Итак, причина, по которой Linux любят, заключается в том, что самая первая команда этого ответа отправила файлы в их предназначенные места. Заголовочные файлы находятся в каталоге / usr / include в папке 'CL'. Библиотека (в моем случае) находится в каталоге /usr/lib/x86_64-linux-gnu и называется libOpenCL.so. Вам не нужно ничего делать дальше, чтобы использовать их. Вы можете просто начать кодирование -

#include<CL/cl.h>

В случае Intel OpenCL SDK файлы заголовков находятся в /opt/intel/opencl-sdk/include; пока файлы библиотеки находятся в разделе После установки проверьте содержимое / opt / intel / opencl на наличие содержимого. У них тоже есть библиотеки. Однако один из библиотечных файлов дал мне синтаксическую ошибку (libclang.so). Intel OpenCL SDK следует загружать в основном для заголовочных файлов в: /opt/intel/opencl-sdk/lib64 - только в.so. (Я обнаружил, что файл libclang.so дает синтаксическую ошибку. Проверьте во время работы программы.)

В случае CodeBlocks, чтобы использовать эти файлы Intel - файлы не по умолчанию - Создайте новый проект. Щелкните правой кнопкой мыши по проекту в менеджере-подокне. Перейти к "Варианты сборки". Выберите имя проекта в левой панели - таким образом, настройки будут применены как для версии Release, так и для версии Debug. В настройках компоновщика -> ссылки библиотеки, нажмите "Добавить". Здесь добавьте библиотеки (не заголовочные файлы; все.so): в /opt/intel/opencl-sdk/lib64. На вкладке "Поиск каталогов" в разделе "компилятор" добавьте /opt/intel/opencl/include (или там, где находятся ваши заголовочные файлы).

В случае Eclipse, сначала установите CDT. Затем, после создания проекта, в разделе Проект -> Свойства -> Сборка C/C++ -> Настройки -> Настройки инструмента, (1) в компиляторе GCC C++, включите, добавьте каталог файлов заголовков. (2) в GCC C++ Linker, в разделе Библиотеки добавьте OpenCL и в нижней части, в разделе Путь к библиотеке, добавьте путь. В моем случае, чтобы это работало, мне потребовалось / opt / intel / opencl / include в первой части и /opt/intel/opencl/SDK/lib64 во второй части. По умолчанию, как в случае с Codeblocks, не работает. Возможно, из-за версий, или я не попробовал должным образом - Eclipse является новым для меня.

Готово.

Следующее должно запускаться и компилироваться: https://github.com/bgaster/opencl-book-samples/blob/master/src/Chapter_3/OpenCLInfo/OpenCLInfo.cpp

Кредиты: Интернет

Другие вопросы по тегам