Question

J'étudie les moyens d'utiliser GPU afin de traiter les données de streaming. J'ai eu deux choix mais je ne pouvais pas décider de la voie à suivre?

Mes critères sont les suivants:

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

Je coderai en C et C ++ sous Linux.

Était-ce utile?

La solution

Opencl

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

Cuda

  • Langue séparée (CUDA C)
  • matériel nvidia uniquement
  • Contrôle presque complet sur le code (codage dans une langue de type C)
  • beaucoup d'outils de profilage et de débogage

Conclusion - OpenCL est portable, CUDA est Nvidia uniquement. Cependant, étant une langue indépendante, Cuda est beaucoup plus puissante 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 avez configuré l'environnement de codage CUDA, c'est presque comme le codage dans C.
  2. Communauté et documentation - Les deux ont une documentation et des exemples approfondis, mais je pense que Cuda a mieux.
  3. Performance - Cuda permet un plus grand contrôle, il peut donc être mieux affiné pour des performances plus élevées.
  4. Avenir - Difficile à dire vraiment.

Autres conseils

Mes expériences personnelles ont été:

  1. API: OpenCL a une API légèrement plus complexe. Cependant, la plupart du temps que vous passerez à écrire du code du noyau, et ici les deux sont presque identiques.

  2. Communauté: Cuda a une communauté beaucoup plus grande puis s'ouvrira jusqu'à maintenant, mais cela sera probablement sur le point de sortir.

  3. Documentation: Les deux sont très bien documentés.

  4. Performance: Nous avons fait l'expérience, que les pilotes OpenCL ne sont pas encore entièrement optimisés.

  5. Future: L'avenir réside dans OpenCL car il s'agit d'une norme ouverte, non limitée à un fournisseur ou à un matériel spécifique!

Cette évaluation est à partir de 2010, donc probablement dépassée.

OpenCL tout le chemin, sauf si vous avez une raison spécifique d'utiliser CUDA. OpenCL fonctionne bien sur des multicores comme Intel i7 en plus d'exécuter sur des GPU. En utilisant OpenCL, vous pouvez l'exécuter sur une gamme de matériel beaucoup plus large, des téléphones à cellules droïdes aux nœuds de calcul IBM Power7 du plus grand supercalculateur du monde, Eaux bleues, qui est censé mettre en ligne l'année prochaine.

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