Что нужно для компиляции opencl на ubuntu? (и, в дополнение, период opencl)

Вопрос: нужны ли требуемые заголовки и драйверы и где я могу их получить для компиляции открытого CL на ubuntu с помощью gcc/g++?


Информация: какое-то время я спотыкался, пытаясь понять, как установить открытый CL на моем рабочем столе и, если возможно, мой нетбук. Есть несколько учебных пособий, которые я пробовал, но ни один из них не работает. Кроме того, все они просто дают шаг за шагом, объясняя, почему для того, что, или, что еще хуже, они характерны для конкретной IDE, вам нужно научиться IDE, чтобы иметь возможность что-либо сделать.

Итак, у меня есть NVIDA GX465 на моем рабочем столе и интегрированная графика в моем нетбуке. мой приоритет - это, конечно, мой рабочий стол, нетбук - это просто удобство для развития (оба запускают ubuntu 11.04 и будут запускать 11.10, как только это выйдет). Может ли кто-то изложить для меня, что именно нужно, чтобы получить его, чтобы я мог скомпилировать код и запустить его. и если бы вы могли объяснить, что делает каждая часть, чтобы я мог понять ее важность.

Ответ 1

Чтобы скомпилировать и запустить OpenCL-код под Linux, вам понадобятся четыре вещи:

1) Драйвер NVIDIA, который поддерживает OpenCL. Драйверы, упакованные в Ubuntu, несколько но они все равно должны работать нормально. Если у вас нет явной потребности в текущих драйверов, вы должны придерживаться тех, которые упакованы в Ubuntu. Чтобы быть ясными, это те же самые драйверы, установленные через ограниченный менеджер драйверов. OpenCL-библиотеки поставляются с драйвером, поэтому просто запускать программы OpenCL-драйверов должно быть достаточно.

2) Инструментарий CUDA. Сюда входят заголовки, необходимые для компиляции кода OpenCL. Установите это в местоположение по умолчанию.

3) SDK для вычислений GPU (необязательно). Это включает в себя различные инструменты поддержки NVIDIA, а также образцы кода OpenCL.

Все три этих элемента можно найти в http://developer.nvidia.com/cuda-toolkit-40.

4) Связи OpenCL С++ (необязательно). Странно, что они не включены в CUDA Toolkit, но в случае использования С++ они могут сделать ваш код намного более доступным. Вы можете скачать их из http://www.khronos.org/registry/cl/api/1.1/cl.hpp и просто поместить его в /usr/local/cuda/include/CL на свой рабочий стол.

После их установки вам нужно выполнить еще несколько шагов, чтобы иметь возможность компилировать и запускать OpenCL вне SDK NVIDIA.

1) Набор инструментов CUDA будет включать заголовки OpenCL (перечисленные в http://www.khronos.org/registry/cl/), вероятно, они находятся в каталоге/usr/локальный/CUDA/включить/CL. Чтобы эти заголовки были доступны в широком масштабе, вы должны связать этот каталог с /usr/include/, чтобы к ним можно было получить доступ как /usr/include/CL/ [headerfilename]. Вместо создания символической ссылки вы можете добавить /usr/local/cuda/include в свои переменные среды C_INCLUDE_PATH и CPLUS_INCLUDE_PATH, но это будет длиться только для сеанса currest.

2) Убедитесь, что библиотека OpenCL (libOpenCL.so) присутствует в /usr/lib. Это должно было быть установлено водителем, поэтому вам не нужно ничего делать.

Вы готовы написать код. Обязательно включите CL/cl.h (или CL/cl.hpp, если вы хотите использовать версию API на С++) в любой программе C (++), которая вызывает вызовы OpenCL API. Когда вы компилируете, обязательно связывайтесь с библиотекой OpenCL (передайте gcc флаг -lOpenCL).

Что касается вашего нетбука, интегрированная графика обычно не поддерживает OpenCL. Теоретически AMD APP Acceleration поддерживает запуск OpenCL на процессоре, но не ясно, что он действительно работает.

Ответ 2

Ubuntu 15.10 с NVIDIA NVS 5400M, Lenovo T430

