Открыть Cl в Intel

9

Как скомпилировать и запустить open cl-коды на процессорах Intel i5, имеющих Intel HD 4000 GPU? Open cl был установлен в / opt / intel / opencl и версии Ubuntu 12.04. Любая помощь будет очень полезна ... Спасибо

Пиюш Кумар
источник
С какой проблемой вы сталкиваетесь?
Томас
так что этот эмулятор работает для intel ....
Пиюш Кумар
@thomas, когда я запускаю файл, он не находит ни одного файла или библиотеки ... ошибка говорит о том, что такого файла или каталога CL / cl.h не найдено. Также есть один файл с именем kernelBuilder, когда я пытаюсь его выполнить, появляется одна подсказка, но она останавливается и сообщает, что GCOnf выдает предупреждение, клиент не смог подключиться к демону шины D и не получил ответ ....
Пиюш Кумар
@PiyushKumar sudo apt-get install opencl-headersвозможно. После этого он должен найти libOpenCL.so, но в прошлом у меня были серьезные проблемы с тем, что Intel не могла зарегистрировать библиотеку и вызывала ошибки компоновки.
Томас
@ Томас, попробую ... Думаю, я мог бы использовать твои эксперименты
Пиюш Кумар

Ответы:

10

Первый:
sudo apt-get install beignet opencl-headers

Добавьте папку beignet в путь поиска вашей библиотеки:

sudo su
echo "/usr/lib/beignet/" > /etc/ld.so.conf.d/beignet.conf
ldconfig
exit

Получите простой тестовый бинарный файл:

git clone https://github.com/vpereira/CapsBasic-beignet

Отредактируйте make-файл так, чтобы он выглядел так:

all: capsbasic

capsbasic: capsbasic.cpp Makefile
    g++ capsbasic.cpp -lcl -ocapsbasic -I/usr/include -L/usr/lib/beignet

clean:
    rm -f capsbasic

Вот и ты. OpenCL работает для семейства видеокарт Intel HD ...

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

./capsbasic

Number of available platforms: 1
Platform names:
    [0] Experiment Intel Gen OCL Driver [Selected]
Number of devices available for each type:
    CL_DEVICE_TYPE_CPU: 0
    CL_DEVICE_TYPE_GPU: 1
    CL_DEVICE_TYPE_ACCELERATOR: 0

*** Detailed information for each device ***

CL_DEVICE_TYPE_GPU[0]
    CL_DEVICE_NAME: Intel HD Graphics Family
    CL_DEVICE_AVAILABLE: 1
    CL_DEVICE_VENDOR: Intel
    CL_DEVICE_PROFILE: FULL_PROFILE
    CL_DEVICE_VERSION: OpenCL 1.1
    CL_DRIVER_VERSION: 0.2
    CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.1
    CL_DEVICE_MAX_COMPUTE_UNITS: 128
    CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
    CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
    CL_DEVICE_ADDRESS_BITS: 32
    CL_DEVICE_MEM_BASE_ADDR_ALIGN: 32
    CL_DEVICE_MAX_MEM_ALLOC_SIZE: 134217728
    CL_DEVICE_GLOBAL_MEM_SIZE: 4
    CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65536
    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 8192
    CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128
    CL_DEVICE_LOCAL_MEM_SIZE: 65536
    CL_DEVICE_PROFILING_TIMER_RESOLUTION: 80
    CL_DEVICE_IMAGE_SUPPORT: 1
    CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
    CL_DEVICE_HOST_UNIFIED_MEMORY: 0
    CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_icd cl_khr_gl_sharing
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0
    CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 16
RobotHumans
источник
1
Спасибо, но, по словам Intel, они не поддерживают OpenCL на HD 4000 для Linux: OpenCL SDK 1.2 для Linux без Xeon? , Какую производительность вы получаете?
nealmcb
1
Ага - теперь я вижу, что README.txt для beignet объясняет, что это альтернатива Intel OpenCL SDK, который действительно поддерживает HD 4000. Спасибо! Обратите внимание, что люди действительно должны запускать makeтакже .... Нужно ли запускать ldconfigсвидетельство проблемы с пакетом?
nealmcb
2
Производительность, как и у opencl, довольно плохая и довольно глючная. Код, который выполняется в других реализациях opencl, иногда просто вылетает или выдает ошибку. Это позволяет создавать тривиальные тестовые вещи, не прибегая к вычислительной установке.
RobotHumans
Я не думаю, что необходимость добавлять его в путь поиска в библиотеке является проблемой с библиотекой. Если вы используете OpenCL, предполагается, что у вас есть некоторые технические ноу-хау. Лично я хотел бы, чтобы все пакеты OpenCL устанавливались одновременно, и вы могли просто переключить, какая библиотека была включена в ваш путь поиска, и повторно запустить ldconfig, чтобы указать на другую. Это может быть полезно, если в качестве среды тестирования у вас был тестовый блок со всеми тремя «брендами» видеочипсетов, и вы разработали способ для тестирования или просто запуска теста для всех возможных целей.
RobotHumans
1
В этом есть смысл. Я был бы больше на борту с чем-то вроде шлепка в жокей, альтернативных обновлений или чего-то еще. Переключать библиотеки с чем-то, что должно переключать библиотеки? Конечно, это кажется хорошей идеей для несостоятельной ситуации.
RobotHumans
0

Для компиляции вам необходим компилятор, такой как gcc. Вы можете скачать gcc из своего репозитория. (выберите больший номер версии для дополнительной функции C ++ 11).

$> sudo apt-get install gcc-4.7

После этого вы должны связать свою библиотеку OpenCL с приложением, которое вы компилируете. Допустим, код приложения хоста (main.c) и код приложения ядра (kernel.cl) находятся в папке с именем test. Вы должны сделать следующее:

$ test> gcc -I / opt / intel / include -L / opt / intel / lib / [x86 или x86_64] / main.c -o a.out

Это должно заботиться о компиляции. Вы должны запустить вывод как:

$ Тестов> ./ a.out

и позаботьтесь о любой ошибке во время выполнения, которую вы можете получить (включая исправление пути к вашему kernel.cl и т. д.).

user1855051
источник