Pourquoi les gens utilisent-ils des GPU pour le calcul haute performance au lieu d'une puce plus spécialisée?

105

D'après ce que j'ai compris, les gens ont commencé à utiliser les GPU pour l'informatique générale car ils constituent une source supplémentaire de puissance de calcul. Et bien qu’ils ne soient pas aussi rapides qu’un processeur pour chaque opération, ils comportent de nombreux cœurs, de sorte qu’ils peuvent être mieux adaptés au traitement en parallèle qu’un processeur. Cela a du sens si vous possédez déjà un ordinateur doté d’un GPU pour le traitement graphique, mais que vous n’avez pas besoin des graphiques et que vous souhaitez davantage de puissance de calcul. Mais je comprends aussi que les gens achètent des GPU spécifiquement pour ajouter de la puissance de calcul, sans intention de les utiliser pour traiter des graphiques. Pour moi, cela ressemble à l'analogie suivante:

Je dois couper mon gazon, mais ma tondeuse à gazon est faible. Je retire donc la cage du ventilateur que je garde dans ma chambre et affûte les pales. Je colle du ruban adhésif à ma tondeuse, et je trouve que cela fonctionne assez bien. Des années plus tard, je suis le responsable des achats pour une grande entreprise d’entretien des pelouses. J'ai un budget considérable à consacrer aux outils de tonte de gazon. Au lieu d’acheter des tondeuses à gazon, j’achète un groupe d’admirateurs. Encore une fois, ils fonctionnent bien, mais je dois payer pour des pièces supplémentaires (comme la cage) que je ne finirai pas par utiliser. (pour les besoins de cette analogie, nous devons supposer que les tondeuses à gazon et les ventilateurs de caisse coûtent environ le même prix)

Alors pourquoi n’existe-t-il pas un marché pour une puce ou un périphérique doté de la puissance de traitement d’un GPU, mais pas de la surcharge graphique? Je peux penser à quelques explications possibles. Lequel d'entre eux, le cas échéant, est correct?

  • Une telle alternative serait trop chère à développer alors que le GPU est déjà une bonne option (les tondeuses à gazon n’existent pas, pourquoi ne pas utiliser ce ventilateur parfait?).
  • Le fait que «G» signifie «graphisme» ne dénote qu'une utilisation envisagée et ne signifie pas que l'on s'efforce de rendre la puce plus adaptée au traitement graphique que tout autre type de travail (les tondeuses à gazon et les ventilateurs de caisses sont la même chose lorsque vous y arrivez, aucune modification n’est nécessaire pour que l’une fonctionne comme l’autre).
  • Les GPU modernes portent le même nom que leurs prédécesseurs, mais de nos jours, les modèles haut de gamme ne sont pas conçus pour traiter spécifiquement les graphiques (les ventilateurs box modernes sont conçus pour fonctionner principalement comme des tondeuses à gazon, même les plus anciennes).
  • Il est facile de traduire à peu près tous les problèmes dans le langage du traitement graphique (l’herbe peut être coupée en soufflant de l’air très rapidement).

MODIFIER:

On a répondu à ma question, mais compte tenu de certains commentaires et réponses, j'estime que je devrais clarifier ma question. Je ne demande pas pourquoi tout le monde n'achète pas ses propres calculs. Clairement, ce serait trop cher la plupart du temps.

J'ai simplement constaté qu'il semble exister une demande pour des appareils capables d'effectuer rapidement des calculs en parallèle. Je me demandais pourquoi il semble que le périphérique optimal soit l’unité de traitement graphique, par opposition à un périphérique conçu à cet effet.

