Відкрити кл в Intel


9

Як компілювати та запускати відкриті коди cl на процесорах intel i5, що мають одиничний hd 4000 gpu блок ??? Open cl встановлений у / opt / intel / opencl та версії ubuntu 12.04. Будь-яка допомога допомогла б вам ... Спасибі


З якою проблемою ви стикаєтесь?
Томас

тож цей емулятор працює для Intel ....
Піюш Кумар

@thomas, коли я запускаю файл, його не знаходить жодного з файлів чи бібліотеки ... Помилка говорить про те, що такого файлу чи каталогу CL / cl.h не знайдено. Також є один файл під назвою kernelBuilder, коли я намагаюся його виконати, приходить одне підказка, але він зупиняється і каже, що попередження GCOnf, клієнт не зміг підключитися до шини D Daemon і не отримав відповідь ....
Піюш Кумар

@PiyushKumar sudo apt-get install opencl-headersможливо. Після цього він повинен знайти libOpenCL.so, але у мене були основні проблеми в минулому, оскільки Intel не зареєструвала бібліотеку і спричинила помилки посилання.
Томас

@Thomas, спробуй це ... Вгадай, я міг би скористатися ур-досвідом
Піюш Кумар,

Відповіді:


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

Відредагуйте makefile, щоб виглядати так приблизно:

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

1
Дякую, але за словами Intel, вони не підтримують OpenCL на HD 4000 для Linux: OpenCL SDK 1.2 для Linux, без Xeon? . Яку виставу ви отримуєте?
nealmcb

1
Ага - тепер я бачу, що README.txt для beignet пояснює, що це альтернатива OpenCL SDK Intel, яка дійсно підтримує 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> gcc -I / opt / intel / включають -L / opt / intel / lib / [x86 або x86_64] / main.c -o a.out

Слід подбати про компіляцію. Ви повинні запустити результат як:

$ test> ./ a.out

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.