Nichts ist umsonst. GPGPUs sind SIMD. Die SIMD-Anweisungen auf GPGPUs sind tendenziell breiter als die SIMD-Anweisungen auf CPUs. GPGPUs sind in der Regel feinkörnig mit mehreren Threads (und haben viel mehr Hardwarekontexte als CPUs). GPGPUs sind für das Streaming optimiert . Sie neigen dazu, einen größeren Prozentsatz der Fläche für Gleitkommaeinheiten, einen geringeren Prozentsatz der Fläche für den Cache und einen geringeren Prozentsatz der Fläche für die Ganzzahlleistung bereitzustellen.
Lassen Sie uns einen Vergleich machen. Intels Core i7-5960x verfügt über 8 Kerne mit jeweils 4-fach (doppelter Genauigkeit) SIMD, die mit 3 GHz (3,5 GHz Turbo), einem 20M L3-Cache, 356 mm ^ 2 und 140 W betrieben werden und 1000 US-Dollar kosten . Also 8 * 4 * 3 * 4 = 384 GFlops mit doppelter Genauigkeit. (Das zusätzliche 4x ist darauf zurückzuführen, dass Sie pro Vektorspur und Zyklus zwei Fused-Multiplly-Adds ausführen können.) Es können 768 GFlops mit einfacher Genauigkeit ausgeführt werden. Das sind ungefähr 1,08 DP GFlops / mm ^ 2 und 2,75 DP GFlops / Watt. Es gibt auch ungefähr 57,5 KB / mm ^ 2 On-Chip-Cache.
Die GeForce GTX Titan Black von NVidia verfügt über 15 SMXs mit jeweils 32 SIMD-Karten mit doppelter Genauigkeit, 890 MHz (980 MHz Turbo), 3,5 MB L1 + L2-Cache, 561 mm ^ 2, 250 W und 1000 US-Dollar . Also 15 * 32 * .89 * 4 = 1709 GFlops mit doppelter Genauigkeit. (Gleiches 4x aus zwei fusionierten Multiplikationsadditionen pro Vektorspur pro Zyklus.) Es können 5126 GFlops mit einfacher Genauigkeit ausgeführt werden. Das sind ungefähr 3,05 DP GFlops / mm ^ 2 und 6,8 DP GFlops / Watt. Also 3x die DP-Gleitkommadichte pro Flächeneinheit und 3x die DP-Gleitkomma-Energieeffizienz. Und der Kompromiss? 6,4 KB / mm ^ 2 On-Chip-Cache. Etwa 9x weniger dicht als die CPU.
Der Hauptunterschied besteht also darin, dass die GPU eine Flächenbalance gewählt hat, die Gleitkomma (und insbesondere Gleitkomma mit einfacher Genauigkeit) gegenüber Cache stark bevorzugt. Selbst wenn Sie die Tatsache ignorieren, dass Sie zwischen der CPU und der GPU hin und her kopieren müssen, um E / A auszuführen, hängt es von dem Programm ab, das Sie ausführen, wie gut die GPU im Vergleich zur CPU funktioniert.
Wenn Sie ein datenparalleles Gleitkommaprogramm mit sehr geringer Steuerungsdivergenz haben (alle Vektorspuren tun zur gleichen Zeit dasselbe) und Ihr Programm streamen kann (kann nicht vom Caching profitieren), dann ist die GPU ungefähr 3x effizienter pro Flächeneinheit oder pro Watt. Wenn Sie jedoch ein erhebliches Maß an divergenter Kontrolle haben, nicht datenparallel arbeiten müssen oder von großen Datenstrukturen mit vielen Lesevorgängen profitieren könnten, wird die CPU wahrscheinlich besser abschneiden.