Alex S
la source
66
Parce qu'ils sont spécialisés pour ce genre de chose; c'est fondamentalement le même type de maths. Et nVidia a construit et vendu des cartes exclusivement GPU pour permettre à ces personnes d'effectuer ce type de traitement de données extrêmement parallèle.
Heptite
7
Gardez à l'esprit que nous avons des "unités" spécialisées ajoutées aux puces. AES est fait en matériel (je pense) sur les processeurs. AVX est également implémenté dans le matériel. Cependant, où vous arrêtez-vous? Le fabricant de puces ne sait pas ce dont vous avez besoin et la plupart des gens ne disposent pas des capacités (technologiques ou financières) pour créer leurs propres puces conçues pour des tâches très spécifiques. Les cartes graphiques sont, comme on l'a déjà dit, un type d'architecture spécialisée, qui se prête bien à certaines tâches. Ils ne sont pas bons pour tout - mais pour certaines tâches spécifiques et donc utilisés ici.
DetlevCM
4
Une analogie plus précise remplacerait les ventilateurs de caisses par des moissonneuses-batteuses de 100 mètres de large.
MooseBoys
6
Mon PC est déjà doté d’un GPU prêt à l’emploi. Concevoir et produire une puce dédiée me coûterait quelques millions de dollars.
PlasmaHH
19
Essayez une autre analogie. Supposons que nous avons des ventilateurs de boîte et des rotors d'hélicoptère. Dans notre monde hypothétique, les applications destinées aux ventilateurs de caissons avaient de plus en plus besoin de ventilateurs de plus en plus gros, fonctionnant à des vitesses plus élevées, jusqu'à ce que nous obtenions des ventilateurs de caissons de 20 m en fibre de carbone et que la production en série les rendait bon marché. Ensuite, quelqu'un a compris qu'un ventilateur de boîte de 20 m est essentiellement un rotor d'hélicoptère entouré d'une cage. C'est vraiment pareil.
Graham

Réponses:

109

C'est vraiment une combinaison de toutes vos explications. Moins cher et plus facile, il existe déjà et le design s’est éloigné du pur graphisme.


Un processeur graphique moderne peut être considéré principalement comme un processeur de flux avec du matériel graphique supplémentaire (et des accélérateurs à fonction fixe, par exemple pour le codage et le décodage de la vidéo). La programmation GPGPU utilise actuellement des API spécialement conçues à cet effet (OpenCL, Nvidia CUDA, AMD APP).

Au cours des deux ou trois dernières décennies, les GPU sont passés d’un pipeline à fonction fixe (uniquement graphique) à un pipeline programmable (les shaders vous permettent d’écrire des instructions personnalisées) vers des API plus modernes comme OpenCL, qui offrent un accès direct aux cœurs de shader sans le pipeline graphique d'accompagnement.

Les bits graphiques restants sont mineurs. Ils représentent une si petite partie du coût de la carte qu'il n'est pas beaucoup moins coûteux de les laisser de côté et que vous assumez le coût d'un dessin supplémentaire. Cela n’est donc généralement pas fait - il n’existe pas d’équivalent orienté calcul de la plupart des GPU - sauf aux niveaux les plus élevés, et ceux-ci sont assez coûteux.

Les GPU "de jeu" normaux sont très couramment utilisés car des économies d’échelle et une simplicité relative les rendent peu coûteux et faciles à utiliser. Il est assez facile de passer de la programmation graphique à l’accélération d’autres programmes avec GPGPU. Il est également facile de mettre à niveau le matériel, car des produits plus récents et plus rapides sont disponibles, contrairement aux autres options.


En gros, les choix se résument à:

  • Processeur à usage général, idéal pour les branches et le code séquentiel
  • GPU "gaming" normal
  • GPU orienté vers le calcul, par exemple Nvidia Tesla et Radeon Instinct Ces derniers ne supportant souvent pas la sortie graphique, le GPU est un peu trompeur. Cependant, ils utilisent des cœurs de GPU similaires aux GPU normaux et le code OpenCL / CUDA / APP est plus ou moins directement portable.
  • Les FPGA, qui utilisent un modèle de programmation très différent et ont tendance à être très coûteux. C’est là qu’un obstacle important à l’entrée existe. Ils ne sont pas non plus nécessairement plus rapides qu'un GPU, en fonction de la charge de travail.
  • ASIC, circuits conçus sur mesure (matériel). Ceci est très très coûteux et ne vaut que très bien à une échelle extrême (nous parlons de plusieurs milliers d'unités, à tout le moins), et vous êtes certain que le programme n'aura jamais besoin d'être modifié. Ils sont rarement réalisables dans le monde réel. Vous devrez également repenser et tester le tout au fur et à mesure des avancées technologiques - vous ne pouvez pas simplement échanger un nouveau processeur, contrairement aux processeurs et aux GPU.
Bob
la source
16
Les ASIC ont également du sens lorsque l'informatique se paye littéralement pour elle-même (extraction de cryptage)
freak freak
4
En réalité, les FPGA sont souvent pires que les GPU. Le problème est que les FPGA sont très flexibles; ils peuvent mettre en œuvre de nombreuses opérations différentes. Cependant, le calcul est généralement une forme de calcul et, en réalité, la majeure partie n’est que deux opérations: l’addition et la multiplication (la soustraction et la division sont des variantes de ce qui précède). Les GPU sont très très bons dans ces deux opérations, bien plus que les FPGA.
MSalters
19
Vous devez clarifier davantage les FPGA. L'idée qu'il y ait une "avancée" est un peu trompeuse. Ils sont plus d'un pas de côté.
Yakk
6
À titre d’exemple, Google dispose de ses propres "unités de traitement Tenseur" pour l’apprentissage automatique. On ignore dans quelle mesure ils sont personnalisés, mais ils sont décrits comme des ASIC.
mbrig
4
@MSalters L'un des principaux arguments de vente des FPGA par rapport aux GPU est la performance / Watt, qui devient de plus en plus importante à mesure que les centres de données commencent à heurter le mur de pouvoir (les FPGA consomment généralement moins d'énergie). En ce qui concerne les mathématiques, les FPGA sont comparables aux GPU en arithmétique à virgule fixe et à calcul entier, et ne font que décaler en mathématique à virgule flottante.
Wilcroft
32

