Analyse approfondie de la différence entre le CPU et le GPU
J'ai été à la recherche pour les différences majeures entre un CPU et un GPU, plus précisément la fine ligne qui sépare le cpu et le gpu. Par exemple, pourquoi ne pas utiliser plusieurs processeurs au lieu d'un gpu et vice versa. Pourquoi le gpu "plus vite" dans la crépitation des calculs que le cpu. Quels sont les types de choses que l'on peut faire et les autres ne peuvent pas le faire ou le faire de manière efficace et pourquoi. Merci de ne pas répondre avec des réponses comme "unité Centrale de traitement" et " "unité de traitement Graphique". Je suis à la recherche d'un en profondeur de la réponse technique.
source d'informationauteur Mike G
Vous devez vous connecter pour publier un commentaire.
Gpu sont essentiellement des ordinateurs massivement parallèles. Ils fonctionnent bien sur les problèmes qui peuvent utiliser les données à grande échelle de décomposition et ils offrent des ordres de grandeur de la vitesse sur ces problèmes.
Toutefois, les unités de transformation d'un GPU ne peut pas correspondre à un PROCESSEUR pour objectif général de rendement. Ils sont beaucoup plus simples et n'ont pas d'optimisations comme le long des pipelines, de l'exécution et de niveau d'instruction-parallelizaiton.
Ils ont aussi d'autres inconvénients. Tout d'abord, vous les utilisateurs à en avoir un, dont on ne peut se fier à moins que vous contrôlez le matériel. Il y a aussi des frais généraux pour le transfert des données de la mémoire principale à la mémoire GPU et à l'arrière.
Donc, cela dépend de vos exigences: dans certains cas, le Gpu dédié ou d'unités de traitement comme les Tesla sont les grands vainqueurs, mais dans d'autres cas, votre travail ne peut pas être décomposé en faire pleinement usage d'un GPU et les frais généraux, puis faire des CPUs le meilleur choix.
Première montre de cette manifestation:
http://www.nvidia.com/object/nvision08_gpu_v_cpu.html
C'était amusant!
Donc ce qui est important ici, c'est que le "CPU" peut être contrôlée pour effectuer tout calcul sur commande; Pour les calculs qui ne sont pas liés les uns aux autres, ou où chaque calcul est fortement dépendante de ses voisins (plutôt que de simplement la même operaton), vous avez généralement besoin d'un CPU. Par exemple, la compilation d'un gros C/C++ du projet. Le compilateur doit lire chaque jeton de chaque fichier source dans l'ordre avant de comprendre le sens de l'autre; Juste parce qu'il y a beaucoup de la source des fichiers à traiter, ils ont tous une structure différente, et donc les mêmes calculs ne s'appliquent pas accros à la source des fichiers.
Vous pourriez vitesse que par le fait d'avoir plusieurs, indépendant de la CPU, chacun travaille sur des fichiers séparés. L'amélioration de la vitesse par un facteur de X signifie que vous avez besoin X CPU qui coûtera X fois plus que 1 CPU.
Certains types de tâches impliquent de faire exactement le même calcul sur chaque élément dans un ensemble de données; la physique des simulations ressembler à ceci; à chaque étape, chaque "élément" dans la simulation se déplacer un peu; la "somme" des forces appliquées par ses voisins immédiats.
Puisque vous êtes en train de faire le même calcul sur un grand ensemble de données, vous pouvez répéter certaines parties d'un CPU, mais la part des autres. (dans la démonstration, le système d'air, vannes et le but sont partagés; Seuls les tonneaux sont dupliquées pour chaque paintball). Faire X calculs nécessite moins de X fois le coût du matériel.
L'inconvénient évident est que le matériel partagé signifie que vous ne pouvez pas dire à un sous-ensemble du processeur parallèle à faire une chose alors qu'un autre sous-ensemble fait quelque chose de différent. l'extra parallèle de la capacité d'aller à déchets, alors que le GPU effectue une tâche, puis une autre tâche différente.