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


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 rapides en tant que processeur pour chaque opération, ils ont de nombreux cœurs, de sorte qu’ils peuvent être mieux adaptés au traitement parallèle qu’un processeur. Cela a du sens si vous possédez déjà un ordinateur qui a un GPU pour le traitement des graphiques, mais vous n'avez pas besoin des graphiques, et vous souhaitez une plus grande puissance de calcul. Mais je comprends aussi que les gens achètent des GPU Plus précisément pour ajouter de la puissance de calcul, sans intention de les utiliser pour traiter des graphiques. Pour moi, cela ressemble à l'analogie suivante:

J'ai besoin de couper mon gazon, mais ma tondeuse à gazon est mince. Alors je retire la cage du ventilateur de la boîte que je garde dans ma chambre et aiguise les lames. Je conduis du ruban adhésif à ma tondeuse, et je trouve que cela fonctionne raisonnablement bien. Des années plus tard, je suis responsable des achats pour une grande entreprise d'entretien des pelouses. J'ai un budget important à dépenser pour les outils de coupe. Au lieu d'acheter des tondeuses à gazon, j'achète un groupe de fans de boîtes. Encore une fois, ils fonctionnent bien, mais je dois payer pour des pièces supplémentaires (comme la cage) que je ne vais pas utiliser. (Aux fins de cette analogie, nous devons supposer que les tondeuses à gazon et les ventilateurs de boîte coûtent à peu près le même prix)

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

  • Une telle alternative serait trop coûteuse à développer lorsque le GPU est déjà une bonne option (les tondeuses à gazon n'existent pas, pourquoi ne pas utiliser ce parfait ventilateur de boîte?).
  • Le fait que «G» soit synonyme de graphisme dénote uniquement une utilisation prévue, et ne signifie pas que tout effort est fait pour que la puce soit mieux adaptée au traitement graphique que tout autre type de travail (les tondeuses et les ventilateurs sont identiques). vous y parvenez, 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 antérieurs, mais ces derniers ne sont pas conçus pour traiter spécifiquement les graphiques (les ventilateurs de boîtes modernes sont conçus pour fonctionner principalement comme des tondeuses à gazon, même si les anciennes ne l'étaient pas).
  • Il est facile de traduire à peu près n'importe quel problème 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 sur la base 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 observé qu'il semble y avoir une demande pour des appareils capables d'effectuer rapidement des calculs parallèles. Je me demandais pourquoi il semble que le meilleur appareil de ce type soit l’unité de traitement graphique, par opposition à un appareil conçu à cet effet.


104
2018-06-05 03:06


origine


Parce qu'ils sont spécialisé pour ce type de chose; c'est fondamentalement le même type de maths. Et nVidia a construit et vendu des cartes GPU uniquement pour que les utilisateurs effectuent ce type de traitement massivement parallèle. - Heptite
Gardez à l'esprit que nous avons des "unités" spécialisées ajoutées aux puces. AES se fait en matériel (je pense) sur les CPU. AVX est également implémenté dans le matériel. Cependant, où vous arrêtez-vous? Le Chipmaker ne sait pas ce dont vous avez besoin et la plupart des gens n’ont pas les capacités (technologiques ou financières) d’avoir leurs propres puces conçues pour des tâches très spécifiques. Les cartes graphiques sont - comme d'autres 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 là-bas. - DetlevCM
Une analogie plus précise remplacerait les ventilateurs de boîtes avec des moissonneuses-batteuses de 100 mètres de large. - MooseBoys
Mon PC a déjà un GPU prêt à l'emploi, la conception et la production d'une puce dédiée me coûteraient quelques millions. - PlasmaHH
Essayez une autre analogie. Supposons que nous ayons des ventilateurs de boîtes et que nous ayons des rotors d'hélicoptères. Dans notre monde hypothétique, les applications destinées aux fans de box nécessitaient de plus en plus de ventilateurs fonctionnant à des vitesses plus élevées, jusqu’à ce que nous obtenions des ventilateurs à boîtier en fibre de carbone de 20 m et que la production en série les rende moins chères. Ensuite, quelqu'un s'est rendu compte qu'un ventilateur de boîte de 20 m était essentiellement un rotor d'hélicoptère avec une cage autour de lui. C'est vraiment pareil. - Graham


Réponses:


C'est vraiment une combinaison de toutes vos explications. Moins cher et plus facile, existe déjà, et le design est passé de graphiques purs.


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

Au cours de la dernière décennie ou deux, les GPU sont passés d’un pipeline à fonction fixe (à peu près uniquement des graphiques) à un pipeline programmable (les shaders vous permet d'écrire des instructions personnalisées) sur des API plus modernes telles qu'OpenCL qui fournissent un accès direct aux cœurs de shader sans le pipeline graphique associé.

Les bits graphiques restants sont mineurs. Ils représentent une si petite partie du coût de la carte qu’il n’en coûte pas beaucoup moins cher de les laisser de côté et que vous payez le coût d’une conception supplémentaire. Donc, cela n'est généralement pas fait - il n'y a pas d'équivalent orienté calcul pour la plupart des GPU - sauf aux niveaux les plus élevés, et ceux-ci sont assez coûteux.

Les GPU "gaming" normaux sont très couramment utilisés car les économies d'échelle et la simplicité relative les rendent peu coûteux et faciles à utiliser. C'est un chemin assez simple, 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.


Fondamentalement, les choix se résument à:

  • CPU à usage général, idéale pour le branchement et le code séquentiel
  • GPU "gaming" normal
  • GPU orienté calcul, par ex. Nvidia tesla et Radeon Instinct Celles-ci ne prennent souvent pas en charge la sortie graphique, le GPU est donc 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 nécessairement plus rapides qu'un GPU, en fonction de la charge de travail.
  • ASIC, circuits personnalisés (matériel). C'est très très cher et cela ne vaut que la peine avec une échelle extrême (nous parlons de milliers d'unités au moins) et vous êtes sûr que le programme n'aura jamais besoin de changer. Ils sont rarement réalisables dans le monde réel. Vous devrez également repenser et tester tout le système chaque fois que la technologie avance - vous ne pouvez pas simplement changer de processeur comme vous le faites avec les processeurs et les processeurs graphiques.

108
2018-06-05 04:10



Les ASIC ont également un sens lorsque l'informatique est littéralement payante (crypto mining) - ratchet freak
En fait, 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 fait, le volume ne représente que deux opérations: l'addition et la multiplication (soustraction et division sont des variantes de ce qui précède). Les GPU sont très, très bons à ces deux opérations, beaucoup plus que les FPGA. - MSalters
Vous devez clarifier davantage sur les FPGA. L'idée qu'il y a un "pas à pas" est un peu trompeuse. Ils sont plus un pas de côté. - Yakk
À titre d'exemple du dernier, Google a ses propres "unités de traitement Tensor" pour l'apprentissage automatique. Dans quelle mesure elles sont personnalisées ne sont pas claires, mais sont décrites comme étant des ASIC. - mbrig
@MSalters L'un des principaux arguments de vente des FPGA sur les GPU est la performance / Watt, qui devient de plus en plus importante à mesure que les centres de données commencent à percer sur le mur (les FPGA sont généralement plus économes en énergie). En ce qui concerne les mathématiques, les FPGA sont comparables aux GPU en arithmétique à virgule fixe et en nombre entier, et ne sont décalés qu'en mathématiques à virgule flottante. - wilcroft


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'entre eux ne peut pas faire de gros problèmes, mais en masse, vous pouvez faire beaucoup. A votre question, oui, il y a des graphiques mais je crois 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élisation d'une tâche et d'autres facteurs. En raison de la performance du marché, les processeurs graphiques sont le meilleur choix pour la plupart des applications hautement parallèles et les processeurs sont le meilleur choix lorsque l’énergie et le coût unitaire sont les principales préoccupations.

Directement à votre question: pourquoi un GPU sur un ASIC / FPGA? Coût généralement Même avec les prix actuels du GPU, 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, il existe des tâches spécifiques qui peuvent être utiles pour les ASIC / FPGA. Si vous avez une tâche unique et que vous bénéficierez d'une mise à l'échelle, cela peut valoir la peine de concevoir un ASIC / FPGA. En fait, vous pouvez concevoir / acheter / licencier des designs FPGA spécifiquement à cette fin. Ceci est fait pour alimenter les pixels des téléviseurs haute définition par exemple.


32
2018-06-05 16:28



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


Votre analogie est mauvaise. Par analogie, lorsque vous achetez de l’équipement pour une grande entreprise d’entretien des pelouses, vous assumer il y a de bonnes tondeuses à gazon disponibles. 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 performance possibles pour une puce spécialisée sont probablement trop élevés pour en justifier la création.

Cela dit, je sais que Nvidia a sorti certains GPU spécifiquement pour l'informatique à usage général - ils n'avaient pas de sorties vidéo - un peu comme la vente de ventilateurs avec les cages déjà supprimées.


10
2018-06-05 16:06





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

  • Bitcoin est nouveau, les geeks sont avec leurs processeurs.
  • Bitcoin est quelque peu nouveau, les geeks intelligents sont à moi avec leurs GPU.
  • Bitcoin est maintenant (un peu) célèbre, les gens achètent des FPGA.
  • Bitcoin est maintenant célèbre (2013), même les débutants achètent des ASIC ("Application Specific Integrated Circuits") pour exploiter efficacement.
  • Bloquer les gouttes de récompense (périodiquement), même les anciens ASIC ne sont plus rentables.

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

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


9
2018-06-05 12:52



"Bien sûr, vous pouvez utiliser des puces plus spécialisées" - mais il existe des puces spécialisées pour Bitcoin (SHA-256), puis pour Litecoin (Scrypt) et c'est à peu près tout. Il n'existe pas de matériel informatique performant pour d'autres problèmes. (C'est-à-dire avec des performances supérieures à celles des GPU haut de gamme actuels) - Agent_L


Ce que vous décrivez dans votre analogie est exactement ce qui s'est passé. Tout comme vous avez attrapé votre ventilateur et aiguisé les lames pour essayer de l'utiliser comme une tondeuse, un groupe de chercheurs a réalisé "Hé, nous avons une unité de traitement multi-coeurs plutôt sympa, essayons de l'utiliser pour des calculs généraux! ".

Le résultat était bon et le ballon a commencé à rouler. Le GPU est passé d'un appareil graphique uniquement à la prise en charge du calcul à usage général pour aider dans les situations les plus exigeantes.

Car de toute façon, l’opération la plus exigeante du point de vue informatique que nous attendons des ordinateurs est celle des graphiques. Il suffit de regarder les progrès spectaculaires de l'apparence des jeux par rapport à ce qu'ils étaient 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 le fait qu’ils puissent également être utilisés pour accélérer une certaine classe de calcul à usage général (c’est-à-dire extrêmement parallèle) n’a fait qu’accroître leur popularité.

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

  • Une telle alternative serait trop coûteuse à développer lorsque le GPU est déjà une bonne option.

Les GPU là où ils sont déjà, ils sont facilement accessibles à tous et ils ont travaillé.


8
2018-06-05 06:53



Je ne suis pas d'accord sur "les opérations les plus exigeantes du point de vue informatique", les graphismes dépendant bien sûr de l'identité de "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, les graphismes acceptables (comme pour les jeux) peuvent être réalisés avec un seul combo PC et GPU de milieu de gamme. Des problèmes importants combinent souvent des centaines ou des milliers d'unités de ce type pour obtenir des performances dans la gamme des pétaflops - et les problèmes peuvent encore prendre des jours ou des semaines de temps de calcul. - jamesqf
L'opération la plus exigeante en termes de calcul que j'attends de mon ordinateur est techniquement Les graphiques, mais les calculs de structure par mouvement ne sont pas ce que la plupart des gens (ou des concepteurs de GPU) pensent quand ils entendent le mot "graphiques". - Mark


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 d'un "parallélisme de données". SIMD est "données multiples à instruction unique". 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 avez 1024 pointeurs d’instructions exécutant des tâches distinctes à des vitesses différentes. SIMD, ou "vector computing" va exécuter des instructions sur des tableaux entiers en même temps, 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 le ferait pour tous les 1024 éléments en même temps, au pointeur d’instruction SAME pour tous. C'est comme avoir trois énormes registres 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 «branchés».

Dans des cas réalistes, ces valeurs SIMD ne sont pas aussi grandes que 1024 éléments. Imaginez une variable qui est un gang d'int32 lié entre eux. Vous pouvez penser à la multiplication et attribuer une véritable instruction à la machine.

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

Les vrais GPU sont plus compliqués que SIMD, mais ils en sont l'essence. C'est pourquoi vous ne pouvez pas simplement lancer un algorithme de processeur aléatoire sur un GPU et attendre une accélération. Plus l'algorithme génère de nombreuses instructions, moins il convient pour un GPU.


5
2018-06-05 21:51





Les autres réponses sont plutôt bonnes. Je jetterai aussi mes 2 centimes.

L'une des raisons pour lesquelles les processeurs sont devenus si répandus est qu'ils sont flexibles. Vous pouvez les reprogrammer pour une variété infinie de tâches. De nos jours, il est moins coûteux et plus rapide pour les entreprises qui fabriquent des produits de placer un petit processeur ou un petit microcontrôleur dans quelque chose et de programmer ses fonctionnalités plutôt que de développer des circuits personnalisés pour effectuer la même tâche.

En utilisant le même périphérique que d'autres, vous pouvez tirer parti des solutions connues aux problèmes rencontrés avec ce même périphérique (ou similaire). Et à mesure que la plateforme évolue, 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 compétentes dans leur métier.

Si vous deviez créer un nouveau type d'appareil à partir de zéro, une alternative à un GPU, il faudrait des années avant même que les premiers adoptants sachent comment l'utiliser. Si vous attachez un ASIC à votre CPU, comment optimiser le calcul du déchargement sur ce périphérique?

La communauté de l’architecture informatique a été à l’origine de cette idée pendant plusieurs années (évidemment, elle était populaire avant, mais a récemment connu une renaissance). Ces «accélérateurs» (leur terme) ont divers degrés de reprogrammabilité. Le problème est le suivant: comment définissez-vous l'étendue du problème que votre accélérateur peut résoudre? J'ai même discuté avec 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.

Après avoir un accélérateur en état de marche, les forces économiques vont décider de votre sort. L'inertie du marché est une force incroyable. Même si quelque chose est une excellente idée, est-il économiquement possible de réorganiser vos solutions de travail pour utiliser ce nouvel appareil? Peut-être peut-être pas.

Les GPU sont vraiment 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à si ancrés, leurs appareils deviendront-ils jamais économiquement viables? Je suppose que nous verrons.

Edit: Expansion sur ma réponse un peu, maintenant que je suis hors du bus.

Une étude de cas prudente est le projet Intel Larrabee. Il a commencé comme un dispositif de traitement parallèle capable de faire du graphisme dans un logiciel; il n'y avait pas de matériel graphique spécialisé. J'ai discuté avec quelqu'un qui travaillait sur le projet, et l'une des principales raisons pour lesquelles il a déclaré avoir échoué et a été annulé (en plus des politiques internes horribles) était qu'il ne pouvait tout simplement pas obtenir le bon code pour le compilateur. Bien sûr, cela produisait du code de travail, mais si l'intégralité de votre produit est une performance maximale, vous devriez avoir un compilateur qui produit un code plutôt optimal. Cela me ramène à mon commentaire précédent sur le manque de connaissances approfondies du matériel et des logiciels pour que votre nouvel appareil soit un gros problème.

Certains éléments du design Larrabee ont été intégrés au Xeon Phi / Intel MIC. Ce produit est effectivement arrivé sur le marché. Il était entièrement axé sur la parallélisation des calculs scientifiques et autres calculs de type HPC. Il semble que ce soit un échec commercial maintenant. Une autre personne à qui j'ai parlé chez Intel a laissé entendre qu'ils n'étaient tout simplement pas compétitifs en termes de rapport qualité / prix avec les GPU.

Les gens ont essayé d'intégrer la synthèse logique pour les FPGA dans des 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 est un endroit qui semble être un sol très fertile pour les 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 rentables les investissements dans des systèmes de calcul alternatifs. Quelqu'un a déjà mentionné les unités de traitement des tenseurs de Google. Microsoft a des FPGA et d’autres éléments dans son infrastructure Bing et Azure. Même histoire avec Amazon. Il est absolument logique que la balance 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 porté sur beaucoup de points négatifs, mais la spécialisation a aussi de nombreux avantages. Il devrait absolument être poursuivi et faire l’objet d’une enquête, et comme je l’ai mentionné, de nombreux groupes le poursuivent de manière très agressive.

Désolé, éditer à nouveau: je pense que votre hypothèse initiale est fausse. Je pense qu’il s’agit moins de rechercher des sources supplémentaires de puissance de calcul et davantage de personnes reconnaissant une opportunité. 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 la multiplication de matrices, les opérations vectorielles, etc. Les opérations sont également très courantes dans le calcul scientifique.

L'intérêt pour les GPU a commencé juste au moment où les gens en sont venus à reconnaître que les promesses du projet Intel / HP EPIC étaient largement surestimées (début des années 90 au 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ù trouver plus de puissance de traitement, oh on pourrait essayer le GPU", je pense que c’est plutôt "nous avons quelque chose de bon en calculs parallèles, pouvons-nous le rendre plus généralement programmable". Beaucoup de personnes impliquées faisaient partie de la communauté informatique scientifique, qui disposait déjà d’un code Fortran parallèle sur les machines Cray ou Tera (Tera MTA avait 128 threads matériels). Peut-être y avait-il un mouvement des deux côtés, mais je n’ai entendu parler que des origines du GPGPU dans cette direction.


5
2018-06-06 00:51



Par "accélérateurs", vous parlez de matériel sur mesure ou de super-grappes de nœuds informatiques à faible consommation? Pouvez-vous élaborer en fournissant des références à des exemples de matériel d’accélérateur? - manav m-n
Désolé, je pensais que c'était clair dans le contexte. Accelerator n'est qu'un terme générique pour un coprocesseur ou une carte de déchargement. Le point flottant était à l'origine dans un coprocesseur et non dans le processeur principal, et il aurait été considéré comme un accélérateur. GPU, DSP, Xeon Phi, FPGA lorsqu'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 appareils qui facilitent la virtualisation, il y a des recherches actuelles sur les accélérateurs de réseaux neuronaux. Ce sont tous des exemples d'accélérateurs. - NerdPirate


enter image description here

Un ASIC (silicium personnalisé) est très rapide, mais sa conception et sa fabrication coûtent très cher. Les ASIC étaient spécifiques à un objectif, et le processeur était une approche qui permettait aux ordinateurs d'être "programmés" pour que les tâches informatiques puissent être exécutées par logiciel. Les premiers processeurs permettaient aux utilisateurs de tirer parti de la puissance de l’ASIC sans avoir à payer un coût énorme en programmant la puce sur le terrain. Cette approche est devenue si réussie 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 a réalisé que les tâches de rendu 3D étaient si spécifiques qu’un ASIC personnalisé serait BEAUCOUP plus performant qu’un CPU. Ils ont créé un co-processeur d'ordinateur qui a déchargé 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 poussé l'innovation dans cet espace à un point où les GPU effectuaient des calculs BEAUCOUP plus rapidement que les processeurs, alors la question se posait: "Pourquoi ne puis-je pas Les fabricants de GPU ont vu une demande et un moyen de gagner plus d'argent, alors ils ont commencé à modifier leurs plates-formes pour permettre aux développeurs d'utiliser leur matériel. Mais le matériel matériel était tellement spécifique qu'il y avait, et il y a toujours, des limites à ce que vous pouvez demander au GPU. 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 des graphiques JUST?

Deux raisons: 1) Prix. Les GPU avaient un bon marché et pouvaient le justifier, mais à l'époque, le risque était énorme. Personne ne savait vraiment si 3DFX pouvait faire des bénéfices (il s'avère que, en réalité, ils ne pouvaient pas, et ont disparu). Même maintenant, avec la taille du marché du GPU, il n'y a vraiment que 3 concurrents. 2) Les processeurs répondaient effectivement au besoin de "silicium personnalisé" avec des extensions d'instructions. Rappelez-vous MMX - c'était en fait la tentative d'Intel d'accélérer les graphiques dans le droit du processeur car 3DFX gagnait en vitesse. Depuis lors, le jeu d'instructions x86 est devenu assez massif avec toutes ces extensions personnalisées. Beaucoup de ces extensions avaient un sens à l’époque (comme MMX), mais ne sont en grande partie que du poids mort dans le processeur maintenant. Vous ne pouvez pas les supprimer, cependant, car cela casse les logiciels existants. C'est en fait l'un des points de vente d'ARM - ARM est un jeu d'instructions dépouillé. 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 personne ne travaille là-dessus?