Mon analogie préférée:

  • CPU : Un génie Polymath. Peut faire une ou deux choses à la fois, mais ces choses peuvent être très complexes.
  • GPU : une tonne de travailleurs peu qualifiés. Chacun d'eux ne peut pas faire de très gros problèmes, mais dans la masse, vous pouvez faire beaucoup de choses. Pour répondre à votre question, oui, il y a des frais graphiques mais je pense que c'est marginal.
  • ASIC / FPGA : Une entreprise. Vous pouvez embaucher une tonne de travailleurs peu qualifiés ou un couple de génies, ou une combinaison de travailleurs peu qualifiés et de génies.

Ce que vous utilisez dépend de la sensibilité aux coûts, du degré de parallélisabilité d'une tâche et d'autres facteurs. En raison de la façon dont le marché a évolué, les GPU sont le meilleur choix pour la plupart des applications hautement parallèles et les processeurs sont le meilleur choix lorsque la puissance et le coût unitaire sont les préoccupations principales.

Directement à votre question: pourquoi un GPU sur un ASIC / FPGA? Généralement coûté. Même avec les prix GPU gonflés d'aujourd'hui, il est toujours (généralement) moins coûteux d'utiliser un GPU que de concevoir un ASIC pour répondre à vos besoins. Comme @ user912264 le souligne, certaines tâches spécifiques peuvent être utiles pour les ASIC / FPGA. Si vous avez une tâche unique et que vous tirez parti de l’échelle, il peut être intéressant de concevoir un ASIC / FPGA. En fait, vous pouvez concevoir / acheter / concéder sous licence des conceptions FPGA spécifiquement à cette fin. Ceci est fait pour alimenter les pixels dans les téléviseurs haute définition par exemple.

BobtheMagicMoose
la source
7
De toute façon, les commentaires ne sont pas destinés à répondre, et cela me semble une réponse raisonnable.
Raimund Krämer
1
@BobtheMogicMoose Mais l'utilisation d'un FPGA personnalisé conçu pour l'analyse génomique peut s'avérer beaucoup plus rapide que d'avoir le code équivalent dans un GPU. Lorsque vous payez des scientifiques pour attendre les résultats, le FPGA plus rapide se paye très vite.
doneal24
Les FPGA deviennent de plus en plus accessibles au développeur habituel - Microsoft, par exemple, a une solution cloud AI utilisant des FPGA (Project BrainWave). AWS propose également des offres. N'importe qui peut louer des FPGA personnalisés pour des tâches spécialisées sans avoir à les construire eux-mêmes, ce qui n'est pas réalisable pour de nombreux cas d'utilisation, même il y a quelques années.
Brichins
Oui, je pense qu'il existe même des kits de loisirs FPGA comparables à un arduino raspberry-pi. Je pense toujours que la programmation des FPGA est bien plus coûteuse que des architectures plus développées.
BobtheMagicMoose
10

Votre analogie est mauvaise. Par analogie, lorsque vous achetez du matériel pour une grande entreprise d’entretien des pelouses, vous supposez qu’il existe de bonnes tondeuses à gazon. Ce n'est pas le cas dans le monde de l'informatique - les GPU sont le meilleur outil disponible.