sudo apt-get install nvidia-352 nvidia-352-dev nvidia-prime nvidia-modprobe
sudo ln -s /usr/include/nvidia-352/GL /usr/local/include
sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/local/lib/libOpenCL.so

Затем используйте заголовок как:

#include <CL/cl.h>

И скомпилируйте с помощью:

gcc -o main main.c -lOpenCL

Примечания:

Я действительно рекомендую обновить до 15.10, чтобы заставить это работать: раньше я никогда не справлялся.

Ответ 3

Недавно я использовал аналогичный процесс для чистой сборки на Linux, установив OpenCL с картой NVIDIA.

Шаги, которые я сделал:

1 - установите драйвер NVIDIA.

2 - установите набор инструментов CUDA - (следуя инструкциям в руководстве, есть много способов сделать это, но я использовал установщик .deb, руководство можно найти здесь: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/)

3 - с помощью apt-get установите заголовки OpenCL. Команда: sudo apt-get install opencl-headers

Используя заголовок: CL/opencl.h, я смог скомпилировать код C/С++ с помощью gcc/g++ и флаг: -lOpenCL

Объяснение шагов

1 - Самоочевидный

2 - Инструментарий CUDA также устанавливает библиотеку OpenCL (libOpencl.so), но не заголовок (по крайней мере, не в моей системе)

3 - поэтому заголовок может быть установлен с помощью apt-get. Файлы заголовков сохраняются в каталоге/usr/include/CL

Ответ 4

Вещи, которые работали для меня в Ubuntu 16.04

Я установил openCL on:

SandyBridge CPU: только cpu

IvyBridge GPU

Nvidia GTX 950

установить пакеты

Общие пакеты Ubuntu для OpenCL

Базовая установка sudo apt install ocl-icd-libopencl1 sudo apt install opencl-headers sudo apt install clinfo

Пакет, который позволяет скомпилировать OpenCL-код (1.2, я думаю)

Необходимо связать и скомпилировать sudo apt install ocl-icd-opencl-dev

Для ядра Intel GT

Пакет, который позволяет запускать openCL на Intel GT, IvyBridge и up

sudo apt install beignet

Для процессоров Intel SandyBridge и возможных других

Загрузить этот файл OpenCL ™ Runtime 16.1.1 для процессоров Intel® Core ™ и Intel® Xeon® для Ubuntu * (64-разрядная версия) На https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_SDK_release

Установите пакеты для поворота rpm в deb sudo apt-get install -y rpm alien libnuma1

Загруженный файл Untar tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz cd opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25/rpm/ Поверните файлы rpm в deb fakeroot alien --to-deb opencl-1.2-base-6.4.0.25-1.x86_64.rpm fakeroot alien --to-deb opencl-1.2-intel-cpu-6.4.0.25-1.x86_64.rpm Установить пакеты .deb sudo dpkg -i opencl-1.2-base_6.4.0.25-2_amd64.deb sudo dpkg -i opencl-1.2-intel-cpu_6.4.0.25-2_amd64.deb Нажмите локальный файл конфигурации sudo touch /etc/ld.so.conf.d/intelOpenCL.conf Открыть файл sudo vim /etc/ld.so.conf.d/intelOpenCL.conf и добавьте строку

/opt/intel/opencl-1.2-6.4.0.25/lib64/clinfo

Создайте каталог поставщиков и добавьте intel.icd sudo mkdir -p /etc/OpenCL/vendors sudo ln /opt/intel/opencl-1.2-6.4.0.25/etc/intel64.icd /etc/OpenCL/vendors/intel64.icd sudo ldconfig

проверьте, работает ли это

Клининг должен отображать ваши устройства Загрузите этот файл

https://codeload.github.com/hpc12/tools/tar.gz/master

Запустите этот код, чтобы убедиться, что все работает tar xzvf tools-master.tar.gz cd tools-master make ./print-devices ./cl-demo 1000 10 Это должно напечатать ХОРОШЕЕ в конце

Для Nvidia

установить драйверы nvidia (я использовал 370), это должно включать все dirvers времени выполнения