394 votes

Pourquoi utilisons-nous encore des CPU au lieu de GPU ?

Il me semble que de nos jours, de nombreux calculs sont effectués sur le GPU. Il est évident que les graphiques y sont réalisés, mais l'utilisation de CUDA et d'autres outils similaires, l'IA, les algorithmes de hachage (pensez aux bitcoins) et autres sont également réalisés sur le GPU. Pourquoi ne pouvons-nous pas simplement nous débarrasser du CPU et utiliser le GPU seul ? Qu'est-ce qui rend le GPU tellement plus rapide que le CPU ?

3 votes

Comment puis-je savoir quelles réponses contiennent des informations correctes ? Devrais-je attendre que d'autres votent les réponses en haut ou en bas ? Je pense que j'ai été trop hâtif en acceptant une réponse :O

14 votes

Il y a maintenant quelques réponses récentes @ell, qui ne contiennent pas de "désinformation". Elles montent progressivement vers le haut avec des votes positifs en raison du mécanisme de marché efficace du StackExchange merveilleusement conçu ;-) Je vous suggère d'attendre un peu plus longtemps avant d'accepter une réponse. On dirait que c'est ce que vous faites avec beaucoup de prudence. C'est une bonne question, d'ailleurs. Elle peut sembler évidente, mais elle ne l'est pas du tout. Merci de l'avoir posée !

0 votes

Il n'y a aucune raison pour laquelle on ne pourrait pas, par exemple, créer un JITC Java pour un GPU, du point de vue de la génération de code. De plus, la plupart du code du système d'exploitation est maintenant écrit en C/C++, qui peut être facilement reciblé. On n'est donc pas lié à l'héritage x86 de manière vraiment significative (sauf si vous utilisez Windoze). Le problème est que peu de GPU (si tant est qu'il y en ait) sont bons pour le traitement général.

3voto

DL Redden Points 333

La raison d'être d'un GPU était de soulager le CPU des calculs graphiques coûteux qu'il effectuait à l'époque.
En les combinant à un seul processeur, on reviendrait au point de départ.

0 votes

Ouaip, un pas en avant, deux pas en arrière.

3voto

jokoon Points 409

Pour une raison simple : la plupart des applications ne sont pas multithreadées/vectorisées.

Les cartes graphiques s'appuient fortement sur le multithreading, du moins dans le concept.

Comparez une voiture avec un seul moteur, et une voiture avec un moteur plus petit par roue. Dans ce dernier cas, vous devez commander tous les moteurs, ce qui n'a pas été pris en compte du point de vue de la programmation des systèmes.

Avec AMD fusion, cependant, cela changera la façon dont nous devrons utiliser la puissance de traitement : soit vectorisée, soit rapide pour un seul thread.

3voto

user984260 Points 189

La raison pour laquelle nous utilisons toujours des CPU est que les CPU et les GPU ont tous deux leurs avantages uniques. Voir mon article suivant, accepté dans ACM Computing Surveys 2015, qui fournit une discussion concluante et complète sur l'abandon du "débat CPU vs GPU" au profit de "l'informatique collaborative CPU-GPU".

Étude des techniques de calcul hétérogène CPU-GPU

2voto

Yuriy Zaletskyy Points 217

Pour faire simple, GPU peut être comparé à une remorque dans la voiture. En général, le coffre est suffisant pour la majorité des gens, sauf dans les cas où ils achètent quelque chose de très grand. Dans ce cas, ils peuvent avoir besoin d'une remorque. Il en va de même pour le GPU, car il suffit généralement d'avoir un CPU ordinaire qui accomplira la majorité des tâches. Mais si vous avez besoin de calculs intensifs dans de nombreux threads, alors vous pouvez avoir besoin d'un GPU.

2voto

Uğur Gümüşhan Points 1306

Les gpus sont de bons processeurs de flux. vous pouvez imaginer le traitement de flux comme la multiplication d'un long tableau de nombres de manière séquentielle. les cpus ont également des capacités de traitement de flux (c'est ce qu'on appelle les extensions SIMD) mais vous ne pouvez pas implémenter toute la logique de programmation comme traitement de flux, et les compilateurs ont la possibilité de créer un btyecode qui utilise les instructions simd chaque fois que c'est possible.

tout n'est pas un tableau de chiffres. les images et les vidéos le sont, peut-être le son aussi (il existe des encodeurs opencl ici et là). les gpus peuvent donc traiter, encoder et décoder des images, des vidéos et tout ce qui est similaire. un inconvénient est que vous ne pouvez pas tout décharger sur les gpus dans les jeux car cela créerait des bégaiements, les gpus sont occupés par les graphiques et sont censés être le goulot d'étranglement du système lors des jeux. la solution optimale serait d'utiliser pleinement tous les composants d'un pc. ainsi, par exemple, le moteur physx de nvidia, par défaut, effectue des calculs sur le cpu lorsque le gpu est pleinement utilisé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X