Les coûts de R & D et les gains de performances possibles pour une puce spécialisée sont probablement trop élevés pour justifier son utilisation.

Cela dit, je suis au courant que Nvidia a mis au point des GPU spécialement conçus pour l’informatique grand public - ils n’ont pas de sortie vidéo - un peu comme si on vendait des ventilateurs de boîte avec les cages déjà retirées.

jstbnfdsrtah
la source
9

Bien sûr, vous pouvez utiliser des puces spécialisées, soit pour l'efficacité énergétique, soit pour la vitesse de calcul. Laissez-moi vous raconter l'histoire de l'exploitation minière Bitcoin:

  • Bitcoin est nouveau, les miens geeks avec leurs processeurs.
  • Bitcoin est un peu nouveau, le malin geeks avec ses GPU.
  • Bitcoin est maintenant (un peu) célèbre, les gens achètent des FPGA.
  • Le bitcoin est maintenant célèbre (2013), même les débutants achètent des ASIC ("Application Specific Integrated Circuits") pour une exploitation efficace.
  • Bloquer les baisses de récompense (périodiquement), même les anciens ASIC ne sont plus rentables.

Donc non, il n'y a aucune raison d'utiliser un GPU au lieu d'une "calculatrice géante" spécialisée. Plus les incitations économiques sont importantes, plus le matériel est spécialisé. Cependant, ils sont assez difficiles à concevoir et impossibles à fabriquer si vous n'en produisez pas des milliers à la fois. Si ce n'est pas viable de concevoir des puces, vous pouvez acheter un de ceux du Walmart le plus proche.

TL; DR Bien sûr, vous pouvez utiliser des puces plus spécialisées.

MCCCS
la source
1
"Bien sûr, vous pouvez utiliser des puces plus spécialisées" - mais il existe des puces spécialisées pour le bitcoin (SHA-256), puis pour le litecoin (scrypt) et c'est à peu près tout. Le matériel informatique hautes performances pour d'autres problèmes n'existe pas. (C'est-à-dire, avec des performances supérieures aux GPU haut de gamme actuels)
Agent_L
8

Ce que vous décrivez dans votre analogie est exactement ce qui s’est passé. Juste au moment où vous attrapez votre ventilateur et affiliez les lames pour essayer de l’utiliser comme tondeuse, un groupe de recherches a réalisé: "Hé, nous avons une assez jolie unité de traitement multicœur ici, essayons de l’utiliser pour des calculs généraux! ".

Le résultat était bon et la balle a commencé à rouler. Le GPU est passé d’un périphérique graphique à la prise en charge du calcul général pour aider dans les situations les plus difficiles.

Car de toute façon, l’opération la plus exigeante en calcul que nous attendons des ordinateurs est la représentation graphique. Il suffit de jeter un coup d'œil sur les avancées stupéfiantes de l'apparence actuelle des jeux par rapport à celles d'il y a quelques années. Cela signifie que beaucoup d’efforts et d’argent ont été consacrés au développement des GPU et que leur utilisation pourrait également servir à accélérer une certaine classe de calcul général (c’est-à-dire extrêmement parallèle) qui ne faisait qu’ajouter à leur popularité.

Donc, en conclusion, la première explication que vous proposez est la plus précise:

  • Une telle alternative serait trop chère à développer alors que le GPU est déjà une bonne option.

Les GPU, là où ils étaient déjà là, sont facilement disponibles pour tout le monde et ils ont travaillé.

Mario Chapa
la source
5
Je ne suis pas d’accord sur le fait que "l’opération la plus exigeante en calcul" soit le graphisme, cela dépend bien sûr de qui est exactement "nous". Pour les utilisateurs généraux, oui, mais dans la communauté des sciences et de l'ingénierie, il y a beaucoup de choses plus exigeantes que les graphiques. Après tout, des graphiques acceptables (comme pour les jeux) peuvent être réalisés avec un seul combo PC et GPU de milieu de gamme. Des problèmes significatifs combinent souvent des centaines, voire des milliers, de telles unités pour obtenir des performances dans la gamme de pétaflops - et ensuite, des problèmes peuvent encore prendre des jours, voire des semaines, de calcul.
jamesqf
L’opération la plus exigeante en termes de calcul que j’attends de mon ordinateur est techniquement graphique, mais les calculs structure-à-partir du mouvement ne sont pas ce à quoi la plupart des gens (ou des concepteurs de GPU) pensent quand ils entendent le mot «graphiques».
Mark
5

