2012-03-28 13 views
3

Ich habe ein System mit einer Nvidia-Grafikkarte und ich bin auf der Suche OpenCL auf mit einigen kleinen ersetzen OpenMP für auf CPU-Tasks (dank VS2010 making openMP useless)Sie müssen Opencl für CPU- und GPU-Plattformen installieren?

Da ich NVidia OpenCL SDK installiert clGetPlatformIDs habe() nur zurück Single-Plattform (NVidia) und so nur ein einziges Gerät (die GPU).

Muss ich auch Intels openCL SDK installieren, um auf die CPU-Plattform zugreifen zu können?
Sollte die CPU-Plattform nicht immer verfügbar sein - ich meine, wie haben Sie KEINE CPU?
Wie schaffen Sie es, gegen zwei openCL SDKs gleichzeitig zu bauen?

+0

Ok, so muss ich die Intel OpenCL SDK installiert als gut - diese Frage wahrscheinlich sein sollte „wie OpenCL-Anwendungen auf Maschinen ohne das SDK installiert zu verteilen?“ –

Antwort

8

Sie benötigen ein SDK, das eine Schnittstelle zur CPU bereitstellt. nVidia nicht, AMD und Intels SDKs; in meinem Fall ist der von Intel deutlich (so etwas wie 10x) schneller, was aber aufgrund schlechter Programmierung meinerseits sein könnte.

Sie benötigen das SDK nicht für die Ausführung von Programmen, nur die Laufzeit. Unter Linux installiert jeder Anbieter eine Datei in /etc/OpenCL/vendors/*.icd, die den Pfad der zu verwendenden Laufzeitbibliothek enthält. Dies wird von der OpenCL-Laufzeitumgebung abgefragt, mit der Sie eine Verbindung herstellen (libOpenCL.so), die dann jede der libs des Herstellers aufruft, wenn sie nach Geräten auf dieser bestimmten Plattform fragt.

Unter Linux installieren die GPU-Treiber die OpenCL-Laufzeit automatisch, die Intel-Laufzeit wird wahrscheinlich separat vom SDK herunter geladen, ist aber natürlich auch Teil des SDK.

+0

Es ist immer noch ziemlich unklar, was Sie mit Ihrer Opencl-App (zumindest auf Windows) verteilen müssen, ist der Intel bin-Ordner 35files und 68Mb. –

+0

Die/usr/lib64/OpenCL/Vendors/Intel hat 82M hier. Nicht überraschend, da es den clang Compiler enthält, der alleine 25M hat. Die Dateien sind 35 an der Zahl. Das SDK enthält zusätzlich einige Header-Dateien. – eudoxos

+0

@eudoxos Laut Spezifikation ist das ICD-Konzept nur eine Erweiterung und damit optional. Wissen Sie also, wie OpenCL ohne diese Erweiterung funktionieren könnte? Mit der Erweiterung verknüpfen Sie mit dem ICD-Ladeprogramm (libOpenCL.so/OpenCL.dll), aber was verknüpfen Sie ohne ICD-Erweiterung? –

-1

Heute bin ich endlich dazu gekommen, mit der OpenCl-Entwicklung zu beginnen und wow ... es ist überhaupt nicht einfach.

Es gibt eine AMD sdk, gibt es ein Intel-sdk, gibt es eine nvidia sdk, jede mit ihren eigenen Eigenschaften (CPU nur vs GPU nur gegen spezifische Unterstützung Grafikkarte nur vielleicht?)

Es kann gültige technische Gründe für Es muss so sein, aber ich wünschte wirklich, es gäbe nur einen SDK, und beim Programmieren könnten Sie vielleicht GPU/CPU-Aufgaben spezifizieren, oder dass es vielleicht alle Ressourcen verwenden würde, die am sinnvollsten/am besten oder ETWAS gemacht werden.

Zeit zu tauchen, obwohl ich denke ... versuchen zu entscheiden, wenn ich CPU oder GPU gehe. Ich habe ein ziemlich neues 4000 $ Alienware-Laptop mit SLI-Grafikkarten, aber dann auch eine 8-Core-CPU, also ja ... schätze, ich muss ein paar SDK versuchen und sehen, welche Preforms am besten für meine Bedürfnisse?

Nicht sicher, was die Endbenutzer meiner Anwendungen tun würden ... es sieht nicht so aus, als könnten sie einen Schalter umdrehen, um ihn stattdessen auf CPU oder GPU laufen zu lassen.

Die OpenCL Landschaft wirklich Hilfe braucht ...

+2

Es spielt keine Rolle, welches OpenCL SDK Sie verwenden, verwenden Sie ein beliebiges und Ihre Binärdatei wird überall funktionieren. Sie haben vielleicht die OpenCL von Intel (CPU) und die OpenCL von NVidia, also könnten Sie buchstäblich einen Schalter umlegen und opencl auf der CPU ausführen. AMD Opencl unterstützt den Betrieb Ihres Kernels auf der CPU. Mit einigen cleveren Präprozessor-Tricks kann ein Kernel direkt in eine App für den CPU-Code-Pfad kompiliert und mit opencl ausgeführt werden, sofern verfügbar. – doug65536

+0

@ doug65536 können Sie bitte meine Frage beantworten http://StackOverflow.com/Questions/21937673/develop-opencl-application-without-gpu-support-on-Laptop? Ich bin wirklich in einer verzweifelten Situation und kann anscheinend online keine Hilfe zu diesem Thema finden ... –

Verwandte Themen