Ich suche nach glaubwürdigen Referenzen, die angeben, wie viel Ressourcen Supercomputer für die Koordination im Vergleich zur eigentlichen aufgabenbezogenen Arbeit ausgeben. Ressourcen könnten verfügbare Rechenleistung sein, aber selbst Watt scheint eine gültige Einheit zu sein.
Ich glaube, einer meiner Professoren oder Lehrbücher hat einmal gesagt, dass in massiv parallelen Systemen bis zur Hälfte der verfügbaren Verarbeitungsleistung für die Koordination der Aufgaben- und Nachrichtenübermittlung aufgewendet wird. Leider kann ich diese Referenz oder anderes Material zu diesem Verhältnis nicht finden.
Mir ist klar, dass dies je nach Supercomputer-Architektur sehr unterschiedlich sein wird und moderne Implementierungen in dieser Hinsicht wahrscheinlich effizienter sind. Daher wäre ein Überblick über diese Metrik über mehrere Architekturen oder Entwicklungen (vor und nach dedizierter Hardware für die Nachrichtenübermittlung) noch besser.
Antworten:
Ein seit langem beliebter Benchmark im Hochleistungsrechnen ist der HPLinpack-Benchmark, der die Geschwindigkeit eines Computersystems bei Gleitkommaoperationen pro Sekunde misst und gleichzeitig ein sehr großes, dichtes, lineares Gleichungssystem löst. Es wird angenommen, dass die Lösung Gleitkommaoperationen benötigt und der Tester variieren darf , um maximale Leistung zu erzielen. n2 / 3 n3+ 2 n2 n
Die Benchmark-Maßnahmen umfassen RPEAK (die theoretische maximale Anzahl von Gleitkommaoperationen pro Sekunde für das System) und RMAX (die maximal erreichte Anzahl von Operationen pro Sekunde im HPLinpack-Benchmark).
Es ist typisch, dass RPEAK einen wesentlichen Teil von RMAX ausmacht, was darauf hinweist, dass aktuelle Supercomputer bei dieser Benchmark-Aufgabe einen erheblichen Teil ihrer theoretischen Spitzenleistung erzielen können. In der TOP500-Supercomputer-Rangliste vom November 2015 hat beispielsweise die schnellste Maschine, Tianhe-2, RPEAK = 54,902 Petaflops und RMAX = 33,863 Petaflops.
Der HPLinpack-Benchmark wird jedoch allgemein als nicht repräsentativ für die aktuelle Arbeitslast angesehen. HPlinpack-Ergebnisse übertreiben normalerweise die Leistung von Supercomputern in tatsächlichen Anwendungen um einen großen Faktor.
Ein neuer Benchmark namens HPCG befindet sich in der Entwicklung. Dieser Benchmark umfasst Operationen, die üblicherweise in iterativen Methoden zur Lösung großer, spärlicher Gleichungssysteme durchgeführt werden, die sich aus diskretisierten PDEs ergeben. Diese Arbeitslast ist für Hochleistungscomputer weitaus schwieriger. Es ist auch viel repräsentativer für das, wofür Supercomputer in der Praxis verwendet werden.
Einige frühe Ergebnisse von HPCG liegen bei weniger als 5% von RPEAK. Zum Beispiel hat Tianhe-2 RPEAK = 54,902 Petaflops und HPCG bei 0,58 Petaflops (siehe Verweis unten auf eine Präsentation zu HPCG).
Die TOP500 HPLinpack-Benchmarks finden Sie unter:
http://www.top500.org/
Eine Präsentation zu HPCG finden Sie unter:
http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf
Die HPCG-Website befindet sich unter
http://www.hpcg-benchmark.org/
quelle
Die ehrliche Antwort ist, dass wir es nicht wissen. Die Antwort hängt stark davon ab, was tatsächlich ausgeführt wird und welchen Code der Benutzer geschrieben hat. Wie Brian Borchers betont, gibt es einen großen Unterschied zwischen zwei Benchmarks, bei denen wir den gesamten Code haben und angeblich wissen, was dieser Code tut, aber es gibt viele Meinungsverschiedenheiten darüber, wie repräsentativ dieser Code für das ist, was Benutzer von Supercomputern tatsächlich tun. Ohne eine detaillierte Quellcode-Analyse und eine umfangreiche Instrumentierung realer Codes auf realen Maschinen ist es nahezu unmöglich, dieses Verhältnis zu finden. Es gibt einige Projekte, die anfangen, Daten zu sammeln, die die Community möglicherweise dazu bringen, diese Frage zu beantworten, aber sie ist überhaupt nicht geklärt.
In der Tat ist die Frage nicht einmal klar. Wenn auf der Kommunikationskarte eines Clusterknotens ein Prozessor installiert ist, der nur für die Kommunikation verwendet werden kann, wie zählen Sie die Zeit, die diese Karte im Leerlauf verbringt, um die Kommunikation nicht zu verarbeiten (oder irgendetwas anderes)? Dh was zählt als "verfügbare Rechenleistung"? Zählen wir schlecht geschriebene Programme, deren nicht optimierte Rechen- und Kommunikationsroutinen genauso optimiert sind? Was ist, wenn jemand ein bekanntes Anti-Pattern in seinem Code verwendet, das die CPU absichtlich nicht ausnutzt? Was ist mit peinlich parallelen Programmen, die überhaupt nicht kommunizieren (diese werden auf Supercomputern ausgeführt, das verspreche ich Ihnen)?
Ich würde Ihre Zeit nicht damit verschwenden, eine Bemerkung von der Stange in einem Buch oder von Ihrem Professor zu quantifizieren. Diese Art von Aussagen soll uns daran erinnern, dass parallele Programmierung schwierig und im Allgemeinen schlecht durchgeführt wird. Supercomputer sind auch nicht perfekt darauf ausgelegt, den gesamten Abfall zu beseitigen oder zu optimieren.
quelle