Plus précisément, les GPU ne sont pas des "cœurs" au sens de "parallélisme de tâches". Pour la plupart, il se présente sous la forme de "parallélisme de données". SIMD est "instruction unique données multiples". Cela signifie que vous ne feriez pas ceci:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Cela signifie que vous disposez de 1024 instructions d'instruction effectuant toutes des tâches distinctes progressant à des vitesses différentes. SIMD, ou "informatique vectorielle" exécute des instructions sur des tableaux entiers en une seule fois, plus comme ceci:

c = a * b

Les "boucles" sont dans les instructions "*" et "=", plutôt qu'en dehors des instructions. Ce qui précède ferait cela pour tous les 1024 éléments en même temps, au pointeur d'instruction SAME pour tous. C'est comme avoir trois registres énormes pour a, b et c. Le code SIMD est extrêmement contraint et ne fonctionne bien que pour les problèmes qui ne sont pas trop "ramifiés".

Dans des cas réalistes, ces valeurs SIMD ne sont pas aussi importantes que 1024 éléments. Imaginez une variable qui est un gang d’int32 lié ensemble. Vous pouvez penser à la multiplier et affecter comme une instruction machine réelle.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Les vrais GPU sont plus compliqués que SIMD, mais c’est leur essence. C'est pourquoi vous ne pouvez pas lancer un algorithme de processeur aléatoire sur un processeur graphique et vous attendre à une accélération. Plus l'algorithme comporte de branchements d'instructions, moins il est approprié pour un GPU.

Rob
la source
5

Les autres réponses ici sont très bonnes. Je vais aussi verser mes 2 centimes.

Une des raisons pour lesquelles les processeurs sont devenus si omniprésents est leur flexibilité. Vous pouvez les reprogrammer pour une infinité de tâches. De nos jours, il est moins coûteux et plus rapide pour les entreprises qui fabriquent des produits d'insérer un petit processeur ou un microcontrôleur dans quelque chose et de le programmer, plutôt que de développer des circuits personnalisés pour effectuer la même tâche.

En utilisant le même appareil que les autres, vous pouvez tirer parti des solutions connues aux problèmes rencontrés avec ce même appareil (ou similaire). Et à mesure que la plate-forme mûrit, vos solutions évoluent et deviennent très matures et optimisées. Les personnes qui codent sur ces appareils acquièrent également une expertise et deviennent très performantes.

Si vous deviez créer un nouveau type d’appareil à partir de rien, une alternative au GPU, il faudrait des années pour que les utilisateurs les plus anciens adoptent réellement le savoir. Si vous connectez un ASIC à votre CPU, comment optimiser les calculs de déchargement sur ce périphérique?

La communauté de l’architecture informatique est enthousiasmée par cette idée depuis plusieurs années (évidemment, elle était populaire auparavant, mais a récemment connu une renaissance). Ces «accélérateurs» (leur terme) ont des degrés différents de reprogrammabilité. Le problème est de savoir dans quelle mesure définissez-vous l'étendue du problème que votre accélérateur peut résoudre? J'ai même parlé à des personnes qui travaillaient à la création d'un accélérateur utilisant des circuits analogiques avec amplificateurs opérationnels pour calculer des équations différentielles. Excellente idée, mais portée extrêmement étroite.

Une fois que vous avez un accélérateur opérationnel, les forces économiques vont décider de votre destin. L'inertie du marché est une force incroyable. Même si quelque chose est une bonne idée, est-il économiquement possible de refactoriser vos solutions de travail pour utiliser ce nouvel appareil? Peut-être peut-être pas.

Les GPU sont en fait horribles pour certains types de problèmes, de sorte que de nombreuses personnes / entreprises travaillent sur d'autres types de périphériques. Mais les GPU sont déjà tellement enracinés que leurs appareils deviendront-ils jamais économiquement viables? Je suppose que nous verrons.

Edit: Élargir un peu ma réponse, maintenant que je ne suis plus dans le bus.

