Как скомпилировать OpenCL на Ubuntu? - PullRequest
11 голосов
/ 25 сентября 2011

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


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

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

Ответы [ 4 ]

9 голосов
/ 25 сентября 2011

Для компиляции и запуска кода 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 C ++ (необязательно). Как ни странно, они не включены в CUDA Toolkit, но если вы используете C ++, они могут сделать ваш код намного более читабельным. Вы можете скачать их с http://www.khronos.org/registry/cl/api/1.1/cl.hpp, и просто поместить их в / usr / local / cuda / include / CL на вашем рабочем столе.

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

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

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

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

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

4 голосов

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, чтобы заставить это работать: мне никогда раньше не удавалось.

2 голосов
/ 30 декабря 2016

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

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

Процессор SandyBridge: только процессор

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 core

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

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

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

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

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 времени выполнения

2 голосов
/ 28 июня 2015

Недавно я использовал аналогичный процесс для чистой сборки в 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 / C ++ с использованием gcc / g ++ ифлаг: -lOpenCL

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

1 - Не требует пояснений

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

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

...