56 votes

CUDA vs FPGA?

Je suis en train de développer un produit avec de lourdes graphiques 3D, calculs, dans une large mesure du point le plus proche et faire des recherches. Certains matériels d'optimisation serait utile. Alors que je sais peu de choses sur ce, mon patron (qui n'a pas de logiciel de l'expérience) préconise FPGA (car il peut être adapté), alors que notre développeur junior défenseurs GPGPU avec CUDA, en raison de son bas prix, chaude et ouverte. Alors que je sens que je manque de jugement dans cette question, je crois que CUDA est le chemin à parcourir aussi parce que je suis inquiet au sujet de la flexibilité, notre produit est encore en fort développement.

Donc, en reformulant la question, il y a toutes les raisons d'y aller pour le FPGA du tout? Ou est-il une troisième option?

49voto

flolo Points 8757

Nous avons fait une comparaison entre le FPGA et CUDA. Une chose où CUDA brille si vous pouvez vraiment formuler votre problème en mode SIMD ET peut accéder à la mémoire fusionné. Si les accès à la mémoire sont pas corrigées(1) ou si vous avez des différents flux de contrôle dans les différents threads que le GPU peut perdre considérablement ses performances et le FPGA peut surpasser cela. Une autre chose, c'est quand votre opération est realtive petit, mais vous avez une énorme quantité de lui. Mais tu ne peux pas (par exemple en raison de la synchronisation) pas de départ dans une boucle dans un noyau, alors votre invocation fois pour le processeur graphique noyau dépasse le temps de calcul.

Aussi le pouvoir de l'FPGA pourrait être mieux (dépend de votre application scénario, c'est à dire. le GPU est seulement moins cher (en termes de Watts/Flop) lors de son informatique tout le temps).

Offcourse le FPGA a aussi quelques inconvénients: IO peut être un (nous avons eu ici un exemple d'application nous avons été nécessaire de 70 GO/s, pas de problème pour le GPU, mais pour obtenir cette quantité de données dans un FPGA dont vous avez besoin pour la conception conventionnelle plus de broches que ce qui est disponible). Un autre inconvénient est le temps et l'argent. Un FPGA est beaucoup plus cher que le meilleur GPU et le temps de développement sont très élevés.

(1) Simultanément accès de thread différent de mémoire doivent être consécutives dans les adresses. C'est parfois très difficile à obtenir.

48voto

biozinc Points 2760

J'ai examiné la même question tout à l'arrière. Après avoir discuter avec des gens qui ont travaillé sur des Fpga, c'est ce que j'obtiens:

  • Les fpga sont grands en temps réel des systèmes, où même 1 ms de retard peut être trop long. Cela ne s'applique pas dans votre cas;
  • Le fpga peut être très rapide, en particulier pour bien défini de traitement de signal numérique usages (par exemple, des données radar), mais les bons sont beaucoup plus coûteux et spécialisés que même les professionnels Gpgpu;
  • Les fpga sont assez pénible de programme. Depuis il ya la configuration matérielle de la composante à la compilation, il pourrait prendre des heures. Il semble être plus adaptée à des ingénieurs en électronique (qui sont généralement ceux qui travaillent sur des Fpga) que les développeurs de logiciels.

Si vous pouvez faire CUDA travail pour vous, c'est probablement la meilleure option pour le moment. Il sera certainement beaucoup plus flexible qu'un FPGA.

D'autres options incluent le Ruisseau de ATI, mais jusqu'à ce que quelque chose de grand se passe, il n'est tout simplement pas ainsi adopté comme CUDA. Après cela, il y a toujours le traditionnel HPC options (grappes de x86/PowerPC/Cellule), mais ils sont tous assez cher.

Espérons que cela aide.

15voto

Martin Beckett Points 60406

Je voudrais aller avec CUDA.
Je travaille dans le traitement de l'image et ont essayé de matériel add-ons pour des années. Nous avons d'abord eu i860, puis Transputer, puis DSP, puis le FPGA et directe compiliation-à-matériel.
Ce innevitably qui s'est passé, par le temps, le matériel planches étaient vraiment de débogage et fiables, et le code a été adapté pour eux - régulier Processeurs avaient avancé pour les battre, ou de la machine qui héberge l'architecture a changé et nous ne pouvions pas utiliser les vieilles planches, ou les responsables de la commission a fait faillite.

De s'en tenir à quelque chose comme CUDA vous n'êtes pas lié à un petit spécialiste fabricant de FPGA conseils. La performence des Gpu est l'amélioration plus rapide Cpu, et il est financé par les joueurs. C'est une technologie grand public, et il en sera probablement de fusion avec les Processeurs multi-core dans l'avenir et ainsi protéger votre investissement.

4voto

OutputLogic Points 426

Une solution basée sur le FPGA coûtera probablement beaucoup plus cher que CUDA.

3voto

CUDA est une somme assez importante de la base de code d'exemples et d'un SDK, y compris un BLAS back-end. Essayez de trouver des exemples similaires à ce que vous faites, peut-être aussi en regardant le GPU Gems série de livres, pour évaluer dans quelle mesure CUDA correspondent à vos applications. Je dirais que du point de vue logistique, CUDA est plus facile de travailler avec et de beaucoup, beaucoup moins cher que n'importe quel professionnel de FPGA outils de développement.

À un moment, je n'ai regarder dans CUDA pour la revendication de la réserve de la simulation de la modélisation. Il est tout à fait une bonne série de conférences liées sur le web-site pour apprendre. Sur Windows, vous devez vous assurer que CUDA est en cours d'exécution sur une carte n'affiche que le sous-système graphique a un minuteur qui permettra de nuke tout processus en cours d'exécution pendant plus de 5 secondes. Cela ne se produit pas sur Linux.

Tout mahcine avec deux connecteurs PCI-e x16 slots doit le soutenir. J'ai utilisé un HP XW9300, que vous pouvez ramasser sur ebay très bon marché. Si vous le faites, assurez-vous qu'il a deux CPU (et non de l'un PROCESSEUR dual-core) comme les slots PCI-e en direct sur des bus Hypertransport et vous avez besoin de deux CPU de la machine pour avoir les deux bus active.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X