Frage

Die Definition einer Plattform in Khronos' OpenCL 1.0 und 1.1 Spezifikation :

  

Plattform:. Der Host sowie eine Sammlung von Geräten durch den OpenCL Framework verwaltet, die eine Anwendung auf gemeinsame Nutzung von Ressourcen ermöglichen und auszuführen Kernel auf Geräte in der Plattform

Die OpenCL-Funktion clGetPlatformIDs eine Reihe von Plattformen erstellt, was bedeutet, dass mehrere Plattformen möglich sind. Ist es sicher davon ausgehen, dass eine gegebene OpenCL Host nur eine Plattform hat?

Mit anderen Worten, ich verliere alles auf jedem Host, indem Sie diese:

cl_platform_id platform_id;
cl_uint num_platforms;
errcode = clGetPlatformIDs(1, &platform_id, &num_platforms);
War es hilfreich?

Lösung

würde ich nicht dort verlassen nur eine Plattform zu sein. Wenn Sie mehr OpenCL-Implementierungen auf einem System haben (die mit dem OpenCL ICD möglich sein sollten, obwohl ich nicht sicher bin, ob das nur geplant oder bereits abgeschlossen), sollten Sie mehrere Plattformen erhalten, eine für jede OpenCL-Implementierung. Ein Beispiel, wo es könnte mehrere OpenCL-Implementierungen sein, wäre eine nvidia Implementierung läuft OpenCL auf gpu und eine AMD-Implementierung auf CPU ausgeführt werden, so dass es nicht so weit hergeholt auch nicht.

edit: Blick auf http: // developer. amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71 (besser) desciption dieses

Andere Tipps

Um die Antwort von Tim Kind mit einem Beispiel (Thinkpad X201 mit AMD- und Intel-SDK installiert ist) ergänzen:

$ python /usr/share/doc/python-pyopencl/examples/benchmark-all.py
Execution time of test without OpenCL:  10.9563219547 s
===============================================================
Platform name: AMD Accelerated Parallel Processing
Platform profile: FULL_PROFILE
Platform vendor: Advanced Micro Devices, Inc.
Platform version: OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
---------------------------------------------------------------
Device name: Intel(R) Core(TM) i5 CPU       M 520  @ 2.40GHz
Device type: CPU
Device memory:  7799 MB
Device max clock speed: 2399 MHz
Device compute units: 2
Execution time of test: 0.00842799 s
Results OK
===============================================================
Platform name: Intel(R) OpenCL
Platform profile: FULL_PROFILE
Platform vendor: Intel(R) Corporation
Platform version: OpenCL 1.1 LINUX
---------------------------------------------------------------
Device name: Intel(R) Core(TM) i5 CPU       M 520  @ 2.40GHz
Device type: CPU
Device memory:  7799 MB
Device max clock speed: 2400 MHz
Device compute units: 2
Execution time of test: 0.00260659 s
Results OK

Ja, es ist eine Plattform-ID für jeden Anbieter OpenCL-Installation. Also, wenn Sie von AMD und Intel installieren OpenCL SDK ist Ihnen eine Plattform-ID für jede erhalten wird.

Auch wenn Sie davon ausgehen, dass ein Host nur eine Plattform hat, würden Sie haben, um herauszufinden, was der Id dieser Plattform ist, bevor clGetPlatformInfo . So ist es besser, wenn Sie clGetPlatformIDs nennen, eine Standard oder Benutzer bereitgestellte Plattform abholen und dann clGetPlatformInfo nennen.

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