2013-02-20 3 views
4

Selon this document page 6 (released by AMD)(and this topics ?), il existe plusieurs façons d'utiliser des modèles avec OpenCL. Cependant, le premier document signale que cela pourrait être fait en utilisant certaines options avec clBuildProgramWithSource qui ne semble pas exister ... Quoi qu'il en soit, en supposant que ce soit clBuildProgram plutôt que le précédent, j'ai essayé d'utiliser le "-x" avec l'option "clC++", mais encore, il ne reconnaît pas:Comment utiliser les modèles avec OpenCL?

warning: ignoring build option: "-x" 

En fait, selon la documentation provenant de Khronos, cette option n'est pas disponible! Ce document peut être déconseillé, mais existe-t-il d'autres façons d'utiliser des modèles dans un code OpenCL?

Répondre

6

L'option -x est disponible uniquement sur les dernières versions d'exécution d'AMD OpenCL qui prennent en charge OpenCL 1.2 et l'extension de langage statique C++. Vous ne trouverez pas un mot à ce sujet dans les documents officiels de Khronos, car il s'agit d'une initiative AMD et, en fin de compte, d'une extension de fournisseur.

Je suppose que vous avez le temps d'exécution droite, de sorte que votre noyau doit être construit avec ces options:

-x clc++ 

Si vous êtes en mesure de construire des noyaux avec des classes en utilisant cela, vous devriez alors être en mesure d'utiliser des modèles .

Si cela ne fonctionne pas, cela signifie que votre installation est endommagée, par ex. vous utilisez le mauvais compilateur en quelque sorte, ou cela signifie que vous n'avez pas le bon temps d'exécution. Si oui, donnez des informations sur votre plateforme.

Je me suis trompé avec l'extension C++ statique il y a un certain temps et je peux témoigner que -x clc++ fonctionne.


Aussi méfiez-vous que l'utilisation de cette extension rendra votre code non portable et verrouillé pour les appareils compatibles AMD, car il est peu probable que d'autres fournisseurs introduiront la même extension exacte eux-mêmes (si jamais).

De plus, une note sur les docs Khronos - ceux retournés par google sont typiquement les versions OpenCL 1.0 qui peuvent être irritantes. Je recommande de télécharger la norme 1.1 ou 1.2 ainsi que d'obtenir une copie locale de la documentation HTML pertinente pour un accès rapide, si vous utilisez beaucoup OpenCL. Ça aide.

0

Le nouveau standard SYCL de Khronos offre un support natif pour la programmation de méta-modèles sur les plates-formes OpenCL, y compris AMD OpenCL.

Questions connexes