Question

La définition d'une plate-forme de Khronos OpenCL 1.0 et 1.1 spécification :

  

Plate-forme:. L'hôte, plus une collection de périphériques gérés par le cadre OpenCL qui permettent une application à partager des ressources et d'exécuter les noyaux sur les périphériques dans la plate-forme

La fonction OpenCL clGetPlatformIDs crée une gamme de plates-formes, ce qui implique que plusieurs plates-formes sont possibles. Est-il sûr de supposer qu'un hôte donné OpenCL a une seule plate-forme?

En d'autres termes, vais-je perdre quoi que ce soit sur un hôte en faisant ceci:

cl_platform_id platform_id;
cl_uint num_platforms;
errcode = clGetPlatformIDs(1, &platform_id, &num_platforms);
Était-ce utile?

La solution

Je ne se baserait pas sur qu'il y ait une seule plate-forme. Lorsque vous avez plusieurs implémentations OpenCL sur un système (ce qui devrait être possible avec la CIM, bien OpenCL Je ne sais pas si cela est prévu uniquement ou déjà terminé), vous devriez obtenir plusieurs plates-formes, une pour chaque mise en œuvre OpenCL. Un exemple où il pourrait y avoir plusieurs implémentations OpenCL serait une mise en œuvre de nvidia pour exécuter OpenCL sur gpu et une mise en œuvre amd pour fonctionner sur cpu, de sorte qu'il ne soit tiré par les cheveux jusque-là.

edit: consultez http: // développeur. amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71 pour (mieux) de cette desciption

Autres conseils

Pour compléter la réponse de Tim enfant avec un exemple (avec Thinkpad X201 de AMD et Intel SDK installé):

$ 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

Oui, il y a une plate-forme Id pour chaque installation de fournisseurs OpenCL. Donc, si vous installez AMD et Intel OpenCL SDK vous est obtiendrez une plate-forme pour chaque Id.

Même si vous supposez qu'un hôte n'a qu'une seule plate-forme, vous auriez à comprendre ce que l'identifiant de cette plate-forme est, avant d'appeler clGetPlatformInfo . Donc, le mieux si vous appelez clGetPlatformIDs, choisissez une valeur par défaut ou la plate-forme fournie par l'utilisateur puis appelez clGetPlatformInfo.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top