2010-04-15 5 views
22

J'étudie les façons d'utiliser le GPU pour traiter les données en continu. J'avais deux choix mais je ne pouvais pas décider quelle direction suivre?OpenCL ou CUDA Quelle route y aller?

Mes critères sont les suivants:

  1. Facilité d'utilisation (bonne API)
  2. Communauté et de documentation
  3. Performance
  4. avenir

Je vais coder en C et C++ sous Linux.

+1

Voir aussi: http://stackoverflow.com/questions/2384930 –

Répondre

36

OpenCL

  • interfacé à partir de votre code de production
  • portable entre différents matériel graphique
  • opérations limitées, mais les raccourcis
  • prépréparés

CUDA

  • langue distincte (CUDA C)
  • matériel nVidia ne
  • contrôle quasi total sur le code (codage dans un langage de type C)
  • beaucoup d'outils de profilage et de débogage

Bas line - OpenCL est portable, CUDA est nVidia seulement. Cependant, étant une langue indépendante, CUDA est beaucoup plus puissant et a un tas de très bons outils.

  1. Facilité d'utilisation - OpenCL est plus facile à utiliser hors de la boîte, mais une fois que vous configurez l'environnement de codage CUDA il est presque comme le codage en C.
  2. communautaire et la documentation - ont tous deux documentation et exemples complets, mais je pense que CUDA a mieux.
  3. Performance - CUDA permet un meilleur contrôle, donc peut être mieux ajusté pour une meilleure performance.
  4. Future - difficile à dire vraiment.
+9

En fait, il y a un avantage supplémentaire à utiliser OpenCL, il peut aussi paralléliser des tâches dans le CPU. – systemsfault

+0

@holydiver, point valide, mais vous avez posé des questions sur GPU :) –

+4

@holydiver, dans cet esprit, vous pouvez dire que ni Windows ni MacOS X a un brillant avenir:> –

17

Mes expériences personnelles ont été:

  1. API: OpenCL a api un peu plus complexe. Cependant, la plupart du temps vous passerez avec l'écriture du code du noyau, et les deux sont presque identiques. Communauté: CUDA a une communauté beaucoup plus grande qu'OpenCL jusqu'à maintenant, mais cela va probablement s'équilibrer.

  2. Documentation: Les deux sont très bien documentés.Performance: Nous avons fait l'expérience, que les pilotes OpenCL ne sont pas encore entièrement optimisés. Avenir: Le futur se trouve avec OpenCL car il s'agit d'un standard ouvert, non limité à un fournisseur ou à un matériel spécifique!

Cette évaluation date de 2010, donc probablement périmée.

6

OpenCL à moins que vous n'ayez une raison particulière d'utiliser CUDA. OpenCL fonctionne bien sur les multicœurs comme Intel i7 en plus de fonctionner sur GPU. En utilisant OpenCL, vous pouvez l'utiliser sur une gamme beaucoup plus large de matériel depuis les téléphones cellulaires Droid jusqu'aux nœuds de calcul IBM Power7 du plus grand supercalculateur du monde, Blue Waters, qui devrait entrer en service l'année prochaine.

Questions connexes