Il existe une technologie appelée FPGA (Field Programmable Gate Array), qui existe depuis les débuts de l'informatique. C'est essentiellement une puce que vous pouvez concevoir "sur le terrain" en utilisant un logiciel. C'est une technologie très cool, mais toute la structure nécessaire pour rendre la puce programmable prend BEAUCOUP de silicium et fait que les puces fonctionnent à des vitesses d'horloge beaucoup plus basses. Les FPGA peuvent être plus rapides que les processeurs, si vous avez suffisamment de silicium sur la puce ET pouvez effectivement paralléliser la tâche. Mais ils sont limités dans la quantité de logique que vous pouvez leur appliquer. Tous les FPGA, à l’exception des plus coûteux, étaient plus lents que les GPU pour l’extraction de bitcoins au début, mais leurs homologues ASIC ont mis fin à la rentabilité de l’extraction de GPU. D'autres cryptomonnaies ont utilisé des algorithmes spécifiques qui ne peuvent pas être parallélisés, de sorte que les FPGA et les ASIC ne suffisent pas à justifier le coût par rapport aux processeurs et aux processeurs graphiques.

Le principal limiteur avec FPGA est la taille de silicium - quelle logique pouvez-vous installer sur la puce? La seconde est la vitesse d'horloge, car il est difficile d'optimiser des choses comme les points chauds, les fuites et la diaphonie dans un FPGA. Les nouvelles méthodes de fabrication ont minimisé ces problèmes et Intel s'est associé à Altera pour fournir un FPGA Les ingénieurs peuvent utiliser les avantages du «silicium personnalisé» en tant que co-processeur sur un serveur. Donc, ça vient, dans un sens.