Le projet Intel Larrabee est une étude de cas prudente. Cela a commencé comme un dispositif de traitement parallèle capable de créer des graphiques dans un logiciel; il n'y avait pas de matériel graphique spécialisé. J'ai parlé à quelqu'un qui travaillait sur le projet, et l'une des principales raisons pour lesquelles il a dit que cela avait échoué et avait été annulé (en plus d'une politique interne horrible) était qu'ils ne pouvaient tout simplement pas obtenir du compilateur qu'il produise un code correct. Bien sûr, cela produisait du code de travail, mais si tout le but de votre produit est la performance maximale, il vaut mieux avoir un compilateur qui produit un code plutôt optimal. Cela nous ramène à mon commentaire précédent sur le manque d’expertise profonde en matériel et en logiciel pour votre nouveau périphérique, qui pose un gros problème.

Certains éléments de la conception Larrabee ont été intégrés au MIC Xeon Phi / Intel. Ce produit a effectivement été mis sur le marché. Il était entièrement axé sur la parallélisation des calculs scientifiques et autres types de calcul HPC. On dirait que c'est un échec commercial maintenant. Une autre personne à qui j'ai parlé chez Intel a laissé entendre qu'elle n'était tout simplement pas compétitive en termes de rapport prix / performances avec les GPU.

Les gens ont essayé d'intégrer la synthèse logique des FPGA dans les compilateurs, de sorte que vous puissiez générer automatiquement du code pour vos accélérateurs FPGA. Ils ne fonctionnent pas très bien.

Le nuage semble être un lieu propice aux accélérateurs ou à d’autres alternatives aux GPU. L'économie d'échelle qui existe dans ces grandes entreprises telles que Google, Amazon et Microsoft rend l'investissement dans des schémas de calcul alternatifs intéressant. Quelqu'un a déjà mentionné les unités de traitement du tenseur de Google. Microsoft dispose de FPGA et d’autres éléments dans son infrastructure Bing et Azure. Même histoire avec Amazon. Il est tout à fait logique que l’échelle puisse compenser votre investissement en temps, en argent et en larmes d’ingénieur.

En résumé, la spécialisation est en contradiction avec beaucoup d'autres choses (économie, maturité de la plate-forme, expertise en ingénierie, etc.). La spécialisation peut considérablement améliorer vos performances, mais elle réduit la portée de votre appareil. Ma réponse a mis l’accent sur de nombreux aspects négatifs, mais la spécialisation présente également de nombreux avantages. Il faut absolument poursuivre et enquêter, et comme je l’ai mentionné plus tôt, de nombreux groupes le font de manière très agressive.

Désolé, éditez à nouveau: je pense que votre prémisse initiale est fausse. Je pense qu’il s’agissait moins de chercher des sources supplémentaires de puissance de calcul, mais plutôt de reconnaître les opportunités. La programmation graphique est très lourde en algèbre linéaire, et le GPU a été conçu pour effectuer efficacement des opérations courantes telles que multiplication de matrice, opérations de vecteur, etc. Opérations qui sont également très courantes dans le calcul scientifique.

L'intérêt pour les GPU a commencé au moment même où les gens ont fini par reconnaître que les promesses du projet EPIC Intel / HP étaient largement surestimées (fin des années 90, début des années 2000). Il n'y avait pas de solution générale à la parallélisation du compilateur. Donc, plutôt que de dire "où trouvons-nous plus de puissance de traitement, oh, nous pourrions essayer le GPU", je pense que c’était plus "nous avons quelque chose qui est bon pour les calculs parallèles, pouvons-nous le rendre plus généralement programmable". Un grand nombre de personnes impliquées appartenaient à la communauté informatique scientifique, qui disposaient déjà d'un code Fortran parallèle pouvant être exécuté sur des machines Cray ou Tera (Tera MTA comptait 128 threads matériels). Peut-être y a-t-il eu un mouvement des deux côtés, mais je n’ai entendu parler que des origines de GPGPU.

NerdPirate
la source
Par «accélérateurs», faites-vous référence à du matériel sur mesure ou à des super-grappes de nœuds d’informatique de faible puissance? Pouvez-vous élaborer en fournissant des références à quelques exemples de matériel d'accélérateur.
Manav mn
Désolé, je pensais l'avoir précisé du contexte. Accelerator est simplement un terme générique désignant un coprocesseur ou une carte de déchargement. La virgule flottante était à l'origine dans un coprocesseur et non dans la CPU principale, et cela aurait été considéré comme un accélérateur. Les GPU, les DSP, les Xeon Phi, les FPGA quand ils sont sur une carte PCIe ou quelque chose de similaire, l'équation différentielle analogique que j'ai mentionnée, il y a des périphériques qui aident à la virtualisation, il y a actuellement des recherches sur les accélérateurs de réseaux neuronaux. Ce sont tous des exemples d'accélérateurs.
NerdPirate
4

entrez la description de l'image ici

Un ASIC (silicium personnalisé) est très rapide, mais sa conception et sa fabrication sont très onéreuses. Auparavant, les ASIC étaient spécifiques à un usage spécifique, et la CPU était une approche permettant de "programmer" les ordinateurs afin que les tâches informatiques puissent être exécutées par logiciel. Les premiers processeurs donnaient aux utilisateurs la possibilité de tirer parti de la puissance des circuits ASIC sans les coûts énormes liés à la programmation de la puce sur le terrain. Cette approche a tellement de succès qu’elle a donné naissance à l’ordinateur (très) rapide que vous utilisez actuellement.

Alors pourquoi les GPU?

Au milieu des années 90, 3DFX s'est rendu compte que les tâches de rendu 3D étaient si spécifiques qu'un ASIC personnalisé serait BEAUCOUP meilleur qu'un processeur. Ils ont créé un co-processeur informatique qui délestait les tâches de rendu 3D du processeur vers ce co-processeur, qu'ils ont appelé un "GPU". La concurrence et la demande du marché ont conduit l'innovation dans ce domaine à un point tel que les GPU effectuaient des calculs BEAUCOUP plus rapidement que les CPU, alors la question qui se posait était: "Pourquoi ne puis-je pas utiliser le GPU pour calculer mes chiffres au lieu du CPU?" Les fabricants de GPU ont vu une demande et un moyen de gagner plus d’argent. Ils ont donc commencé à modifier leurs plates-formes pour permettre aux développeurs d’utiliser leur matériel. Mais le matériel informatique était si spécifique qu'il existait et qu'il restait des limites à ce que vous pouvez demander au GPU de faire. Je ne vais pas entrer dans les détails sur pourquoi ici.

Alors, pourquoi n'y avait-il pas plus de silicium spécifique? Pourquoi JUST Graphics?

Deux raisons: 1) Prix. Les GPU avaient un bon marché et pouvaient le justifier, mais même à l'époque, c'était un risque énorme. Personne ne savait vraiment si 3DFX pourrait faire un profit (en fait, ils ne pouvaient pas réellement, et sont devenus obsolètes). Même maintenant, avec la taille du marché des GPU, il n’ya vraiment que 3 concurrents. 2) Les processeurs répondaient effectivement au besoin de "silicium personnalisé" avec des extensions d’instructions. Revenons à MMX. C’était en fait la tentative d’Intel d’accélérer les graphismes dans le processeur alors que 3DFX prenait de la vitesse. Depuis lors, le jeu d'instructions x86 est devenu assez volumineux avec toutes ces extensions personnalisées. À l’époque, beaucoup de ces extensions avaient un sens (comme le MMX), mais ne sont pour l’instant plus quasiment nul dans le processeur. Cependant, vous ne pouvez pas les supprimer car cela endommagerait les logiciels existants. Il' s en fait l’un des arguments de vente d’ARM - ARM est un jeu d’instructions simplifié. Il n'y a pas autant d'extensions d'instructions, mais cela rend le silicium plus petit et moins cher à fabriquer.

