Beschleunigen
Im Rechnerarchitektur, beschleunigen ist eine Zahl, die die relative Leistung von zwei Systemen misst, die das gleiche Problem verarbeiten. Technisch gesehen ist es die Verbesserung der Ausführung der Ausführung einer Aufgabe, die auf zwei ähnlichen Architekturen mit unterschiedlichen Ressourcen ausgeführt wird. Der Begriff der Beschleunigung wurde durch festgelegt von Amdahls Gesetz, was sich besonders darauf konzentrierte Parallelverarbeitung. Beschleunigung kann jedoch allgemeiner verwendet werden, um die Auswirkungen auf die Leistung nach einer Ressourcenverbesserung zu zeigen.
Definitionen
Beschleunigung kann für zwei verschiedene Arten von Mengen definiert werden: Latenz und Durchsatz.[1]
Latenz einer Architektur ist das gegenseitige Ausführungsgeschwindigkeit einer Aufgabe:
wo
- v ist die Ausführungsgeschwindigkeit der Aufgabe;
- T ist die Ausführungszeit der Aufgabe;
- W ist die Ausführungsarbeit der Aufgabe.
Durchsatz einer Architektur ist die Ausführungsrate einer Aufgabe:
wo
- ρ ist die Ausführungsdichte (z. B. die Anzahl der Stufen in einem Anweisung Pipeline Für ein Pipeline die Architektur);
- A ist die Ausführungskapazität (z. B. die Anzahl der Anzahl von Prozessoren für eine parallele Architektur).
Die Latenz wird häufig in Sekunden pro Arbeitseinheit der Ausführung gemessen. Der Durchsatz wird häufig in Einheiten der Ausführungs -Arbeitsbelastung pro Sekunde gemessen. Eine andere Durchsatzeinheit ist Anweisungen pro Zyklus (IPC) und seine gegenseitige, gegenseitig, Zyklen pro Anweisung (CPI) ist eine weitere Latenzeinheit.
Die Beschleunigung ist dimensionlos und für jede Art von Menge unterschiedlich definiert, so dass es eine konsistente Metrik ist.
Beschleunigung in Latenz
Beschleunigung in Latenz wird durch die folgende Formel definiert:[2]
wo
- SLatenz ist die Beschleunigung in der Latenz der Architektur 2 in Bezug auf die Architektur 1;
- L1 ist die Latenz der Architektur 1;
- L2 ist die Latenz der Architektur 2.
Beschleunigung in der Latenz kann von vorhergesagt werden Amdahls Gesetz oder Gustafsons Gesetz.
Beschleunigung im Durchsatz
Beschleunigung in Durchsatz wird durch die folgende Formel definiert:[3]
wo
- SDurchsatz ist die Beschleunigung im Durchsatz der Architektur 2 in Bezug auf die Architektur 1;
- Q1 ist der Durchsatz der Architektur 1;
- Q2 ist der Durchsatz der Architektur 2.
Beispiele
Verwenden von Ausführungszeiten
Wir testen die Wirksamkeit eines Zweigprädiktors auf die Ausführung eines Programms. Zunächst führen wir das Programm mit dem Standardzweigprädiktor für den Prozessor aus, der eine Ausführungszeit von 2,25 Sekunden ergibt. Als nächstes führen wir das Programm mit unserem geänderten (und hoffentlich verbesserten) Zweig -Prädiktor auf demselben Prozessor aus, der eine Ausführungszeit von 1,50 Sekunden liefert. In beiden Fällen ist die Ausführungs -Arbeitsbelastung gleich. Mit unserer Geschwindigkeitsformel wissen wir
Unser neuer Zweigprädiktor hat eine Geschwindigkeit von 1,5x über das Original bereitgestellt.
Verwenden von Zyklen pro Anweisung und Anweisungen pro Zyklus
Wir können auch die Beschleunigung in Zyklen pro Anweisung (CPI) messen, was eine Latenz ist. Erstens führen wir das Programm mit dem Standard -Zweigprädiktor aus, der einen CPI von 3. Erscheint als nächstes, das Programm mit unserem modifizierten Branch -Prädiktor, der einen CPI von 2 ergibt. In beiden Fällen ist die Ausführungsarbeitslast gleich und beide Architekturen sind weder pipeline noch parallel. Verwenden der Geschwindigkeitsformel gibt
Wir können auch die Beschleunigung in den Anweisungen pro Zyklus messen (IPC), was ein Durchsatz und die Umkehrung von CPI ist. Verwenden der Geschwindigkeitsformel gibt
Wir erreichen die gleiche 1,5 -fache Beschleunigung, obwohl wir verschiedene Mengen gemessen haben.
Weitere Details
Lassen S die Beschleunigung der Ausführung einer Aufgabe sein und s Die Beschleunigung der Ausführung des Teils der Aufgabe, der von der Verbesserung der Ressourcen einer Architektur profitiert. Lineare Beschleunigung oder Ideales Beschleunigung wird erhalten, wenn S = s. Wenn Sie eine Aufgabe mit linearer Beschleunigung ausführen, verdoppelt sich die lokale Beschleunigung der Gesamtgeschwindigkeit. Da dies ideal ist, wird es als sehr gut angesehen Skalierbarkeit.
Effizienz ist eine Metrik der Nutzung der Ressourcen des verbesserten Systems als
Der Wert liegt in der Regel zwischen 0 und 1. Programme mit linearer Beschleunigung und Programmen, die auf einem einzigen Prozessor ausgeführt werden, haben eine Effizienz von 1, während viele schwer parallele Programme Effizienz wie 1/ln haben ((z. B. 1/l) (z. B. 1/ln (s) Das nähert sich 0 als Anzahl der Prozessoren A = s steigt.
In technischen Kontexten werden Effizienzkurven häufiger für Diagramme als für Beschleunigungskurven verwendet, da da
- Der gesamte Bereich in der Grafik ist nützlich (während die Hälfte des Raums in Geschwindigkeitskurven verschwendet wird);
- Es ist leicht zu erkennen, wie gut die Verbesserung des Systems funktioniert.
- Es besteht keine Notwendigkeit, eine "perfekte Geschwindigkeit" -Kurve zu zeichnen.
In Marketingkontexten werden beschleunigte Kurven häufiger verwendet, vor allem, weil sie nach rechts gehen und somit besser für die weniger informierten sein.
Superlinearer Geschwindigkeit
Manchmal eine Beschleunigung von mehr als A beim Benutzen A Prozessoren werden in beobachtet Parallele Computing, Was heisst Superlinearer Geschwindigkeit. Superlinearer Geschwindigkeit tritt selten vor und verwechselt oft Anfänger, die glauben, dass die theoretische maximale Beschleunigung sein sollte A Wenn A Prozessoren werden verwendet.
Ein möglicher Grund für eine superlineare Beschleunigung bei Berechnungen auf niedriger Ebene ist die Cache -Effekt resultiert von den verschiedenen Speicherhierarchien eines modernen Computers: Im parallelen Computer ändert sich nicht nur die Anzahl der Prozessoren, sondern auch die Größe der akkumulierten Caches verschiedener Prozessoren. Mit der größeren akkumulierten Cache -Größe, mehr oder sogar alle der Workingset Kann in Caches passen, und die Speicherzugriffszeit reduziert sich dramatisch, wodurch die zusätzliche Beschleunigung zusätzlich zur tatsächlichen Berechnung führt.[4]
Eine analoge Situation tritt beim Durchsuchen großer Datensätze auf SPRENGEN Implementierungen. Dort ermöglicht der akkumulierte RAM von jedem der Knoten in einem Cluster den Datensatz, sich von der Festplatte in den RAM zu bewegen, wodurch die durch z. mpiblast, um es zu durchsuchen.[5]
Superlineare Beschleunigungen können auch bei der Durchführung auftreten Backtracking Parallel dazu: Eine Ausnahme in einem Thread kann dazu führen, dass mehrere andere Threads frühzeitig zurückkehren, bevor sie die Ausnahme selbst erreichen.[6]
Superlineare Beschleunigungen können auch bei parallelen Implementierungen von Zweig-und-gebundener zur Optimierung auftreten:[7] Die Verarbeitung eines Knotens durch einen Prozessor kann die Arbeit beeinflussen, die andere Prozessoren für die anderen Knoten ausführen müssen.
Siehe auch
- Amdahls Gesetz
- Gustafsons Gesetz
- Brooks Gesetz
- Karp -Flatt -Metrik
- Parallele Verlangsamung
- Skalierbarkeit
Verweise
- ^ Martin, Milo. "Leistung und Benchmarking" (PDF). Abgerufen 5. Juni 2014.
- ^ Hennessy, John L.; David A., Patterson (2012). Computerarchitektur: Ein quantitiver Ansatz. Waltham, MA: Morgan Kaufmann. pp.46–47. ISBN 978-0-12-383872-8.
- ^ Baer, Jean-Loup (2010). Mikroprozessorarchitektur: Von einfachen Pipelines zu Chip -Multiprozessoren. New York: Cambridge University Press. pp.10. ISBN 978-0-521-76992-1.
- ^ Benzi, John; Damodaran, M. (2007). "Parallele dreidimensionale direkte Simulation Monte Carlo zum Simulieren von Mikroflüssen". Parallel Computational Fluid Dynamics 2007: Implementierungen und Erfahrungen in großem Maßstab und Grid Computing. Parallele Rechenfluiddynamik. Springer. p. 95. Abgerufen 2013-03-21.
- ^ http://people.cs.vt.edu/~feng/presentations/030903-parco.pdf[Bare URL PDF]
- ^ SpecKenmeyer, Ewald (2005). "Superlinear beschleunigt für paralleles Backtracking". Vorlesungsnotizen in Informatik. 297: 985–993. doi:10.1007/3-540-18991-2_58. ISBN 978-3-540-18991-6.
- ^ "Gurobi versus cplex Benchmarks". CMU.edu. 29. Januar 2009. Abgerufen 23. April 2018.