Was ist mit superlinearer Beschleunigung gemeint? Ist eine superlineare Beschleunigung in der Praxis möglich?


9

Beim parallelen Rechnen weiß ich, dass die Beschleunigungsgleichung lautet

1s+1- -sp

Aber was ist mit superlinearer Beschleunigung gemeint? Ist es etwas Theoretisches? Könnten Sie es mit Gleichungen erklären?


In welchem ​​Kontext sind Sie auf den Begriff "superlineare Beschleunigung" gestoßen?
David Richerby

1
@ DavidRicherby Es ist ein ziemlich häufiger Begriff in der High-Performance-Computing-Community.
Anton Trunov

@ AntonTrunov OK, großartig. Aber viele von uns gehören nicht zur Community der Hochleistungscomputer, und keines dieser Wörter taucht in der Frage auf. In anderen Zusammenhängen bedeutet "lineare Beschleunigung" andere Dinge .
David Richerby

@ DavidRicherby Das OP erwähnt "Parallel Computing". Die HPC-Leute bevorzugen heutzutage den Begriff "HPC", nicht "Parallel Computing", da parallele Hardware und Software nur Mittel sind, um eine hohe Leistung zu erzielen.
Anton Trunov

Antworten:


12

Mit Gleichung: nicht wirklich.

Die superlineare Beschleunigung ergibt sich aus der Überschreitung der naiv berechneten Beschleunigung, selbst nachdem der Kommunikationsprozess berücksichtigt wurde (der verblasst, aber immer noch der Engpass ist).

Zum Beispiel haben Sie einen seriellen Algorithmus, der benötigt 1tausführen. Du hast1024 Kerne, so naive Beschleunigung ist 1024xoder es dauert t/.1024, aber es sollte wie in Ihrer Gleichung unter Berücksichtigung der Speicherübertragung, geringfügiger Änderungen am Algorithmus und der Parallelisierungszeit berechnet werden.

Die Geschwindigkeit sollte also niedriger als 1024x sein, aber manchmal kommt es vor, dass die Geschwindigkeit größer ist, dann nennen wir es superlichneeinr.

Woher kommt es?
Von mehreren Stellen aus: Cache-Nutzung (was in Register, Hauptspeicher oder Massenspeicher passt, wo sehr oft mehr Verarbeitungseinheiten insgesamt mehr Register pro Unteraufgabe ergeben), Speicher-Treffer-Muster, einfach bessere (oder etwas andere) Algorithmen, Fehler in der Serie Code.
Beispielsweise wird ein zufälliger Prozess, der den Speicherplatz nach einem Ergebnis durchsucht, jetzt in unterteilt1024Suchende, die mehr Platz auf einmal abdecken, sodass es wahrscheinlicher ist, die Lösung schneller zu finden. Es gibt Nebenprodukte (wenn Sie Elemente wie bei der Blasensortierung austauschen und in die GPU wechseln, werden alle Paare gleichzeitig ausgetauscht, während sie nur bis zum Punkt seriell sind).

Auf dem verteilten System ist die Kommunikation noch kostspieliger, sodass Programme geändert werden, um die Speichernutzung lokal zu gestalten (was auch den Speicherzugriff ändert und das Problem anders aufteilt als bei sequentiellen Anwendungen).

Und das Wichtigste ist, dass das sequentielle Programm nicht idealerweise mit der parallelen Version identisch ist - unterschiedliche Technologien, Umgebungen, Algorithmen usw., sodass es schwierig ist, sie zu vergleichen.

Auszug aus "Introduction to Parallel Computing" Zweite Ausgabe von Ananth Grama, 2003

Theoretisch kann die Beschleunigung niemals die Anzahl der Verarbeitungselemente überschreiten p.
Wenn der beste sequentielle Algorithmus dauertT.s Zeiteinheiten, um ein gegebenes Problem auf einem einzelnen Verarbeitungselement zu lösen, dann eine Beschleunigung von p kann am erhalten werden p Verarbeiten von Elementen, wenn keines von ihnen mehr als Zeit verbringt T.s/.p.
Eine Beschleunigung größer alsp ist nur möglich, wenn jedes Verarbeitungselement weniger Zeit verbringt T.s/.pLösung des Problems.
In diesem Fall könnte ein einzelnes Verarbeitungselement das emulierenp Elemente verarbeiten und das Problem in weniger als lösen T.sZeiteinheiten.
Dies ist ein Widerspruch, da die Beschleunigung per Definition in Bezug auf den besten sequentiellen Algorithmus berechnet wird .

Der Name "superlinear" kommt in diesem Zusammenhang also von der Definition der Beschleunigung.


0

Meine Laienerklärung kann bei der Vorstellung helfen, wie es funktioniert.

Bestimmte Arten von Algorithmen führen zu einer superlinearen Beschleunigung, wenn die HPC-Verbindungsarchitektur es ermöglicht, Referenzen zwischen internen Zuständen von Kernen zu haben. Der Grund ist informationstheoretisch (und thermodynamisch) und kann einfach mit der folgenden Beschreibung erklärt werden.

Nehmen Sie zwei Systeme mit jeweils 3 Bits möglicher Zustände:

011 und 101

Die maximale Anzahl möglicher Zustände dieses Systems beträgt 2 * 2 ^ 3 = 16.

Kombinieren wir nun diese beiden Ensembles zu einem zusammengesetzten Ensemble mit einfach 6 Bits möglichen Zustandsraums:

011101

Die maximale Anzahl möglicher Zustände dieses Systems beträgt 2 ^ 6 = 64. Das kombinierte System verfügt über eine verfügbare Entropieerhöhung von 64/16 = 4-fach.

Die Zusammensetzung von Ensembles mit einer größeren Vielfalt interner Zustände führt zu exponentiell größeren "Beschleunigungen", da Kerne hypothetisch mehr gegenseitige Referenzen haben können.

In der Chemie wird Energie freigesetzt, wenn Systeme kombiniert werden (denken Sie an Kernfusion). Diese Energie kommt genau aus der Möglichkeit, mehr Zustände für kombinierte Systeme anzusprechen.

Die Quellen, die ich gelesen habe, beschreiben alle parallele Algorithmen auf isolierten Kernen, bei denen es keine Möglichkeit gab, gegenseitige Referenzen zwischen Zustandsbits verschiedener Kerne zu haben. Unter dem Gesichtspunkt der Entropiezunahme kombinierter Zustände kann ich mir vorstellen, wie eine superlineare Beschleunigung möglich ist.

Informationstheoretische Details finden Sie unter "Das Mischparadoxon" im Wikipedia-Artikel https://en.wikipedia.org/wiki/Gibbs_paradox zur genauen thermodynamischen Natur dieses Verhaltens.

Dies hat einige philosophische Implikationen für die Mensch-Mensch-Kommunikation und die Bedeutung von Live-Sprachgesprächen im Vergleich zum Schreiben von Text und Lesen von Büchern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.