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
@ 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
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:
sudo apt-get install opencl-headers
vielleicht. Danach sollte es das findenlibOpenCL.so
, aber ich hatte in der Vergangenheit große Probleme damit, dass Intel die Bibliothek nicht registrieren konnte und Verknüpfungsfehler verursachte.Antworten:
Zuerst:
sudo apt-get install beignet opencl-headers
Fügen Sie den beignet-Ordner Ihrem Bibliothekssuchpfad hinzu:
Holen Sie sich eine einfache Test-Binärdatei:
Bearbeiten Sie das Makefile so, dass es folgendermaßen aussieht:
Los geht's. OpenCL funktioniert für die Intel HD-Grafikkartenfamilie ...
./capsbasic
quelle
make
... Müssenldconfig
Beweise für ein Problem mit dem Paket ausgeführt werden?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.).
quelle