Frage

Ich habe in ihrem Stream 2.0 Beta mit der ATI OpenCL Implementierung gespielt. Die OpenCL in der aktuellen Beta verwendet nur die CPU für jetzt, wird die nächste Version soll GPU Kernel unterstützen. Ich heruntergeladen Strom, weil ich eine ATI-GPU in meiner Arbeit Maschine haben.

Ich schreibe Software, die mithilfe der GPU enorm von Gewinnen profitieren würden. Allerdings Diese Software läuft auf Kundenmaschinen, ich habe nicht den Luxus (so viele wissenschaftlichen Computing-Umgebungen haben), um die genaue Hardware zur Auswahl für die Entwicklung und Optimierung der dafür. Also meine Frage ist, wenn ich die ATI OpenCL-Implementierung mit meiner Anwendung zu verteilen, wird bedeuten, dass es niemals in der Lage sein, zum Beispiel zu verwenden, NVidia-Grafikkarten? Und wenn ich das NVidia OpenCL SDK, dass es nie optimal auf AMD-Chips laufen (die ATI / AMD Link bedenkt)?

Auf anderen Worten, die am Ende für die Bereitstellung der OpenCL Umsetzung verantwortlich ist? Werden Benutzer zum Beispiel in der Lage Installieren Sie einen OpenCL ‚Fahrer‘ für ihre NVidia Grafikkarte, neben einem ‚Fahrer‘, die ihnen eine optimale Leistung auf ihre AMD-CPU?

gibt

Als Nebenwirkung sind es gute / aktive Support-Foren für OpenCL abgesehen von den Khronos Message-Boards, oder ist, dass der Ort zu gehen? Ich habe gesehen, dass ATI eine Platte hat, und NVidia vermutlich ihre eigene hat, wo sich die OpenCL Benutzer / Entwickler-Community rumhängen? Hat sie bereits an einem Ort zusammengefasst?

War es hilfreich?

Lösung

Letztlich OpenCL wird auf die gleiche Weise wie OpenGL arbeiten. Das heißt, die Benutzer die aktuellen Treiber aus ihren Hardwarehersteller (ATI, NVIDIA, Intel) installieren. Sie als Entwickler einfach verknüpfen gegen eine OpenCL-Bibliothek, wenn Ihre Anwendungen zu bauen. Wenn Benutzer Ihre Anwendung ausführen, wird die Anwendung auf die entsprechenden herstellerspezifischen Bibliotheken, die von den Fahrern zur Verfügung gestellt umgeleitet werden.

Das ist so, wie es funktioniert, aber es funktioniert noch nicht auf diese Weise.

Eine weitere wichtige Sache im Auge zu behalten ist, dass Sie wahrscheinlich immer noch herstellerspezifische Code-Pfade als Code ausgeführt wird auf der CPU mit OpenCL zu bieten haben wird wahrscheinlich verschiedene optimierte Kernel-Parameter als Code verwendet, auf der GPU ausgeführt wird. Das gleiche gilt wahrscheinlich für die Unterschiede zwischen GPU-Anbieter.

Andere Tipps

Ich weiß, das ist eine alte Frage mit alten Antworten oben. Dachte ich, es mit einer aktuellen Antwort aktualisieren würde.

Ja, eine Implementierung von OpenCL-Kernel und Code wird mit korrekt geschrieben Plattform und Geräteenumeration Code auf einer Vielzahl von Geräten heute arbeitet. Es ist ziemlich einfach richtigen Plattform und Geräteenumeration Code zu schreiben, der schwierige Teil ist die Auswahl, welche Plattform oder Gerät. Sie sollten wahrscheinlich eine Konfigurationsoption in Ihrer App präsentieren, wo der Benutzer auswählen können, oder ein-Micro gegen jeden laufen und dynamisch eine auswählen und die Bank Ergebnis zwischenzuspeichern.

Die Menschen können und mehr als eine Plattform haben. Zum Beispiel hat mein System GTX 580 SLI, so hat es zwei Geräte in der NVidia-Plattform. Es hat auch die Intel OpenCL SDK, so dass mein COREi7 990x Extreme CPU gibt es auch als Gerät in der Intel-Plattform.

Ja ein binäre entwickelt und gebaut unter Verwendung von, zum Beispiel, wird die NVidia OpenCL SDK arbeitet auf ATI oder Intel OpenCL und vice versa. Kein Grund zur Sorge darüber mehr.

Offensichtlich ein Endbenutzer vielleicht nicht OpenCL auch immer haben, so dass Sie verzögerungs Last benötigen oder Loadlibrary opencl.dll und Dynamic Link.

Ich stronly vorschlagen Testen Sie Ihren Code gegen die Intel OpenCL SDK, auf NVIDIA-GPUs, und auf AMD-GPUs. Sie werden wahrscheinlich Fehler, die zu Problemen führen, auf einer Plattform finden, aber funktioniert gut auf andere. Sie werden wahrscheinlich auch, dass völlig in Ordnung Code auf mysteriöse Weise nicht korrekt die Ergebnisse auf einer dieser Plattformen aufgrund Treiber Fehler nicht geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top