Benötige ich wirklich ein OpenCL SDK?

8

Ich habe gerade versucht, mich mit OpenCL vertraut zu machen, war aber total verwirrt, als alle im Internet darüber sprachen, ein herstellerspezifisches OpenCL-SDK herunterzuladen. Warum sollte ich das brauchen?

Mein Verständnis von OpenCL war das Folgende:

  1. Laden Sie die OpenCL Header-Dateien herunter, die von Kronos in der Khronos OpenCL Registry gepflegt werden, und stellen Sie sie Ihrem Compiler zur Verfügung .
  2. Kompilieren Sie Ihren Code und verknüpfen Sie ihn mit der OpenCL.dll.

Der Grund, warum es mich verwirrt, ist, weil ich dachte, dass OpenCL herstellerspezifische Implementierungen abstrahieren sollte. Wenn ich jetzt ein herstellerspezifisches SDK runterlade, dann ist dieser Vorteil nicht zerstört?

Kann jemand bitte dies klarstellen?

    
denim 19.03.2015, 13:39
quelle

1 Antwort

14

Ihr Verständnis ist absolut richtig - Sie benötigen keine Hersteller-SDKs, um OpenCL-Programme zu entwickeln oder auszuführen. Alles, was Sie brauchen, sind die Header und eine Bibliothek, mit der Sie verlinken können. Die Anbieter-SDKs enthalten Beispielcode, auf den Sie beim Erlernen der Verwendung von OpenCL zurückgreifen können, und sie können auch Tools bereitstellen, die die Entwicklung unterstützen können.

Unter Windows benötigen Sie eine OpenCL.lib -Bibliothek für die Verknüpfung, die von den SDKs bereitgestellt wird. Sie können die Quellen für diese Bibliothek herunterladen und sie selbst erstellen, wenn Sie möchten.

Es ist jedoch kein Nachteil, wenn Sie das SDK eines bestimmten Anbieters verwenden. Die Header und die Bibliothek, die sie im SDK bereitstellen sollten nur die Khronos-Versionen sein, die Sie selbst herunterladen können. Das bedeutet, dass eine OpenCL-Anwendung, die mit dem SDK eines Herstellers erstellt wurde, trotzdem gut gegen die Geräte anderer Hersteller läuft.

    
jprice 19.03.2015, 13:47
quelle

Tags und Links