2015-07-12 1 views
1

Je recherche une technologie pour accélérer les calculs dans mon application (C++, traitement des données de mesure). OpenCL semble être une bonne solution. Mais pour différentes plates-formes (GPU ATI, NVidea GPU & Intel), il existe différentes bibliothèques et différents runtimes. Puis-je créer une seule réalisation qui serait correctement traitée dans GPU NVidea, GPU ATI et Intel? Ou dois-je créer une réalisation différente pour chaque plateforme?Application OpenCL multiplateforme

Puis-je faire:

void ComputeIt(); 

ou je dois créer:

void ComputeItAMD(); 
void ComputeItIntel(); 
void ComputeItNVidea(); 

???

Merci!

+0

Pour clarifier, essayez-vous simplement d'écrire du code qui fonctionnera sur chaque plateforme, ou essayez-vous d'utiliser toutes les cartes disponibles? plates-formes simultanément? – jprice

+0

J'essaie d'écrire du code qui fonctionnera sur chaque plate-forme. –

Répondre

0

Vous avez seulement besoin de l'écrire une fois. C'est tout l'intérêt d'OpenCL; écrivez une fois, exécutez partout!

Les librairies sont destinées à l'implémentation d'OpenCL par les fournisseurs. Par exemple. Si vous avez une carte Amd, téléchargez la bibliothèque AMD, la carte Nvidia, téléchargez la bibliothèque de Nvidia etc ...

+0

Cela signifie-t-il que j'ai expédié toutes les durées d'exécution avec mon produit et que je sélectionne au moment de l'exécution quelle utilisation, en fonction des capacités de l'hôte? –