Я недавно купил серийный ноутбук Dell Inspiron 3000 с процессором поколения Intel i5 7th. Машина прибыла предварительно загруженная с Windows 8, но быть сторонником Ubuntu, я установил Ubuntu 16.04 на нем.
Я должен работать с OpenCL на своем ноутбуке, для которого я выполнил процедуру, перечисленную в этом потоке (OpenCL На человечности 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 подошел бы для моих аппаратных средств.
Любой совет был бы действительно большим :)
Хорошо, я поняла это. Кроме того, это не было ракетостроение: /
Ссылка ( OpenCL В Ubuntu 16.04, процессор Intel Sandy Bridge ), которой я следовал ранее, была идеальной, так как я работал на машине Xeon. Это не сработало бы (большой сюрприз!) На моем ноутбуке, поскольку, очевидно, это не машина Xeon.
Мне нужно было использовать SDK для Linux, который доступен после заполнения формы. После заполнения формы вы будете перенаправлены на страницу, где сможете выбрать продукт и версию и загрузить файл .gz или файл .tgz. .Tgz предназначен для ОС Yocto , но во время установки вы можете запустить его без потери обобщения для Ubuntu 16.04.
Установка довольно проста, так как для ее использования очень удобен исполняемый скрипт оболочки install.sh.
Ниже приведены общие шаги:
распаковать папку
tar -xzvf intel_sdk_for_opencl_2017_yocto_7.0.0.2567_x64.tgz
запустить скрипт оболочки
./install.sh
Выходные данные скрипта 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 На человечности 16.04, Intel Sandy Bridge CPU является самым близким для получения его работа.
То, что не работало на меня, было от установки драйверов и конфигурации, после которой я попробовал еще от некоторых мест. Да, версии отличались. Я принял это во внимание по мере возможности. Но, затем, это был мой первый раз библиотеки установки и соединение. Так, я надеюсь, что это помогает любым новичкам как я. Я только покрыл часть на Intel GPUs
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
после каждого. Если это включает вышеупомянутую строку, Вы сделаны.
Если это не работает, установите opencl драйверы Intel от https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_driver. Автоматическая установка требует тонны времени и пространства. Существует альтернативный метод все же. Разархивируйте архив. Установите посторонний объект, если Вы уже не имеете: sudo способный посторонний объект установки
cd
в разархивированную папку, и выполненный
sudo alien -i *.rpm
Проверьте вывод “clinfo” снова. Это должно иметь GPU. clinfo | grep “GPU”
На данном этапе у Вас была бы рабочая реализация OpenCL.
Однако при испытании примеров (отсюда), я нашел, что большая часть работы в качестве примера с библиотеками Intel (см. ниже), некоторые не работают с библиотеками, установленными с распределением (установленный выше). (Я предполагаю, это из-за различных openCL включенных версий.)
Установите 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 - не по умолчанию - Создают новый проект. Щелкните правой кнопкой по проекту в подокне менеджера. Пойдите для “Создания опций”. Выберите Название проекта в левой панели – таким образом, настройки будут применены и для Версий выпуска и для Отладочных версий. В настройках Linker-> библиотеки ссылок, нажмите "Add". Здесь, добавьте библиотеки (не заголовочные файлы; все .so): в/opt/intel/opencl-sdk/lib64. На вкладке каталогов Search, в соответствии с 'компилятором', добавляют/opt/intel/opencl/include (или везде, где Ваши заголовочные файлы).
В случае Eclipse, во-первых, устанавливают CDT. Затем после создания проекта, в соответствии с Проектом-> Свойства-> Сборка C/C++-> Настройки-> Настройки Инструмента, (1) в соответствии с Компилятором C++ GCC, включает, добавьте каталог заголовочных файлов. (2) при Компоновщике C++ GCC, в разделе Libraries, добавляют OpenCL и в более низкой части, в разделе Library Path, добавляют путь. В моем случае, для получения его работа я потребовал,/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
Кредиты: Интернет