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:
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?
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.