Die Leute haben hier großartige Antworten gegeben, die Ihre Frage direkt beantworten, aber ich möchte eine ergänzende Antwort geben, um ausführlicher zu erklären, warum GPUs für diese und andere Anwendungen so leistungsfähig sind.
Wie einige bereits betont haben, sind GPUs speziell für schnelle mathematische Operationen konzipiert, da das Zeichnen von Dingen auf Ihren Bildschirm ausschließlich mathematisch ist (Zeichnen von Eckpunktpositionen, Matrixmanipulationen, Mischen von RBG-Werten, Lesen des Texturraums usw.). Dies ist jedoch nicht wirklich die Hauptantriebskraft für den Leistungszuwachs. Die Hauptantriebskraft ist die Parallelität. Eine High-End-CPU verfügt möglicherweise über 12 logische Kerne, in denen eine High-End-GPU etwa 3072 enthält.
Um es einfach zu halten, Anzahl Logische Kerne entsprechen der Gesamtzahl der gleichzeitigen Operationen, die für einen bestimmten Datensatz ausgeführt werden können. Angenommen, ich möchte die Werte zweier Arrays vergleichen oder die Summe ermitteln. Nehmen wir an, die Länge des Arrays beträgt 3072. Auf der CPU könnte ich ein neues leeres Array mit derselben Länge erstellen und dann 12 Threads erzeugen, die in einem Schritt über die beiden Eingabearrays iterieren würden, der der Anzahl der Threads (12) und entspricht Gleichzeitig wird die Summe der Werte in das dritte Ausgabearray ausgegeben. Dies würde insgesamt 256 Iterationen erfordern.
Mit der GPU könnte ich jedoch von der CPU dieselben Werte in die GPU hochladen und dann einen Kernel schreiben, gegen den 3072 Threads erzeugt werden könnten Kernel zur gleichen Zeit und haben die gesamte Operation in einer einzigen Iteration abgeschlossen.
Dies ist praktisch, um gegen Daten zu arbeiten, die von Natur aus die parallele "Bearbeitung" unterstützen können. Ich versuche zu sagen, dass dies nicht auf Hacking / böse Tools beschränkt ist. Aus diesem Grund wird GPGPU immer beliebter. Dinge wie OpenCL, OpenMP und dergleichen sind entstanden, weil die Leute erkannt haben, dass wir Programmierer unsere armen kleinen CPUs mit Arbeit überhäufen, wenn es eine massive Leistung gibt Pflanze, die im PC sitzt und im Gegensatz dazu kaum benutzt wird. Es ist nicht nur zum Knacken von Software. Zum Beispiel habe ich einmal ein ausgeklügeltes CUDA-Programm geschrieben, das die Lottogeschichte der letzten 30 Jahre aufgegriffen und die Gewinn- / Gewinnwahrscheinlichkeiten mit Tickets verschiedener Kombinationen aller möglichen Zahlen mit unterschiedlicher Anzahl von Spielen pro Ticket berechnet hat, weil ich das für besser hielt Idee, als diese großartigen Fähigkeiten zu nutzen, um nur einen Job zu bekommen (dies ist zum Lachen gedacht, aber leider auch wahr).
Obwohl ich die Leute, die die Präsentation halten, nicht unbedingt unterstütze, diese Präsentation gibt eine sehr einfache, aber ziemlich genaue Darstellung, warum die GPU für alles, was parallelisiert werden kann, so großartig ist, insbesondere ohne jegliche Form der Verriegelung (die andere Threads aufhält und die positiven Auswirkungen der Parallelität stark verringert).