Il me semble que vous pourriez gagner beaucoup d’argent si vous pouviez réduire le coût du silicium personnalisé. Est-ce que quelqu'un ne travaille pas là-dessus?

Il existe une technologie appelée FPGA - réseau de portes programmables sur site, qui existe depuis les débuts de l'informatique. C'est essentiellement une puce que vous pouvez concevoir "sur le terrain" à l'aide d'un logiciel. C'est une technologie très cool, mais toute la structure nécessaire pour rendre la puce programmable utilise BEAUCOUP de silicium et les fait fonctionner à des vitesses d'horloge beaucoup plus basses. Les FPGA PEUVENT être plus rapides que les CPU, si vous avez assez de silicium sur la puce ET que vous pouvez paralléliser efficacement la tâche. Mais ils sont limités dans la quantité de logique que vous pouvez leur donner. Tous les FPGA, à l'exception des plus chers, étaient plus lents que les GPU pour l'exploitation minière au début des bitcoins, mais leurs homologues ASIC ont mis fin à la rentabilité de l'exploitation des GPU. D'autres crypto-devises ont utilisé des algorithmes spécifiques qui ne peuvent pas être mis en parallèle, de sorte que les FPGA et les ASIC

Le limiteur principal avec les FPGA est la taille du silicium - combien de logique pouvez-vous insérer sur la puce? La seconde est la vitesse d'horloge, car il est difficile d'optimiser des éléments tels que les points chauds, les fuites et les diaphonies dans un FPGA. Des méthodes de fabrication plus récentes ont minimisé ces problèmes et Intel s’est associé à Altera pour fournir un FPGA pouvant être utilisé par les ingénieurs pour tirer parti des avantages du "silicium personnalisé" en tant que co-processeur dans un serveur. Donc, ça vient, dans un sens.

