Problem

Ich versuche, die CPU / GPU-FLOPS-Leistung zu berechnen, bin mir aber nicht sicher, ob ich es richtig mache

Nehmen wir an, wir haben:

  • Eine Kaby Lake-CPU (Takt: 2,8 GHz, Kerne: 4, Threads: 8)
  • Eine Pascal-GPU (Takt: 1,3 GHz, Kerne: 768).

Diese Wiki-Seite besagt, dass Kaby Lake-CPUs rechnen 32 FLOPS-Karten (FP32 mit einfacher Genauigkeit) und Pascal-Karten berechnen 2 FLOPS (FP32 mit einfacher Genauigkeit). Dies bedeutet, dass wir ihre gesamte FLOPS-Leistung mithilfe der folgenden Formeln berechnen können:

CPU:

TOTAL_FLOPS = 2.8 GHz * 4 cores * 32 FLOPS = 358 GFLOPS 

GPU:

TOTAL_FLOPS = 1.3 GHz * 768 cores * 2 FLOPS = 1996 GFLOPS 

Fragen

  1. [SOLVED] Die meisten Anleitungen, die ich gesehen habe (wie diese) verwenden physikalische Kerne in der Formel. Was ich nicht verstehe, ist warum Verwenden Sie stattdessen keine Threads (logische Kerne)? Wurden keine Threads speziell erstellt, um die Leistung der Gleitkommaberechnungen zu verdoppeln? Warum ignorieren wir sie dann?

  2. [SOLVED] Mache ich das überhaupt richtig? Ich konnte keine einzige zuverlässige Quelle für die Berechnung von FLOPS finden, alle Informationen im Internet widersprechen sich. Für die i7 7700HQ Kaby Lake-CPU habe ich FLOPS-Werte gefunden, die so niedrig wie 29 GFLOPS sind, obwohl die obige Formel 358 GFLOPS ergibt. Ich weiß nicht, was ich glauben soll.

  3. Gibt es in Node.js / Python / C ++ eine plattformübergreifende Bibliothek (Win, Mac, Linux), die nur alle zurückgibt? GPU-Statistiken wie Schattierungskerne, Takt, verfügbare Befehlssätze (oder FP32-, FP64-FLOPS-Werte), damit ich die maximale theoretische Leistung selbst berechnen kann? Es ist ziemlich lächerlich, dass wir die FLOPS-Statistiken nicht direkt von der CPU / GPU erhalten können, sondern wir Sie müssen eine Wiki-Seite herunterladen und analysieren, um den Wert zu erhalten. Selbst wenn wir C ++ verwenden, müssen wir (ich weiß es eigentlich nicht) das 2-GB-CUDA-Toolkit herunterladen, um Zugriff auf die grundlegenden Nvidia-GPU-Informationen wie die Anzahl der Kerne zu erhalten – was es praktisch unmöglich machen würde, die App zu erstellen Für andere verfügbar, da niemand eine 2-GB-App herunterladen würde.

Kommentare

  • Als Teilantwort I. Glauben Sie, was Sie “ -Threads nennen “ ist ein Trick, mit dem ein Kern zwei Threads gleichzeitig hosten kann (hyper) Ich bin mir nicht ganz sicher, wie Intel dies getan hat, aber ich denke, es hat mit dem Ausfüllen von Löchern in Pipelines und dergleichen zu tun. Dies wird im Prinzip nicht passieren Wenn Sie etwas Schweres berechnen, aber für viele häufigere Anwendungsfälle für ein Desktop-Betriebssystem, ist dies sinnvoll. Wenn Sie an einem tatsächlichen Rechendurchsatz interessiert sind, obwohl dies normalerweise nicht der Fall ist unted.
  • @KyleMandli danke für die Klarstellung, ich nehme an, das macht Sinn
  • Ein Teil der vorgeschlagenen Berechnung ist die Häufigkeit. Ich gehe davon aus, dass Sie sich bewusst sind, dass es bei moderner Hardware nicht die Frequenz gibt. Die Betriebsfrequenz hängt von der Temperatur und dem Stromverbrauch (z. B. den meisten GPUs) oder der Verwendung und Auslastung des Befehlssatzes (z. B. die meisten x86-CPUs) und möglicherweise von allen genannten Faktoren ab.
  • You ‚ muss MHz überall durch GHz ersetzen.
  • Es gibt ‚ kein einzelnes “ tatsächliche “ Leistung. Wenn Sie beispielsweise große Matrizen auf Volta-GPUs multiplizieren, liegt meine “ tatsächliche “ -Leistung nahe an der theoretischen Leistung von 90 Tops / Sekunde. Während des Trainings von resnet-50 entspricht ‚ eher 20 Tops / Sekunde – medium.com/@yaroslavvb/…

