6

Ich brauche etwas Hilfe, das Konzept von Kernen auf einer GPU gegen Kerne in einer CPU zu verstehen, um parallele Berechnungen zu machen.GPU vs CPU? Anzahl der Kerne/Threads in einer GPU zur Beschleunigung der Programmberechnung?

Wenn es um Kerne in einer CPU geht, scheint es ziemlich einfach. Ich habe eine super intensive "for" -Schleife, die viermal iteriert. Ich habe vier Kerne in meiner Intel i5 2.26GHz CPU. Ich gebe jedem Kern eine Schleife. Jede der vier Schleifen ist unabhängig von der anderen. Boom - Ich habe jetzt vier Threads erstellt und 100% CPU-Auslastung (statt 25% CPU-Auslastung mit nur einem Kern). Meine "for" -Schleife läuft jetzt fast viermal schneller, als wenn ich sie nicht parallelisieren würde. Für die "for" -Schleife verwendete ich übrigens die automatische Parallelisierung, die in Microsoft Visual Studio 2012 verfügbar ist, wie in diesem Online-Beispiel :(http://msdn.microsoft.com/en-us/library/hh872235.aspx).

Im Gegensatz dazu kenne ich nicht einmal die Anzahl der Kerne in der Grafikkarte meines Laptops (Intel Graphics Media Accelerator HD oder Intel HD Graphics mit 1696 MB Shared Memory), die ich für parallele Berechnungen verwenden kann. Ich kenne nicht einmal eine gültige Art, die GPU mit der CPU zu vergleichen. Wenn ich "12 @ 500MHz" neben meiner Grafikkartenbeschreibung sehe, frage ich mich, ob das bedeutet, dass die Grafikkarte 12 Kerne für die Parallelisierung hat, die wie die 4 Kerne in einer CPU funktionieren, nur dass die GPU-Kerne bei 500 MHz laufen ] statt 2,26 GHz [schnell]? Gibt es eine GPU-Nutzung vergleichbar mit der CPU-Auslastung im Windows Task-Manager? Ich bin ein absoluter Neuling, der versucht, die C++ - Bibliothek in Visual Studio 2012 zu verwenden, wenn das einen Unterschied macht. Wenn ich die eigentliche GPU-Software schreibe, sieht der Parallelisierungscode wie folgt aus :(http://msdn.microsoft.com/en-us/library/hh265137.aspx).

Also, würden Sie bitte einige der Lücken oder Fehler in meinem Wissen ausfüllen oder mir helfen, die beiden zu vergleichen? Ich brauche keine super komplizierte Antwort, etwas so einfaches wie "Sie können einen CPU-Kern nicht mit einem GPU-Kern vergleichen, weil er leer ist" oder "ein GPU-Kern ist nicht wirklich ein Kern wie ein CPU-Kern" wäre sehr geschätzt werden.

+1

Wenn Sie sich bemühen, meine Frage zu senken, lassen Sie wenigstens einen Satz, der erklärt, warum Sie denken, dass es ein schlechter ist. Diese Frage ist eher offen und Sie können sie aus verschiedenen Blickwinkeln betrachten. –

+1

Auch ich bin mir bewusst, dass meine Grafikkarte, die Standard mit dem Laptop kam, ein Stück Mist ist. Es ist keine "diskrete Grafikkarte", die mit arbeiten kann. Um dieser Frage gerecht zu werden, geben Sie bitte vor, dass es sich um eine "legitime" Karte handelt, die gut für Programmberechnungen geeignet ist. –

Antwort

4

Zuerst initiieren das Betriebssystem mehr Kerne nur, wenn Sie in Ihrem Code nach ihnen fragen. Versuchen Sie OpenMP- oder Win32-Threads zu verwenden, um Parallelität auf Ihrem i5 zu erreichen.

Zweitens ist die CPU-Taktung mehr als GPU-Taktung. Wenn die Taktung der GPU der CPU entspricht, können Sie sie als Kochstelle verwenden. Die Kerne in der GPU sind mehr als CPU. Es gibt einen Unterschied zwischen einem Thread und einem Kern.

Drittens empfehle ich Ihnen, Spezifikationen und Referenzhandbücher für Ihre CPU und GPU zu lesen. Vergessen Sie auch nicht PCI-e. Es ist der Engpass für die Implementierung der parallelen Programmierung.

Hoffe das klärt Ihre Zweifel. Noch Fragen, zögern Sie nicht zu fragen.

+0

Liebte Ihre Referenzen für diese Frage – Harrisson