Taktrate vs. Anzahl der Kerne für parallelisierte Computersimulation

1721
SimonG

Meine Frage ähnelt einigen "Speed ​​vs. Cores" -Fragen, die bereits auf dieser Website gestellt wurden. Ich interessiere mich jedoch für einige sehr spezifische und technische Aspekte. Ich hoffe also, dass meine Frage für eine "Antwort" in Frage kommt, anstatt ausschließlich auf Meinungsbildung zu beruhen.

An meinem Arbeitsplatz nähern wir uns bestimmten statistischen Problemen häufig der Computersimulation. Die von uns verwendete Software ist größtenteils für Einzelkerne gedacht, wird jedoch von mehreren Instanzen dieser Programme parallel ausgeführt. Die Simulationen sind rechenintensiv und eine Iteration kann bis zu einer Stunde dauern.

Um die Geschwindigkeit dieser Berechnungen zu verbessern, wurde ich gebeten, einige Modelle vorzuschlagen, die am besten geeignet sind. Ich bin mir jedoch nicht sicher, ob die Berechnungen zu diesem Zeitpunkt von einer höheren Taktrate mehr profitieren würden als von mehr parallelisierten Prozessen.

Die Computer, die wir derzeit verwenden, sind Lösungen auf Serverebene, die mehrere CPUs mit relativ hoher Geschwindigkeit (16 physikalische Kerne, jeweils 2,9 GHz und keine GPU) enthalten. Die Entscheidung hat also zwei Möglichkeiten:

  • in ähnliche Maschinen mit etwas höherer Taktrate (z. B. 3,2 GHz) und der gleichen Anzahl von Kernen (z. B. 16) zu investieren, oder alternativ ...
  • auf die Taktrate (z. B. 2,6 GHz) und auf eine größere Anzahl von Kernen (z. B. 20 oder 24) gehen.

Ich bin nicht sicher, ob sich eine erhöhte Taktfrequenz auch bei rechenintensiven Anwendungen auszahlt, da ich davon ausgehe, dass die Leistung nicht linear mit der Taktrate steigt. Streng genommen könnte ich das Problem einfach so angehen:

  • 3,2 GHz * 16 Kerne = 51,2 GHz oder alternativ ...
  • 2,5 GHz * 24 Kerne = 60,0 GHz

Ich bin jedoch ziemlich sicher, dass diese Berechnung in mehrfacher Hinsicht fehlerhaft ist. Aber wie genau? Geld ist in diesem speziellen Fall nicht wirklich ein Problem, und Berechnungen mit GPUs müssen leider ausgeschlossen werden.

Die Maschinen laufen unter Windows Server 2012 R2 und werden ausschließlich für diese Art von Berechnungen verwendet. Alle beteiligten Programme sind für 64-Bit optimiert, gelegentlich sind jedoch auch 32-Bit-Softwareprogramme erforderlich. Arbeitsspeicher und Festplatte sollten keinen großen Einfluss haben.

Prost!

0
Wie im Dupe: Es hängt von den Prozessen ab und wie sie das System nutzen. Also (IMO) gibt es keine einzige Antwort, die Sie geben können, oder eine einfache Berechnung, mit der Sie feststellen können, welche besser ist. Benchmark und Profil Ihres Codes auf mehreren Plattformen / Konfigurationen und kaufen Sie dann das Setup, auf dem es am besten ausgeführt wird. Wenn Sie keine Zeit für die Profilerstellung haben, sollten Sie ein Setup mit den meisten Kernen erstellen und dabei die schnellste Geschwindigkeit ausführen, die Sie sich leisten können. Ƭᴇcʜιᴇ007 vor 9 Jahren 0
Wenn die Software nur einen einzigen Kern verwendet, möchten Sie, dass dieser Kern so schnell wie möglich ist, damit eine bestimmte Instanz der Software ihre Aufgabe so schnell wie möglich erledigt. Warum multiplizieren Sie die Anzahl der Kerne und die Taktfrequenz. ** So funktioniert es nicht. ** Sie sind in der Tat richtig. Die Leistungssteigerung erfolgt nicht linear, Sie können jedoch den nächsten Flaschenhals identifizieren. Ich persönlich würde nur rechnergestützte Software verwenden, die NICHT Single-Threading war. Ramhound vor 9 Jahren 1
@Ramhound: Mir ist klar, dass es nicht so funktioniert, aber ich interessiere mich dafür, wie es funktioniert, dh welche wechselnden Faktoren ich berücksichtigen muss. Die Programme sind zwar Single-Core, aber wir führen sie trotzdem parallel aus. Dies geschieht mit einem "Haupt" -Prozess, der mehrere "Worker" -Instanzen desselben Programms startet. Wenn die Berechnung so CPU-intensiv ist wie oben, multipliziert sich die Leistung tatsächlich mit der Anzahl der Kerne einer bestimmten Maschine. Dies lässt jedoch keinen Rückschluss darauf, was in dem oben beschriebenen Szenario den größeren Gewinn bringt: Taktfrequenz oder physikalische Kerne. SimonG vor 9 Jahren 0
Es gibt nicht genug Informationen, um das Beste herauszufinden. Wenn Sie 5 Aufgaben haben und jede Aufgabe 1 Stunde auf einem einzelnen Core-Prozessor mit 3 GHz erledigt, können Sie 5 Tasks in einer Stunde erledigen, wenn der Prozessor 5 Kerne mit 3 GHz hat. ** Wenn Sie die beste Leistung wünschen, maximieren Sie die Anzahl der Kerne UND die Häufigkeit, mit der die Leistung linear sein wird. ** Ramhound vor 9 Jahren 1
@SimonG, Alle Antworten in diesem Thema (und verknüpften Themen) sind weitgehend falsch. Sie müssen Computer mit dem größten verfügbaren On-Chip-Cache kaufen, siehe http://superuser.com/questions/543702/why-are-are-newer-generations-of-processors-faster-at-the-same-clock-speed/ 1142639 # 1142639 Ale..chenski vor 7 Jahren 0

1 Antwort auf die Frage

1
Romeo Ninov

Die Berechnungen sind nicht genau. Sie sind aus mathematischer Sicht, aber beim Rechnen müssen Sie tatsächlich mit 0,9 bis 0,75 multiplizieren, um die tatsächliche "Leistung" zu erhalten. Und mehr Kerne / Prozessoren bedeuten eine niedrigere Anzahl. Dies geschieht aufgrund der Rechnerleistung, die Sie benötigen, um die Tasks parallelisieren zu können, um das Endergebnis aus verschiedenen Threads zu erstellen.

Diese Bemerkung hilft bereits meinem Zweck. Ich denke jedoch, dass in dem gegebenen Szenario der Aufwand zur Parallelisierung des Prozesses relativ gering ist, da die Berechnungen einige Zeit in Anspruch nehmen, sodass die Kommunikation zwischen dem Haupt- und dem Arbeitsprozess nicht allzu häufig erfolgt. SimonG vor 9 Jahren 1