Öffnen Sie cl in Intel


9

Wie kompiliere und führe ich offene Cl-Codes auf Intel i5-Prozessoren mit Intel HD 4000 GPU-Einheit aus? Open cl wurde in / opt / intel / opencl installiert und versionis ubuntu 12.04. Jede Hilfe wäre eine große Hilfe ... Danke


Auf welches Problem stoßen Sie?
Thomas

Also funktioniert dieser Emulator für Intel ....
Piyush Kumar

@ Thomas, wenn ich die Datei ausführe, findet es keine der Dateien oder Bibliotheken ... Fehler sagt, dass keine solche Datei oder Verzeichnis CL / cl.h nicht gefunden wurde. Es gibt auch eine Datei namens kernelBuilder. Wenn ich versuche, sie auszuführen, wird eine Eingabeaufforderung angezeigt, die jedoch stoppt und besagt, dass die GCOnf-Warnung, der Client konnte keine Verbindung zum D-Bus-Daemon herstellen und keine Antwort erhalten hat.
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headersvielleicht. Danach sollte es das finden libOpenCL.so, aber ich hatte in der Vergangenheit große Probleme damit, dass Intel die Bibliothek nicht registrieren konnte und Verknüpfungsfehler verursachte.
Thomas

@ Thomas, werde es versuchen ... Ich denke, ich könnte Ihre Erfahrungen nutzen
Piyush Kumar

Antworten:


10

Zuerst:
sudo apt-get install beignet opencl-headers

Fügen Sie den beignet-Ordner Ihrem Bibliothekssuchpfad hinzu:

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

Holen Sie sich eine einfache Test-Binärdatei:

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

Bearbeiten Sie das Makefile so, dass es folgendermaßen aussieht:

all: capsbasic

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

clean:
    rm -f capsbasic

Los geht's. OpenCL funktioniert für die Intel HD-Grafikkartenfamilie ...

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
Danke, aber laut Intel unterstützen sie OpenCL auf dem HD 4000 für Linux nicht: OpenCL SDK 1.2 für Linux ohne Xeon? . Was für eine Leistung bekommst du?
Nealmcb

1
Aha - jetzt sehe ich, dass README.txt für beignet erklärt, dass es eine Alternative zu Intels OpenCL SDK ist, das tatsächlich die HD 4000 unterstützt. Danke !! Beachten Sie, dass die Leute tatsächlich auch laufen müssen make... Müssen ldconfigBeweise für ein Problem mit dem Paket ausgeführt werden?
Nealmcb

2
Die Leistung ist, wie opencl sagt, ziemlich schlecht und ziemlich fehlerhaft. Code, der auf anderen opencl-Implementierungen ausgeführt wird, stürzt manchmal nur ab oder es treten Fehler auf. Damit können Sie triviale Testsachen erstellen, ohne auf ein Rechengerät zu drücken.
RobotHumans

Ich denke nicht, dass die Notwendigkeit, es Ihrem Bibliothekssuchpfad hinzuzufügen, ein Problem mit der Bibliothek ist. Wenn Sie OpenCL verwenden, wird davon ausgegangen, dass Sie über technisches Know-how verfügen. Persönlich würde es mir gefallen, wenn alle OpenCL-Pakete gleichzeitig installierbar wären und Sie einfach wechseln könnten, welche Bibliothek in Ihrem Suchpfad enthalten ist, und ldconfig erneut ausführen könnten, um auf eine andere zu verweisen. Dies könnte nützlich sein, wenn Sie eine Testbox mit allen drei "Marken" des Video-Chipsatzes als Testumgebung hatten und einen Weg gefunden haben, Ihren Code auf allen möglichen Zielen zu bewerten oder einfach nur zu testen.
RobotHumans

1
Das macht Sinn. Ich würde eher mit so etwas wie Jockey, Update-Alternativen oder was auch immer an Bord sein. Bibliotheken mit etwas wechseln, das Bibliotheken wechseln soll? Klar, das scheint eine gute Idee für eine unhaltbare Situation zu sein.
RobotHumans

0

Zum Kompilieren benötigen Sie einen Compiler wie gcc. Sie können gcc aus dem Repository herunterladen. (Wählen Sie die größte Versionsnummer für weitere C ++ 11-Funktionen).

$> sudo apt-get install gcc-4.7

Danach müssen Sie Ihre OpenCL-Bibliothek mit der Anwendung verknüpfen, die Sie kompilieren. Nehmen wir an, der Code der Host-Anwendung (main.c) und der Code der Kernel-Anwendung (kernel.cl) befinden sich in einem Ordner namens test. Sie sollten wie folgt vorgehen:

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

Es sollte sich um die Kompilierung kümmern. Sie sollten die Ausgabe wie folgt ausführen:

$ test> ./ a.out

und kümmern Sie sich um eventuelle Laufzeitfehler (einschließlich der Korrektur des Pfads zu Ihrer kernel.cl usw.).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.