Angenommen, ich führe 4 Stunden lang eine Supercomputerberechnung mit 100.000 Kernen unter http://www.nersc.gov/users/computational-systems/edison/configuration durch , tausche ungefähr 4 PB Daten über das Netzwerk aus und führe ungefähr 4 TB I / Ö. Die Berechnung ist ganzzahlig, daher sind die Ergebnisse entweder richtig oder falsch (keine numerischen Zwischenfehler).
Unter der Annahme, dass der Code korrekt ist, möchte ich die Wahrscheinlichkeit abschätzen, dass die Berechnung aufgrund eines Hardwarefehlers falsch ist. Was ist ein guter Weg, um dies zu tun? Gibt es gute Quellen für die Zahlen, die für eine solche Schätzung erforderlich sind?
error-estimation
Geoffrey Irving
quelle
quelle
Antworten:
Haben Sie sich die verschiedenen Exascale-Berichte angesehen, die herausgekommen sind? Harte Ausfälle sind heutzutage kein großes Problem - sie treten zwar auf, aber ihre Häufigkeit ist nicht hoch genug, um ernsthafte Sorgen zu bereiten. Es wird jedoch davon ausgegangen, dass sie auf Exascale-Systemen mit oder mehr Kernen ausreichend häufig sind, sodass Codes vorbereitet werden müssen, um angemessen zu reagieren. Ich glaube, dass diese Themen in den Berichten über Roadmaps in Richtung Exascale dargelegt wurden.O ( 108)
Ich erinnere mich, dass unter den verschiedenen Fehlermodi einzelne Bitflips im Speicher oder auf Prozessorkernen nicht die wichtigsten Bedenken waren. Vielmehr fielen ganze Knoten aus, z. B. aufgrund eines Festplattenausfalls, Betriebssystemfehlern usw. Die aktuellen Designs im Exascale-Modus erfordern daher alle ein periodisches Überprüfen von Codes in den Flash-RAM, wobei die Prüfpunktdaten vorzugsweise außerhalb des Knotens übertragen werden. Codes müssen dann in der Lage sein, von einem zuvor gespeicherten Status aus sofort neu zu starten, wenn das System feststellt, dass ein Knoten verschwunden ist, und diesen Knoten durch einen Hot-Start-Knoten an einer anderen Stelle im System ersetzen.
quelle
Ich schätze, Sie beginnen mit der Erfassung der Fehlerraten von Komponenten wie DRAM wie dieser Google-Untersuchung zu DRAM-Fehlern in freier Wildbahn: Eine groß angelegte Feldstudie. Sie haben eine Chance von ~ 1% gefunden, einen nicht korrigierbaren Fehler pro Jahr zu erhalten.
Ich bin mir nicht sicher, ob Sie daran interessiert sind. Ich wäre mehr an nicht nachweisbaren Fehlern interessiert. Fehler, die von typischen Fehlerprüfmethoden nicht erkannt werden. Wenn Sie beispielsweise Pakete über die Optik senden, werden diese von einer Art CRC begleitet, die eine geringe Wahrscheinlichkeit für ein Durchrutschen eines Fehlers zulässt.
UPDATE: In diesem Artikel über Architekturen zur Online-Fehlererkennung und -wiederherstellung in Multicore-Prozessoren wird die zuverlässige Multicore-Architektur beschrieben, es werden jedoch auch verschiedene Aspekte der Systemzuverlässigkeit behandelt
quelle
Fragen Sie möglicherweise die Administratoren des Clusters, auf dem Sie arbeiten. Ich stelle mir vor, dass sie im Rahmen ihres Validierungsprozesses mit dem Problem konfrontiert wurden, die Wahrscheinlichkeit von Hardwarefehlern abzuschätzen.
quelle
Klingt episch. Wenn noch niemand dieses Experiment durchgeführt hat, können Sie überlegen, 100.000 separate Kerne zu verwenden, um einen sha1-Eingang immer wieder zu überarbeiten und die Fehlerrate zu ermitteln. (Ich vermute, es ist nicht messbar.) Machen Sie von dort dasselbe, aber lassen Sie sie von Zeit zu Zeit Hash-Ketten-Ergebnisse tauschen, um Ihre Netzwerkfehlerraten zu ermitteln. Das stelle ich mir auch sehr klein vor, aber ich vermute, Sie können in ein paar Stunden mindestens ein Paar mit Ihrem Supercluster erreichen :)
Dieser Ansatz stellt sicher, dass jede Berechnung korrekt ist, da das Hashing für Einzelbit-Swaps extrem empfindlich ist, während selbst eine Berechnung nur mit Ganzzahlen Fehler in Zweigen verbergen kann, dh die gesamte Berechnung wäre nicht in jedem aufeinanderfolgenden Speicherzustand elliptisch.
Ich habe an einer Möglichkeit gearbeitet, um sicherzustellen, dass der Code von einem externen Cluster korrekt ausgeführt wurde, dessen Motivation darin besteht, durch Übermittlung gefälschter Ergebnisse zu betrügen. Die Lösung, die ich gefunden habe, besteht darin, den Hash mit einer gewissen Häufigkeit in die Berechnung zu integrieren, die das Betrügen weniger effizient macht als die Arbeit.
quelle