Les FPGA seront-ils jamais en train de remplacer les processeurs et les GPU?

Probablement pas de sitôt. Les derniers processeurs et GPU sont MASSIVE et le silicium hautement adapté aux 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.


4
2018-06-09 01:30



Beaucoup de ces extensions avaient un sens à l’époque (comme MMX), mais ne sont en grande partie que du poids mort dans le processeur maintenant.  Le rendu 3D est loin du seul cas d'utilisation pour SIMD. La majeure partie du "poids" de MMX correspond aux unités d'exécution, et celles-ci peuvent être partagées avec un vecteur plus large comme SSE2, AVX2 et AVX512. Celles-ci sont largement utilisées pour un encodage vidéo de haute qualité sur les processeurs, ainsi que sur 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 plus d'un élément à la fois - Peter Cordes


En effet, il existe des cartes spécialisées pour l'informatique à grande vitesse, par ex. Xilinx a un liste de 178 cartes PCI-e utilisant leurs FPGA, et environ un tiers de ces cartes sont des "calculateurs de nombres" avec une ou plusieurs puces FPGA puissantes et beaucoup de mémoire DDR intégrée. Il existe également des cartes DSP hautes performances (Exemple) visant à des tâches de calcul à haute performance.

Je suppose que la popularité des cartes GPU découle de leur objectif pour un groupe de clients plus large. Vous n'avez pas besoin d'investir dans du 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 en ce sens que vous savez déjà comment les programmer.


3
2018-06-07 11:32