Les FPGA remplaceront-ils jamais les processeurs et les GPU?

Probablement pas de sitôt. Les derniers CPU et GPU sont MASSIVE et le silicium hautement optimisé pour les performances thermiques et électriques. Vous ne pouvez pas optimiser les FPGA de la même manière qu'un ASIC personnalisé. À moins d’une technologie révolutionnaire, le processeur restera probablement le cœur de votre ordinateur avec les coprocesseurs FPGA et GPU.

Robear
la source
1
À l’époque, beaucoup de ces extensions avaient un sens (comme le MMX), mais ne sont pour l’instant plus quasiment nul dans le processeur. Le rendu 3D est loin d'être le seul cas d'utilisation de SIMD. Le "poids" de MMX est constitué principalement par les unités d’exécution, qui peuvent être partagées avec des vecteurs plus larges tels que SSE2, AVX2 et AVX512. Celles-ci sont largement utilisées pour le codage vidéo de haute qualité sur les processeurs, et pour de nombreuses autres tâches, y compris l'informatique haute performance. Mais aussi des implémentations de bibliothèques de memchr, strlen et beaucoup d'autres choses. par exemple, filtrer un tableau de plus d'un élément à la fois
Peter Cordes
3

En effet, il existe des cartes spécialisées pour l'informatique à haut débit, par exemple Xilinx possède une liste de 178 cartes PCI-e utilisant leurs FPGA, et environ un tiers de ces cartes sont des "calculateurs de nombres" avec un ou plusieurs puissants puces FPGA et beaucoup carte mémoire DDR. Il existe également des cartes DSP hautes performances ( exemple ) destinées aux tâches informatiques hautes performances.

Je suppose que la popularité des cartes GPU provient de leur objectif de toucher un groupe de clients plus large. Vous n'avez pas besoin d'investir dans un matériel spécial pour jouer avec Nvidia CUDA. Par conséquent, lorsque vous aurez une tâche nécessitant un matériel spécial, les GPU Nvidia auront un avantage concurrentiel car vous savez déjà comment les programmer.

Dmitry Grigoryev
la source
2

Je pense que la réponse à votre question dépend de la manière de définir le calcul haute performance.

En général, le calcul haute performance est lié au temps de calcul. Dans ce cas, j'aime bien partager le lien d' un cluster de calcul haute performance .

Le lien est spécifié la raison d'utilisation du GPU; L'utilisation de cartes graphiques (ou plutôt de leurs GPU) pour effectuer des calculs pour le calcul en grille est beaucoup plus économique que l'utilisation d'un processeur, même si elle est moins précise.

Cloud Cho
la source
2
Les GPGPU haut de gamme offrent un bon débit pour une doubleprécision de 64 bits , et pas seulement pour une résolution de 32 bits à simple précision float. (Certains GPU réguliers lésinent sur HW pour double). Les principaux fournisseurs prennent tous en charge les mathématiques IEEE FP (je pense même avec les dénormaux). Il n’ya donc pas de perte de précision à moins que vous ne souhaitiez échanger précision contre performance, par exemple avec un FP en demi-précision 16 bits qui offre un débit encore meilleur sur certains matériels (et bien sûr une moitié de la bande passante mémoire). Le code hautes performances sur les processeurs utilise également le 32 bits floatégalement, ce qui permet d'obtenir deux fois plus d'éléments par vecteur SIMD et deux fois moins de bande passante mémoire.
Peter Cordes
1
@PeterCordes J'ai vu certains travaux en informatique approximative allant même jusqu'à virgule flottante de huit bits, bien que je ne pense pas que de nombreux GPU le prennent en charge dans le matériel.
JAB