OpenCL ou CUDA où aller?

J'étudie les moyens d'utiliser le GPU pour traiter les données en streaming. J'avais 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 vais coder en C et C++ sous linux.

22
demandé sur systemsfault 2010-04-15 16:01:04

3 réponses

OpenCL

  • interfacé à partir de votre code de production
  • portable entre différents matériels graphiques
  • opérations limitées mais raccourcis pré-préparés

CUDA

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

Bottom line -- OpenCL est portable, CUDA est nVidia uniquement. Cependant, étant un langage indépendant, CUDA est beaucoup plus puissant et a un tas de très bons outils.

  1. facilité d'utilisation -- OpenCL est plus facile à utiliser, mais une fois que vous avez configuré L'environnement de codage CUDA, c'est presque comme coder en C.
  2. Communauté et Documentation -- les deux ont une documentation et des exemples complets, mais je pense que CUDA a mieux.
  3. Performance -- CUDA permet un plus grand contrôle, donc peut être mieux affiné pour des performances plus élevées.
  4. Future -- difficile à dire vraiment.
36
répondu Kornel Kisielewicz 2010-04-15 12:10:13

Mes expériences personnelles étaient:

  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 que OpenCL jusqu'à maintenant, mais cela sera probablement sur le point d'égaliser.

  3. Documentation: les Deux sont très bien documentées.

  4. Performance: nous avons fait l'expérience, que les pilotes OpenCL ne sont pas encore complètement optimisé.

  5. Avenir: L'avenir réside dans 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 dépassée.

17
répondu Danvil 2013-12-08 11:06:27

OpenCL tout le chemin sauf si vous avez une raison spécifique d'utiliser CUDA. OpenCL fonctionne bien sur les multicores comme Intel i7 en plus de fonctionner sur les GPU. En utilisant OpenCL, vous pouvez l'exécuter sur une gamme beaucoup plus large de matériel, des téléphones cellulaires Droid aux nœuds de calcul IBM Power7 du plus grand supercalculateur au Monde, Blue Waters , qui est censé être mis en ligne l'année prochaine.

6
répondu Chad Brewbaker 2010-07-01 16:20:55