Pourquoi utilisons-nous toujours des processeurs au lieu de GPU?
Les GPU sont de plus en plus utilisés pour des tâches non graphiques telles que les calculs de risque, les calculs de dynamique des fluides et l'analyse sismique. Qu'est-ce qui nous empêche d'adopter des périphériques pilotés par GPU??
La session de questions et réponses d'aujourd'hui nous parvient avec la permission de SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses animé par la communauté..
La question
Le lecteur SuperUser, Ell, suit l'actualité technique et se demande pourquoi nous n'utilisons pas davantage de systèmes basés sur GPU:
Il me semble que ces derniers temps, de nombreux calculs sont effectués sur le GPU. Il est évident que les graphiques sont réalisés ici, mais l'utilisation de CUDA et similaires, de l'IA, d'algorithmes de hachage (pensez Bitcoins) et d'autres est également réalisée sur le GPU. Pourquoi ne pouvons-nous pas simplement nous débarrasser du processeur et utiliser le GPU seul? Qu'est-ce qui rend le GPU beaucoup plus rapide que le processeur??
Pourquoi vraiment? Qu'est-ce qui rend le processeur unique??
La réponse
SuperListe contributeur, DragonLord offre un aperçu bien étayé des différences entre les GPU et les CPU:
Réponse de TL; DR: Les GPU ont beaucoup plus de cœurs de processeur que de processeurs, mais comme chaque cœur de processeur fonctionne beaucoup moins vite qu'un cœur de processeur et qu'il ne possède pas les fonctionnalités nécessaires aux systèmes d'exploitation modernes, il ne convient pas pour effectuer la plupart des traitements courants. Ils sont particulièrement adaptés aux opérations intensives en calcul, telles que le traitement vidéo et les simulations physiques..
La réponse détaillée: GPGPU est encore un concept relativement nouveau. Les GPU étaient initialement utilisés pour le rendu des graphiques; à mesure que la technologie progressait, le grand nombre de cœurs dans les GPU par rapport aux CPU était exploité en développant des capacités de calcul pour les GPU afin qu’ils puissent traiter simultanément de nombreux flux de données parallèles, quelle que soit la nature de ces données. Bien que les GPU puissent avoir des centaines voire des milliers de processeurs de flux, ils s'exécutent chacun plus lentement qu'un cœur de processeur et ont moins de fonctionnalités (même s'ils sont complètement terminés et peuvent être programmés pour exécuter tout programme qu'un processeur peut exécuter). Les fonctionnalités manquantes dans les GPU incluent les interruptions et la mémoire virtuelle, nécessaires à la mise en œuvre d'un système d'exploitation moderne..
En d'autres termes, les CPU et les GPU ont des architectures très différentes qui les rendent mieux adaptés à différentes tâches. Un processeur graphique peut gérer de grandes quantités de données dans de nombreux flux, en effectuant des opérations relativement simples, mais ne convient pas au traitement lourd ou complexe sur un ou plusieurs flux de données. Un processeur est beaucoup plus rapide cœur par cœur (en termes d'instructions par seconde) et peut effectuer plus facilement des opérations complexes sur un ou plusieurs flux de données, mais ne peut pas gérer efficacement plusieurs flux simultanément..
En conséquence, les GPU ne sont pas adaptés à la gestion de tâches ne bénéficiant pas ou ne pouvant pas être mises en parallèle de manière significative, y compris de nombreuses applications grand public courantes telles que les traitements de texte. De plus, les GPU utilisent une architecture fondamentalement différente; il faudrait programmer une application spécialement pour un GPU afin que celui-ci fonctionne, et des techniques très différentes sont nécessaires pour programmer les GPU. Ces différentes techniques incluent de nouveaux langages de programmation, des modifications de langages existants et de nouveaux paradigmes de programmation mieux adaptés à l'expression d'un calcul en tant qu'opération parallèle exécutée par de nombreux processeurs de flux. Pour plus d'informations sur les techniques nécessaires à la programmation de GPU, voir les articles de Wikipedia sur le traitement de flux et le calcul parallèle..
Les GPU modernes sont capables d'effectuer des opérations vectorielles et de l'arithmétique en virgule flottante, avec les dernières cartes capables de manipuler des nombres à virgule flottante double précision. Des frameworks tels que CUDA et OpenCL permettent d’écrire des programmes pour les GPU, et leur nature les rendent plus adaptés aux opérations hautement parallélisables, telles que le calcul scientifique, où une série de cartes de calcul GPU spécialisées peut remplacer utilement un petit grappe de calcul comme dans NVIDIA Tesla Personal Supercomputers. Les consommateurs disposant de GPU modernes et expérimentés dans Folding @ home peuvent les utiliser pour contribuer à des clients GPU, qui peuvent effectuer des simulations de repliement de protéines à des vitesses très élevées et apporter plus de travail au projet (veillez à lire en premier la FAQ, en particulier GPU). Les GPU peuvent également permettre une meilleure simulation physique dans les jeux vidéo à l'aide de PhysX, accélérer l'encodage et le décodage vidéo et effectuer d'autres tâches gourmandes en ressources de calcul. Ce sont ces types de tâches que les GPU sont les mieux à même de réaliser..
AMD est à l’avant-garde d’une conception de processeur appelée APU (Accelerated Processing Unit), qui associe des cœurs de processeur x86 classiques à des GPU. Cela pourrait permettre aux composants du processeur et du processeur graphique de fonctionner ensemble et d'améliorer les performances sur les systèmes disposant de peu d'espace pour des composants distincts. Au fur et à mesure que la technologie progresse, nous verrons un degré croissant de convergence de ces parties autrefois séparées. Cependant, de nombreuses tâches exécutées par les systèmes d’exploitation et les applications PC conviennent toujours mieux aux processeurs, et il faut beaucoup de travail pour accélérer un programme utilisant un processeur graphique. Etant donné qu'un si grand nombre de logiciels existants utilisent l'architecture x86 et que les GPU nécessitent différentes techniques de programmation et qu'il manque plusieurs fonctionnalités importantes pour les systèmes d'exploitation, il est extrêmement difficile de passer d'un processeur à un autre par GPU.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.