GPU-Kerne vs. CPU-Kerne

Eine (sagen wir NVidia) GPU besteht aus Streaming-Multiprozessoren, die aus Arrays von Streaming-Prozessoren oder CUDA-Kern bestehen. Es gibt 5120 CUDA-Kerne auf V100. Eine Allzweck-CPU (z. B. Intel) hat "nur" bis zu 48 Kerne.

Wie unterscheidet sich ein GPU-Kern von einem CPU-Kern ? Ist der Unterschied im Wesentlichen der unterstützte Befehlssatz ? Was ist die Frequenz für einen CUDA-Kern ?

Bearbeiten

Vektorregisteroperationen auf einer CPU sind einzelne Befehle. Daten (SIMD), Kernel verteilt auf Gitter/Thread-Blöcke/Threads auf einer GPU ist Single Instruction Multiple Threads (SIMT). Können wir sagen, dass eine GPU nur ein SIMT-Gerät ist ? Was ist mit Daten ? Werden die verschiedenen Threads parallel ausgeführt und wenden denselben Kernel auf verschiedene Datenmengen an ? Dann scheint es, dass eine GPU sowohl SIMD als auch SIMT ausführt. Möchten Sie einen Kommentar abgeben ?

Author: kiriloff, 2020-01-10

2 answers

Eine CPU ist eine viel universellere Maschine als eine GPU. Wir könnten über die Verwendung einer GPU als "Allzweck" - GPU sprechen, aber sie haben unterschiedliche Stärken.

CPU-Kerne, die in der Lage sind, eine Vielzahl von Operationen und behandeln (was kann für alle Absichten betrachtet werden) eine zufällige Verzweigung Anweisung stream. Mehrere Programme wetteifern alle um Zeit auf dem Prozessor und werden vom Betriebssystem gesteuert. Sie cachen und prognostizieren so viel wie möglich, während sie es noch versuchen um in der Lage zu bleiben, mit plötzlichen Änderungen im Anweisungsstrom umzugehen.

GPUs hingegen sind Prozessoren, die für den Umgang mit data Streams ausgelegt sind. Ihre Prozessoren sind so konzipiert, dass sie mit einer kleinen Reihe von Anweisungen (einem Shader-Programm) über eine potenziell große Datenmenge hinweg arbeiten. HD -, 2k-und 4k-Bildschirme enthalten eine große Anzahl von Pixeln, und ein Shader muss Programme über jedes Pixel in aufeinanderfolgenden Durchläufen ausführen, um bestimmte Effekte zu erzielen. Zu diesem Zweck sind ihre Programme (im Vergleich zu einer CPU) kleiner, ihre Per-Core-Caches ähnlich kleiner, aber ihre Bandbreite zum Speicher phänomenal schneller.

Sie könnten, mit geeigneter Programmierung, in der Lage sein, die gleichen Aufgaben zu erreichen, aber der Fokus von Anweisungen vs Daten Verarbeitung ist, was eine CPU von einer GPU trennt.

Als solche sind ihre Kerne entworfen, um diese Stärken zu arbeiten. Für eine lange Zeit GPU-Shader-Kerne haben um 1-2GHz betrieben (moderne Intel-Grafikkerne Liste ihrer geschwindigkeiten als 500MHz bis 1.5 GHz), während CPUs irgendwo zwischen 1.5 und 4GHz und mehr waren.

Die Befehlsverarbeitung profitiert mehr von der Geschwindigkeit einzelner Einheiten, da es schwierig oder unmöglich sein kann, einen Befehlsstrom in mehrere Streams aufzuteilen, daher müssen CPUs schneller sein, um schneller mit Anweisungen umzugehen. Das Problem ist, dass je schneller Sie einen Kern ausführen, desto mehr Wärme erzeugt wird, sodass Sie ein Limit dafür erreichen, wie schnell Sie ihn ausführen können. (Es gibt andere technische Einschränkungen das beeinflusst die Taktgeschwindigkeit, aber das ist etwas für eine andere Geschichte.)

Die Datenverarbeitung hingegen eignet sich zum Ausführen derselben Aufgabe (Programm) auf verschiedenen Datensätzen und zur Parallelität, daher ist es umso besser, je mehr Kerne Sie auf die Aufgabe werfen können. Das Ausführen von Kernen mit einer langsameren Geschwindigkeit erzeugt weniger Wärme. Weniger Wärme bedeutet, dass Sie mehr Kerne einsetzen können, wodurch der Datendurchsatz verbessert wird. Daher profitieren Datenaufgaben von einem anderen (kleineren, schlankeren) Kerntyp als eine CPU.

Das Endergebnis ist, dass wir zwei verschiedene Arten von Prozessoren haben. Eine richtet sich an allgemeine Anweisungsströme und eine andere an die Verarbeitung von Massendaten.

 5
Author: Mokubai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-10 17:59:13

Heute werden CPU-Kerne oft als gpCPU-Kerne bezeichnet - general purpose CPU-Kerne. Eine, die den Finger auf den großen Unterschied zeigt: Ein gpCPU-Kern ist optimiert, um viele Dinge ziemlich gut zu machen, während ein GPU-Kern entworfen ist, um eine Sache (im Grunde Gleitkomma-SIMD) wirklich, wirklich gut zu machen.

Ein GPU-Kern weiß (fast) nichts über IO, Cache-Kohärenz und Freunde und seine ganzzahlige Leistung ist mittelmäßig.

Für FP SIMD-Workloads ist die GPU eine brillante beschleuniger: Stellen Sie sich die gpCPU als Manager und die GPU-Kerne als Workers vor. Beide werden benötigt, um den Job abzuschließen, und beide sind auf ihre Rolle spezialisiert.

 0
Author: Eugen Rieck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-10 16:08:54