Antwort

Hier können Sie die GFLOP-Raten berechnen Übrigens, aber die Zahlen sind auf der heutigen Hardware ziemlich bedeutungslos:

  • Gleitkommaoperationen erfordern eine variable Anzahl von Taktzyklen. Eine Addition ist im Allgemeinen billiger als eine Multiplikation, aber jeweils im Allgemeinen dauert mehr als einen Taktzyklus von den 2,8 Milliarden Zyklen, die Sie ganz haben.

  • Wenn Sie Hyperthreading haben, laufen zwei Threads auf einem Kern, aber der Kern hat immer noch nur einen Gleitkomma-Additionseinheit und daher können die beiden Threads nicht gleichzeitig Gleitkomma-Additionen ausführen.

  • Gleitkommaoperationen sind energiehungrig und Energie wird in Wärme umgewandelt. Wenn Sie viele FLOPs ausführen, überhitzen Prozessoren ihre Taktfrequenzen und verringern sie.

  • Wenn Sie die richtigen Anweisungen verwenden, können Sie FMA-Operationen (Floating Point Multiply-Add) ausführen, die eine Multiplikation und Addition schneller machen als diese Operationen separat.

  • In ähnlicher Weise kann ein Kern mit SIMD-Anweisungen dieselbe Operation für mehrere Daten gleichzeitig ausführen – beispielsweise vier Paare von Gleitkommazahlen addieren, was 4 FLOPs ergibt gleichzeitig. Dies erfordert jedoch ein Problem, bei dem ein Algorithmus dies tatsächlich erfordert, anstatt die Ergebnisse der ersten Addition in der zweiten zu verwenden. Infolgedessen tragen SIMD-Anweisungen nur zur Geschwindigkeit bei, mit der einige Algorithmen ausgeführt werden können, andere jedoch nicht.

  • Am wichtigsten ist, dass Sie dies im Allgemeinen tun Sie möchten Operationen mit Daten aus dem Speicher ausführen, aber das Verschieben von Daten aus dem Hauptspeicher auf den Prozessor dauert weitaus länger als das eigentliche Ausführen von Operationen mit Daten – beispielsweise um einen Faktor 100 länger (Größenordnung). Daher sehen Sie in realen Anwendungen im Allgemeinen nicht einmal einen kleinen Bruchteil der theoretischen Gleitkomma-Leistung von Prozessoren: im Allgemeinen wesentlich weniger als 10% der theoretischen Spitzenleistung.

Mit anderen Worten, die Berechnung der Spitzenleistung ist zu einer Art bedeutungslosem Geschäft geworden: Sie hat nicht viel mit der tatsächlichen Leistung eines Prozessors zu tun.

Kommentare

  • Sie könnten auch diskutieren, wie SIMD-Gleitkommaeinheiten die theoretische Spitzenleistung steigern können.
  • Vielen Dank für Ihre Eingabe, Leute, ich verstehe diese Punkte und verstehe, wie fortgeschrittene Anweisungen sind Sätze wirken sich auf die Gleitkomma-Leistung aus. Ich denke, ich ‚ werde mich vorerst nur an das theoretische Maximum halten. Ich wünschte, es gäbe mindestens eine Formel, die sich der tatsächlichen FLOPS-Leistung ab diesem Zeitpunkt annähert Die CPU benötigt eine bestimmte Funktion.
  • @AlekseyHoffman Es gibt keine Formel, nur Messungen. Das ‚ s warum die TOP 500-Liste auf tatsächlichen Leistungsmessungen basiert, nicht auf theoretischen Spitzenleistungen.
  • @BrianBorchers Ja, gute Idee.

Antwort

Yoy kann auf Russisch lesen – wie man FLOPS berechnet .

GHz zeigt FLOPS nicht an. Ein Prozessor mit demselben GHz kann viel schneller sein als der andere mit demselben GHz.

P.S. gpu-s “ rx 590 “ und sehr alte “ r7 250x “ haben fast das gleiche GHz. Aber … das ist sogar nicht richtig, um ihre Leistung zu vergleichen)

Kommentare

  • Hallo, willkommen bei scicomp! In Stackexchange ist es besser, den Beitrag in sich geschlossen zu haben (siehe hier ). Um den Beitrag zu verbessern, versuchen Sie bitte, die Antwort mit den Kerninformationen des Artikels zu bearbeiten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.