Domanda

La definizione di una piattaforma in Khronos' OpenCL 1.0 e 1.1 specifica :

  

Piattaforma:. L'host oltre a una collezione di dispositivi gestiti dal framework OpenCL che consentono un'applicazione per condividere risorse e eseguono i kernel sui dispositivi nella piattaforma

La funzione di OpenCL clGetPlatformIDs crea una serie di piattaforme, implicando che più piattaforme sono possibili. E 'lecito ritenere che un dato host OpenCL ha una sola piattaforma?

In altre parole, perderò nulla su qualsiasi host in questo modo:

cl_platform_id platform_id;
cl_uint num_platforms;
errcode = clGetPlatformIDs(1, &platform_id, &num_platforms);
È stato utile?

Soluzione

Non sarebbe contare sulla presenza di una sola piattaforma. Quando si dispone di più implementazioni di OpenCL su un sistema (che dovrebbe essere possibile con l'OpenCL ICD, anche se non sono sicuro se questo è previsto solo o già finito), si dovrebbe ottenere più piattaforme, una per ogni implementazione OpenCL. Un esempio in cui ci potrebbe essere più implementazioni di OpenCL sarebbe un'implementazione NVIDIA per eseguire OpenCL su gpu e un'implementazione amd per l'esecuzione su CPU, in modo che se non fosse che sia esagerato.

modifica: un'occhiata alla http: // sviluppatore. amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71 per (meglio) desciption di questo

Altri suggerimenti

Per completare la risposta di Tim Bambino con un esempio (Thinkpad X201 con di AMD e Intel SDK installato):

$ 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

Sì, c'è una piattaforma ID per ogni i venditori di installazione OpenCL. Quindi, se si installa di AMD e Intel di OpenCL SDK è otterrete una piattaforma Id per ciascuno.

Anche se si assume che un host ha una sola piattaforma, si dovrebbe capire che cosa l'identificazione di quella piattaforma è, prima di chiamare clGetPlatformInfo . Quindi, è meglio se si chiama clGetPlatformIDs, prendere un default o di una piattaforma fornita dall'utente e quindi chiamare clGetPlatformInfo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top