DE202022104088U1 - Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen - Google Patents

Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen Download PDF

Info

Publication number
DE202022104088U1
DE202022104088U1 DE202022104088.5U DE202022104088U DE202022104088U1 DE 202022104088 U1 DE202022104088 U1 DE 202022104088U1 DE 202022104088 U DE202022104088 U DE 202022104088U DE 202022104088 U1 DE202022104088 U1 DE 202022104088U1
Authority
DE
Germany
Prior art keywords
parallel
program
performance
speedup
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202022104088.5U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE202022104088.5U priority Critical patent/DE202022104088U1/de
Publication of DE202022104088U1 publication Critical patent/DE202022104088U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen, wobei das System umfasst:eine Konvertierungseinheit zum Konvertieren von Code in sequentiellen Code zum Ausführen einer oder mehrerer paralleler Schleifen, die in dem parallelen Programm enthalten sind;eine Vorverarbeitungseinheit umfasst eine Programmformabflachung zur Beseitigung von Schätzungshürden, wobei die Programmform eine Zahl und eine Platzierung umfasst, die ein eindeutiges Zeichen hinzufügt; undeine Steuereinheit, die mit einer Äquivalenzklasse ausgestattet ist, um das zentrale Problem zu lösen, das in dem Papier angesprochen wird, nämlich die grobe Bewertung der parallelen Leistung und die Bereitstellung von Schätzungen und Vorhersagen für Programmierer, wobei die Steuereinheit eine Vielzahl von Indikatoren für die parallele Leistung umfasst, um den parallelen Programmierer bei der maximalen verfügbaren Parallelität und der Beschleunigung nach der parallelen Umwandlung zu unterstützen.

Description

  • BEREICH DER ERFINDUNG
  • Die vorliegende Offenlegung bezieht sich auf automatisierte parallele Konvertierungslösungen, genauer gesagt, auf ein System für die inhärente Parallelität und die Abschätzung der Beschleunigung von sequentiellen Programmen.
  • HINTERGRUND DER ERFINDUNG
  • Die Untersuchung der Leistung eines Programms, ob seriell oder parallel, erfolgt mit einer der folgenden Methoden: durch Codeanalyse, Profiling oder mit Hilfe einer detaillierten Simulation. Jede Technik hat ihre Vor- und Nachteile, und je nachdem, wann wir die Informationen benötigen, wird eine von ihnen ausgewählt. Die universelle Methode zur Schätzung der Leistung eines Programms ist die Wall-Clock-Methode, bei der die Zeit, die das Programm von Anfang bis Ende benötigt, als Maßstab dient. Wenn jedoch Computer mit unterschiedlichen Geschwindigkeiten beteiligt sind, ist etwas mehr Arbeit in Form einer Konvertierung der Laufzeiten in normalisierte Zyklen erforderlich, bevor wir vergleichen können. Wenn wir eine feinkörnige Leistung benötigen, können wir spezielle Zähler verwenden, die uns bei unserer Suche helfen. Empirische Studien zur Programmleistung sind jedoch von der Wahl der verwendeten Eingabestichproben abhängig, was eine inhärente Einschränkung dieser Methode darstellt.
  • Als Alternative bietet sich die Untersuchung von Programmmerkmalen durch statische Analyse an. Der Prozess scheint einfach, ist aber schwierig, da die Zyklen in Programmstrukturen wie Prozeduren, Schleifen, Rekursionen und Bedingungen, um nur einige zu nennen, verborgen sind. Dies wird noch deutlicher, wenn wir die Leistung von parallelen Programmen und seriellen Programmen, die für eine parallele Konvertierung vorgesehen sind, untersuchen. Es ist ein bedauerliches Paradoxon, dass die Syntaxmerkmale einer imperativen Sprache, die die Produktivität der Programmierer steigern sollen, ein Hindernis für Qualitätsanalysen und Leistungsstudien sein können. Wir sind den späteren Analysephasen in der Kompilierungskette ausgeliefert, wenn es darum geht, die Informationen für die Schätzung zu liefern.Viele dieser Phasen führen auch nicht-triviale Programmtransformationen durch, um die Analyse weiter zu unterstützen, was die Relevanz einer Schätzungsphase verringert. Wenn Leistungsabschätzungen frühzeitig zur Verfügung stehen, können sie zur Bestimmung der anzuwendenden Transformationen herangezogen werden. Wie können wir diese Dichotomie überwinden? Indem wir erkennen, dass syntaktische Strukturen die Ursache sind, und ein Mittel dagegen finden. Aus der Sicht einer modernen imperativen Sprache bedeutet dies, dass die Syntax vor der Analyse- und Studienphase durch Prozedurenexpansion oder Funktions-Inlining, Abrollen von Schleifen, Umwandlung von Rekursion in Schleifen und Kontrollprädikation bereinigt werden muss.
  • Die frühe parallele Konvertierung von Programmen war jedoch eine rein manuelle Tätigkeit. Parallele Codepfade im Programm wurden identifiziert, und jeder Pfad wurde einer Aufgabe zugewiesen. Tasks wurden als vollwertige Prozesse oder Threads implementiert. Letztere sind in Bezug auf die verbrauchten Ressourcen das effizientere Gegenstück. Das Verfahren ist fehleranfällig und langwierig, weshalb nach besseren Techniken geforscht wurde. In Anbetracht der vorangegangenen Diskussion wird deutlich, dass ein System für die inhärente Parallelität und die Beschleunigungsabschätzung von sequenziellen Programmen benötigt wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Offenlegung zielt darauf ab, ein automatisiertes System für die Abschätzung der inhärenten Parallelität und der parallelen Beschleunigung von sequentiellen Programmen bereitzustellen.
  • In einer Ausführungsform wird ein System für inhärente Parallelität und Beschleunigungsabschätzung von sequentiellen Programmen offenbart. Das System enthält eine Konvertierungseinheit zum Konvertieren von Code in sequentiellen Code zum Ausführen einer oder mehrerer paralleler Schleifen, die in dem parallelen Programm enthalten sind. Das System umfasst ferner eine Vorverarbeitungseinheit, die eine Programmformabflachung zur Beseitigung von Schätzungshürden umfasst, wobei die Programmform eine Zahl und eine Platzierung umfasst, die ein eindeutiges Zeichen hinzufügt. Das System umfasst ferner eine Steuereinheit, die mit einer Äquivalenzklasse ausgestattet ist, um das zentrale Problem zu lösen, das in dem Papier angesprochen wird, nämlich die grobe Bewertung der parallelen Leistung und die Bereitstellung von Schätzungen und Vorhersagen für Programmierer, wobei die Steuereinheit eine Vielzahl von Indikatoren für die parallele Leistung umfasst, um den parallelen Programmierer bei der maximalen verfügbaren Parallelität und Beschleunigung nach der parallelen Umwandlung zu unterstützen.
  • In einer anderen Ausführungsform enthält die Äquivalenzklasse Programmanweisungen, die voneinander abhängig sind, wobei die Messung der Ausführungszeit während der Ausführung der parallelen Schleife im geschalteten Ausführungsmodus erfolgt.
  • In einer anderen Ausführungsform wird die Ausführungszeit durch Vergleich des Messergebnisses mit einer Ausführungszeit für eine parallele Schleife im Betriebsmodus vor dem Umschalten gemessen.
  • In einer anderen Ausführungsform wird der Ausführungsmodus in einen anderen Ausführungsmodus umgeschaltet, wenn das Vergleichsergebnis kürzer ist als die Ausführungszeit in dem Ausführungsmodus vor dem Umschalten.
  • In einer anderen Ausführungsform wird ein Caliper-Modul verwendet, um dem Benutzer eine Basiserwartung für die parallele Leistung zu geben, die dem betrachteten Programm innewohnt und die dazu beiträgt, die Wahl der auf das Programm anzuwendenden Transformationen zu diktieren, einschließlich der Entscheidungen über die parallele Umwandlung.
  • In einer anderen Ausführungsform führt das Caliper-Modul Transformationen zur Abflachung der Programmform durch, wie z. B. Funktionsaufrufexpansion, Schleifenentrollung und Steuerungsprädikation, die später einzeln beschrieben werden, wobei die Ausgabe des Caliper-Moduls die Leistungsabschätzung in Form der maximal verfügbaren Parallelität (MAP) und die Leistungsvorhersage in Form der Beschleunigung nach der Parallelumsetzung (SAP) ist.
  • In einer anderen Ausführungsform beinhaltet die Berechnung der parallelen Ausführungszyklen die Einteilung der Befehle auf der Grundlage ihrer Datenabhängigkeit in verschiedene Äquivalenzklassen.
  • Ein Ziel der vorliegenden Offenbarung ist es, geeignete Schätzungen der verfügbaren inhärenten Parallelität und der erwarteten parallelen Beschleunigung bereitzustellen.
  • Ein weiteres Ziel der vorliegenden Offenbarung ist es, den parallelen Programmierer in seinen Bemühungen zu unterstützen, indem eine Ertragsabschätzung bereitgestellt wird, die aus der parallelen Konvertierung eines gegebenen Programms resultiert.
  • Ein weiteres Ziel der vorliegenden Erfindung ist es, eine schnelle und kosteneffektive automatisierte Lösung für die parallele Konvertierung bereitzustellen.
  • Zur weiteren Verdeutlichung der Vorteile und Merkmale der vorliegenden Offenbarung wird eine genauere Beschreibung der Erfindung durch Bezugnahme auf bestimmte Ausführungsformen gegeben, die in den beigefügten Figuren dargestellt sind. Es wird davon ausgegangen, dass diese Figuren nur typische Ausführungsformen der Erfindung darstellen und daher nicht als Einschränkung des Umfangs der Erfindung zu betrachten sind. Die Erfindung wird mit zusätzlicher Spezifität und Detail mit den beigefügten Figuren beschrieben und erläutert werden.
  • Figurenliste
  • Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Offenbarung werden besser verstanden, wenn die folgende detaillierte Beschreibung mit Bezug auf die beigefügten Figuren gelesen wird, in denen gleiche Zeichen gleiche Teile in den Figuren darstellen, wobei:
    • 1 ein Blockdiagramm eines Systems zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen gemäß einer Ausführungsform der vorliegenden Offenbarung zeigt;
    • 2 ein Blockdiagramm des Bremssattels in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung zeigt;
    • 3 ein schematisches Diagramm einer CALIPER-Organisation in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung zeigt; und
    • 4 ein schematisches Diagramm eines Messschieberbetriebs gemäß einer Ausführungsform der vorliegenden Offenbarung zeigt.
  • Der Fachmann wird verstehen, dass die Elemente in den Figuren der Einfachheit halber dargestellt sind und nicht unbedingt maßstabsgetreu gezeichnet wurden. Die Flussdiagramme veranschaulichen beispielsweise das Verfahren anhand der wichtigsten Schritte, um das Verständnis der Aspekte der vorliegenden Offenbarung zu verbessern. Darüber hinaus kann es sein, dass eine oder mehrere Komponenten der Vorrichtung in den Figuren durch herkömmliche Symbole dargestellt sind, und dass die Figuren nur die spezifischen Details zeigen, die für das Verständnis der Ausführungsformen der vorliegenden Offenbarung relevant sind, um die Figuren nicht mit Details zu überfrachten, die für Fachleute, die mit der vorliegenden Beschreibung vertraut sind, leicht erkennbar sind.
  • DETAILLIERTE BESCHREIBUNG
  • Um das Verständnis der Erfindung zu fördern, wird nun auf die in den Figuren dargestellte Ausführungsform Bezug genommen und diese mit bestimmten Worten beschrieben. Es versteht sich jedoch von selbst, dass damit keine Einschränkung des Umfangs der Erfindung beabsichtigt ist, wobei solche Änderungen und weitere Modifikationen des dargestellten Systems und solche weiteren Anwendungen der darin dargestellten Grundsätze der Erfindung in Betracht gezogen werden, wie sie einem Fachmann auf dem Gebiet der Erfindung normalerweise einfallen würden.
  • Es versteht sich für den Fachmann von selbst, dass die vorstehende allgemeine Beschreibung und die folgende detaillierte Beschreibung beispielhaft und erläuternd für die Erfindung sind und diese nicht einschränken sollen.
  • Wenn in dieser Beschreibung von „einem Aspekt“, „einem anderen Aspekt“ oder ähnlichem die Rede ist, bedeutet dies, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die im Zusammenhang mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher können sich die Ausdrücke „in einer Ausführungsform“, „in einer anderen Ausführungsform“ und ähnliche Ausdrücke in dieser Beschreibung alle auf dieselbe Ausführungsform beziehen, müssen es aber nicht.
  • Die Ausdrücke „umfasst“, „enthaltend“ oder andere Variationen davon sollen eine nicht ausschließliche Einbeziehung abdecken, so dass ein Verfahren oder eine Methode, die eine Liste von Schritten umfasst, nicht nur diese Schritte umfasst, sondern auch andere Schritte enthalten kann, die nicht ausdrücklich aufgeführt sind oder zu einem solchen Verfahren oder einer solchen Methode gehören. Ebenso schließen eine oder mehrere Vorrichtungen oder Teilsysteme oder Elemente oder Strukturen oder Komponenten, die mit „umfasst...a“ eingeleitet werden, nicht ohne weitere Einschränkungen die Existenz anderer Vorrichtungen oder anderer Teilsysteme oder anderer Elemente oder anderer Strukturen oder anderer Komponenten oder zusätzlicher Vorrichtungen oder zusätzlicher Teilsysteme oder zusätzlicher Elemente oder zusätzlicher Strukturen oder zusätzlicher Komponenten aus.
  • Sofern nicht anders definiert, haben alle hierin verwendeten technischen und wissenschaftlichen Begriffe die gleiche Bedeutung, wie sie von einem Fachmann auf dem Gebiet, zu dem diese Erfindung gehört, allgemein verstanden wird. Das System, die Methoden und die Beispiele, die hier angegeben werden, dienen nur der Veranschaulichung und sind nicht als Einschränkung gedacht.
  • Ausführungsformen der vorliegenden Offenbarung werden im Folgenden unter Bezugnahme auf die beigefügten Figuren im Detail beschrieben.
  • In 1 ist ein Blockdiagramm eines Systems für inhärente Parallelität und Geschwindigkeitssteigerung von sequentiellen Programmen in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung dargestellt. Das System 100 enthält eine Konvertierungseinheit zur Konvertierung von Code in sequentiellen Code zur Ausführung einer oder mehrerer paralleler Schleifen, die in dem parallelen Programm enthalten sind.
  • In einer Ausführungsform ist eine Vorverarbeitungseinheit, die eine Programmformabflachung umfasst, mit der Konvertierungseinheit verbunden, um Schätzungshürden zu beseitigen, wobei die Programmform eine Zahl und eine Platzierung umfasst, die ein eindeutiges Zeichen hinzufügt.
  • In einer Ausführungsform ist eine Steuereinheit mit einer Äquivalenzklasse ausgestattet, um das zentrale Problem zu lösen, das in dem Papier angesprochen wird, nämlich die grobe Bewertung der parallelen Leistung und die Bereitstellung von Schätzungen und Vorhersagen für Programmierer, wobei die Steuereinheit eine Vielzahl von Indikatoren für die parallele Leistung umfasst, um den parallelen Programmierer bei der maximalen verfügbaren Parallelität und Beschleunigung nach der parallelen Umwandlung zu unterstützen.
  • In einer anderen Ausführungsform enthält die Äquivalenzklasse Programmanweisungen, die voneinander abhängig sind, wobei die Messung der Ausführungszeit während der Ausführung der parallelen Schleife im geschalteten Ausführungsmodus erfolgt.
  • In einer anderen Ausführungsform wird die Ausführungszeit durch Vergleich des Messergebnisses mit einer Ausführungszeit für eine parallele Schleife im Betriebsmodus vor dem Umschalten gemessen.
  • In einer anderen Ausführungsform wird der Ausführungsmodus in einen anderen Ausführungsmodus umgeschaltet, wenn das Vergleichsergebnis kürzer ist als die Ausführungszeit in dem Ausführungsmodus vor dem Umschalten.
  • In einer anderen Ausführungsform wird ein Caliper-Modul verwendet, um dem Benutzer eine Basiserwartung für die parallele Leistung zu geben, die dem betrachteten Programm innewohnt und die dazu beiträgt, die Wahl der auf das Programm anzuwendenden Transformationen zu diktieren, einschließlich der Entscheidungen über die parallele Umwandlung.
  • In einer anderen Ausführungsform führt das Caliper-Modul Transformationen zur Abflachung der Programmform durch, wie z. B. Funktionsaufrufexpansion, Schleifenentrollung und Steuerungsprädikation, die später einzeln beschrieben werden, wobei die Ausgabe des Caliper-Moduls die Leistungsabschätzung in Form der maximal verfügbaren Parallelität (MAP) und die Leistungsvorhersage in Form der Beschleunigung nach der Parallelumsetzung (SAP) ist.
  • In einer anderen Ausführungsform beinhaltet die Berechnung der parallelen Ausführungszyklen die Einteilung der Befehle auf der Grundlage ihrer Datenabhängigkeit in verschiedene Äquivalenzklassen.
  • 2 zeigt das Blockdiagramm des Calipers gemäß einer Ausführungsform der vorliegenden Offenbarung. CALIPERist dafür verantwortlich, dem Benutzer eine Basiserwartung der parallelen Leistung zu geben, die dem betrachteten Programm innewohnt. Diese Vorhersage kann dazu beitragen, die Wahl der auf das Programm anzuwendenden Transformationen zu diktieren, einschließlich der Entscheidungen zur Parallelkonvertierung. Die übergeordneten syntaktischen Strukturen eines imperativen Programms erschweren die effektive Berechnung von Leistungsschätzungen und -vorhersagen. Jedes Programm ist aus der Perspektive der Sammlung der syntaktischen Strukturen, aus denen das Programm besteht, einzigartig und bietet einzigartige Schwierigkeiten für die Schätzung und Vorhersage. Wir bezeichnen diese Eigenschaft des Programms als die Form des Programms. Die Transformationen, die auf ein Programm angewendet werden, um die Form eines Programms zu entfernen, nennen wir Programm-Form-Abflachung.
  • Die Eingabe für das CALIPER-Modul besteht aus IR im ASIF-Format. Es führt die folgenden, die Programmform abflachenden Transformationen durch, wie z.B. Funktionsaufruf-Expansion, Schleifen-Ablauf und Kontroll-Prädikation, die später einzeln beschrieben werden. Die Ausgabe des CALIPER-Moduls ist die Leistungsabschätzung in Form von Maximum-Available-Parallelism (MAP) und die Leistungsvorhersage in Form von Speedup-After-Parallel Conversion (SAP). Diese beiden Begriffe werden später beschrieben. In den folgenden Abschnitten werden die Schritte des CALIPER-Betriebs beschrieben, gefolgt von den Definitionen der von CALIPER gemeldeten Leistungsmetriken.
  • Funktionsaufruf Erweiterung
  • Der Zweck der Funktionsaufruf-Erweiterung besteht darin, alle Funktionsaufrufe durch den Code zu ersetzen, der den Funktionsblock bildet. Es ist zu beachten, dass es sich um einen rekursiven Prozess handelt, der erst dann endet, wenn alle benutzerdefinierten Funktionen erweitert wurden. Bibliotheksfunktionen und Systemaufrufe werden bei der Aufruferweiterung normalerweise nicht berücksichtigt. Sie werden im Wesentlichen wie jeder andere Befehl behandelt, was für grobe Schätzungen ausreicht. Ein Benutzerprogramm, das mit Bibliotheksaufrufen und Systemaufrufen belastet ist, kann die Vorhersage etwas verzerren, aber das ist bei der Mehrheit der Programme in der realen Welt normalerweise nicht der Fall.
  • Abrollen von Schleifen
  • Als Ergebnis des Loop-Unrolling werden alle Schleifen und Mehrfachschleifen durch ihre jeweiligen Codeblöcke ersetzt und die Anweisungen, die die Eingangs- und Ausgangsbedingungen sowie die Loop-BackJumps bilden, entfernt.
  • Kontrolle Prädikat
  • Control Predicationist eine Transformation, die Conditional Blocks durch gleichwertige Predicated Blocks ersetzt. Die bedingten Anweisungen sind ein weiteres Hindernis für die korrekte Einschätzung der Leistung. Die meisten Architekturen unterstützen jedoch die Predicated-Execution von Anweisungen in unterschiedlichem Maße. Alle unterstützen jedoch die Anweisung Conditional-Move, die ein leistungsfähiges Konstrukt ist, wenn sie mit Prädikaten verwendet wird, um die Bedingung der Bewegung zu berechnen, und in Kombination mit regulären Anweisungen, die temporäre Ergebnisvariablen berechnen, eine leistungsfähige und überzeugende Lösung für die Implementierung der Kontroll-Prädikation bietet.
  • Maximal verfügbare Parallelität
  • Maximum-Available-Parallelism (MAP)ist eine Metrik, die den Grad der Parallelität in einem bestimmten Programm in Prozent angibt. Ein MAP von 33 % bedeutet zum Beispiel, dass ein Drittel des Codes parallel konvertierbar ist und die anderen zwei Drittel des Codes, also 66 %, seriell sind. Dabei ist zu beachten, dass diese Zahl alle Abhängigkeiten berücksichtigt, die im Programm bestehen, d.h. sowohl die Daten- als auch die Steuerungsarten.
  • Beschleunigung nach der Parallelumwandlung
  • Speedup-After-Parallel Conversion {SAP}, ist eine Metrik, die die Vorteile der Parallelkonvertierung angibt. In dem zuvor besprochenen Beispiel, in dem 33 % parallel konvertiert werden, wird die effektive Laufzeit durch die 66 % des seriellen Teils bestimmt, und die erwartete Beschleunigung würde 1.52 betragen und als Gleitkommazahl angegeben.
  • 2 veranschaulicht die verschiedenen Schritte, die an der Arbeit des CALIPER-Moduls beteiligt sind. Wie Sie sehen können, wird der übersetzte IR-Code im ASIF-Format an das Inliner-Modul weitergeleitet, das die Expansion aller Funktionsaufrufe vornimmt, und diese modifizierte IR wird an das nächste Modul in der Kette, das Unroller-Modul, weitergeleitet. Dieses Modul rollt alle Schleifen ab, und seine Ausgabe wird an das nächste Modul in der Kette, den Predicator, weitergeleitet. Der Zweck dieses Moduls besteht darin, alle Konditionale in der IR in Predicated-Anweisungen umzuwandeln. Die Ausgabe dieses Moduls ist eine bereinigte IR, die für die Leistungsabschätzung bereit ist.
  • Gleichungen zur Leistungsabschätzung
  • Die Leistungsabschätzung und -vorhersage, sowohl für die serielle als auch für die parallele Version, dreht sich um die folgenden Parameter, die im Folgenden definiert werden, und die Gleichungen zu ihrer Berechnung sind ebenfalls angegeben.
  • Serielle Ausführungszyklen
  • Da wir hier die Leistung grob messen, berücksichtigen wir die Unterschiede zwischen den einzelnen Anweisungen nicht. Jede Anweisung zählt als ein Zyklus, und wir berücksichtigen auch nicht die Speicherhierarchie bei diesen Berechnungen. Die folgende Gleichung beschreibt den Prozess, für
    • Die Gleichung für Serial-Execution-Cycles: C_ SER = N_ INC
      Figure DE202022104088U1_0001
  • Hier ist C_CYC die Anzahl der Zyklen, um die serielle Version des Programms auszuführen, und N_INC ist die Anzahl der Anweisungen für das gegebene Programm,
  • Parallele Ausführungszyklen
  • Die Berechnung der parallelen Ausführungszyklen ist aufwändiger und erfordert eine Prüfung der Datenabhängigkeit zwischen Operanden und Ergebnissen, die zu verschiedenen Anweisungen gehören. Da wir durch Shape-Flattening Kontrollabhängigkeiten jeglicher Art eliminiert haben, ist dies kein Problem mehr. In einem späteren Unterabschnitt wird der Shape-Flattening-Algorithmus ausführlicher beschrieben. Bei der Berechnung von Parallel-Execution-Cycles werden Anweisungen aufgrund ihrer Datenabhängigkeit in verschiedene Äquivalenzklassen eingeteilt. Anweisungen, die derselben Äquivalenzklasse angehören, sind untereinander datenabhängig, so dass wir ihre ordinale Ausgabereihenfolge einhalten müssen, um die Korrektheit zu gewährleisten. Anweisungen, die verschiedenen Klassen angehören, sind jedoch nicht datenabhängig und können daher gleichzeitig ausgeführt werden. Sobald die Äquivalenzklassen festgelegt sind, wird die Ausführungszeit von der am längsten laufenden Äquivalenzklasse bestimmt. Der Algorithmus zur Erstellung äquivalenter Abhängigkeitsklassen wird in einem späteren Unterabschnitt beschrieben.
  • Die Gleichung für die Berechnung der parallelen Ausführungszyklen ist unten angegeben, C_ PAR = MAX ( EQC _ 1 , EQC _ 2 , , EQC_ n )
    Figure DE202022104088U1_0002
  • C_PAR ist die Anzahl der parallelen Zyklen, EQC_1, EQC_2,...,EQC_n sind die Gesamtzyklen, die zur seriellen Ausführung der einzelnen Äquivalenzklassenbefehle benötigt werden.
  • Die Gleichung zur Berechnung der maximal verfügbaren Parallelität (MAP) ist in der folgenden Zeile angegeben: MAP = ( C_ SER C_ PAR ) / C_ SER ) × 100
    Figure DE202022104088U1_0003
  • Dabei ist die maximal verfügbare Parallelität (MAP) ein Maß für die in einem Programm verfügbare Parallelität und wird in Prozent der gesamten Programmanweisungen angegeben. C_PAR ist die Anzahl der Zyklen, die zur Ausführung der parallelen Version des Programms erforderlich sind, und C_SER ist die Anzahl der Zyklen für die serielle Version des Programms.
  • Die Gleichung zur Berechnung des Speedup After Parallel Conversion (SAP) lautet wie folgt: SAP = ( C_ SER / C_ PAR )
    Figure DE202022104088U1_0004
  • Dabei ist die Beschleunigung nach der Parallelkonvertierung (SAP) eine Schätzung, um wie viel schneller das Programm nach der Parallelkonvertierung laufen wird, C_PAR ist die Anzahl der Zyklen, die für die Ausführung der parallelen Version des Programms erforderlich sind, und C_SER ist die Zykluszahl für die serielle Version des Programms.
  • Wie bereits erwähnt, behindern Programmsyntaxstrukturen wie Funktionen, Schleifen und Konditionale eine effektive Schätzung und Vorhersage der Leistung. Daher ist es in einem ersten Schritt wichtig, diese Strukturen der Hochsprache zu reduzieren und dann mit der Schätzung fortzufahren.
  • In einer Ausführungsform sind parallele Äquivalenzklassen eine Menge von Elementen, die eine einzige Eigenschaft erfüllen. Im Zusammenhang mit parallelen Konvertierungen bedeutet dies eine Reihe von Anweisungen, die gleichzeitig ausgeführt werden können. Es ist jedoch zu beachten, dass Anweisungen innerhalb einer bestimmten Klasse seriell ausgeführt werden müssen, um die Eigenschaft einer Äquivalenzklasse zu erfüllen. Wenn die Anweisungen eines Programms in Äquivalenzklassen eingeteilt werden, wird die Laufzeit des Programms von der Zeit, die alle seriell ausgeführten Anweisungen des Programms benötigen, auf die Laufzeit der am längsten laufenden Äquivalenzklasse reduziert.
  • Im Folgenden wird die Technik zur Erstellung der Äquivalenzklassen beschrieben, die hier auch als Abhängigkeitsklassen bezeichnet werden. Einmal erstellt, ist es trivial, die Laufzeit zu bewerten und die Leistung vorherzusagen.
  • In einer Ausführungsform weisen bestimmte Programme lange Abhängigkeitssequenzen auf, die zu einem Verlust an Parallelität führen können und weniger als die optimale Anzahl paralleler Klassen erzeugen. Um dies zu verhindern, wird eine Heuristik vorgeschlagen, die auf dem Konzept der Anweisungsschwelle (IT) basiert, wobei IT die Anzahl der Anweisungen in einer Klasse ist, die sicherstellen oder erzwingen würde, dass die Klasse eine unabhängige parallele Klasse wird.So kann z. B. IT, das einstellbar ist, auf 32 Anweisungen festgelegt werden, was bedeutet, dass die Zusammenführung fortgesetzt wird, wenn die Klassengröße kleiner als IT ist, und die Zusammenführung im anderen Fall übersprungen wird. Um dies zu implementieren, wird zum Zeitpunkt der Zusammenführung paralleler Klassen geprüft, ob die Klassenlängen den IT-Schwellenwert erfüllen. Wenn das Kriterium erfüllt ist, wird die Anweisung, die in beiden Klassen als Schlüssel fungiert, aus den Klassen herausgenommen und eine eigene Klasse mit der Anweisung gebildet. Die Abhängigkeit wird von der neuen Klasse mit der aufgehobenen Anweisung zu den bestehenden Klassen gesetzt. Neue Schlüssel für die beiden bestehenden Klassen werden mit dem Ergebnisoperanden der am wenigsten nummerierten Anweisung in beiden Klassen definiert. Diese Operation wird rekursiv auf beide Klassen angewandt, solange der IT hält. Diese IT-Prüfungen sind ausreichend, um eine optimale Parallelisierung zu gewährleisten. Bei der Berechnung der Anzahl der parallelen Befehle ist darauf zu achten, dass die seriellen Pfade, die den parallelen Klassen vorausgehen, addiert werden und die Anzahl der Befehle zur Summe addiert wird. Caliper wurde entwickelt, um den parallelen Programmierer bei seinen Bemühungen zu unterstützen, indem es eine Ertragsschätzung liefert, die aus der parallelen Konvertierung eines gegebenen Programms resultiert. Caliper arbeitet mit Programmen im ASIF-IR-Format, einer internen Darstellung, die als Teil unseres Compiler-Rahmens entwickelt wurde. Caliper führt in einem ersten Schritt eine Transformation zur Abflachung der Programmform durch, um die nachfolgenden Schritte zu erleichtern. Es führt eine symbolische Analyse der ASIF-IR-Anweisungen durch, die das gegebene Programm intern repräsentieren, und klassifiziert sie auf der Grundlage ihres Abhängigkeitsverhaltens in Äquivalenzklassen. Diese Klassen, die abhängige Anweisungen enthalten, sind selbst frei von Abhängigkeiten und können mit anderen Klassen verschachtelt arbeiten. Sobald sie auf diese Weise angeordnet sind, ist es einfach, serielle und parallele Laufzeiten zu berechnen. Die serielle Laufzeit ist die sequentielle Laufzeit der Anweisungen, aus denen das Programm besteht, und die parallele Laufzeit ist die Laufzeit der Klasse, die am längsten läuft. Auf der Grundlage dieser beiden Zahlen werden zwei für den Programmierer nützliche Metriken angegeben. Die maximal verfügbare Parallelität (MAP) gibt das inhärente Parallelitätspotenzial eines bestimmten Programms an. Die Beschleunigung nach Parallelisierung (SAP) ergänzt die frühere Metrik, indem sie die geschätzte Beschleunigung infolge der parallelen Konvertierung angibt. Zum Zeitpunkt der Erstellung dieses Dokuments sind keine mit Caliper vergleichbaren Technologien bekannt, und es wird der Schluss gezogen, dass Caliper eine einzigartige Parallelisierungstechnologie ist.
  • 3 zeigt ein schematisches Diagramm einer CALIPER-Organisation in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung. Obwohl mehrere automatisierte Lösungen für die parallele Konvertierung verfügbar sind, haben nur sehr wenige versucht, angemessene Schätzungen der verfügbaren inhärenten Parallelität und der erwarteten parallelen Beschleunigung zu liefern. CALIPER, das Ergebnis dieser Forschungsarbeit, ist eine Technologie zur Abschätzung der parallelen Leistung, die diese Lücke füllen kann. Hochsprachenstrukturen wie Funktionen, Schleifen, Bedingungen usw., die die Programmentwicklung erleichtern, können ein Hindernis für eine effektive Leistungsanalyse sein.
  • In einem vorbereitenden Schritt versucht CALIPER, diese formbezogenen Hindernisse zu beseitigen, ein Vorgang, den wir als Program Shape Flattening bezeichnen. Programme sind auch durch Abhängigkeiten gekennzeichnet, die zwischen verschiedenen Anweisungen bestehen und eine Obergrenze für die parallelen Umwandlungsgewinne darstellen. Für eine parallele Schätzung gruppieren wir zunächst Anweisungen, die Abhängigkeiten aufweisen, und fügen sie einer Klasse hinzu, die wir als Dependenzklasse oder Parallelklasse bezeichnen. Während Anweisungen, die zu einer Klasse gehören, sequentiell ausgeführt werden, laufen die Klassen selbst parallel. Die Parallellaufzeit ist nun die Laufzeit der Klasse, die am längsten läuft. Wir geben Leistungsschätzungen der parallelen Konvertierung in Form von zwei Metriken an. Die inhärente Parallelität im Programm wird als maximal verfügbare Parallelität (MAP) und die Beschleunigung nach der Konvertierung als Beschleunigung nach der Parallelisierung (SAP) angegeben.
  • 4 zeigt ein schematisches Diagramm einer Caliper-Operation in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung. Diese syntaktischen Strukturen, ihre Anzahl und Platzierung, die dem zu untersuchenden Programm zusammen einen einzigartigen Charakter verleihen, werden als Programmform (Program-Shape) bezeichnet.
  • Als nächstes wird das Konzept der Äquivalenzklasse verwendet, um das zentrale Problem zu lösen, das in dieser Arbeit behandelt wird, nämlich die grobe Bewertung der parallelen Leistung und die Bereitstellung von Schätzungen und Vorhersagen für Programmierer. Die Äquivalenzklasse ist eine Klasse, die Objekte enthält, die eine gemeinsame Eigenschaft haben. Im vorliegenden Kontext enthält sie Programmanweisungen, die untereinander eine Abhängigkeit aufweisen. Wir bezeichnen eine solche Klasse als Parallele Äquivalenzklasse oder Parallele Abhängigkeits-Klasse. Die parallelen Äquivalenzklassen, die zu einem Programm gehören, enthalten alle Anweisungen in dem betreffenden Programm. Diese parallelen Äquivalenzklassen können parallel ausgeführt werden, daher der Name. Die Anzahl der Parallelen Äquivalenzklassen und der zugehörigen Anweisungen sind gute Indikatoren für das Parallelverhalten des Programms. Eine große Anzahl von Paralleläquivalenzklassen mit einer geringeren Anzahl von Anweisungen in jeder Klasse deutet darauf hin, dass das gegebene Programm parallelumsetzungsfreundlich ist. Schließlich definieren wir einprägsame und leicht zu verwendende Indikatoren für die parallele Leistung, um den parallelen Programmierer zu unterstützen: die maximal verfügbare Parallelität, kurz MAP genannt, und die Beschleunigung nach der Parallelkonvertierung, abgekürzt SAP.
  • Die Figuren und die vorangehende Beschreibung geben Beispiele für Ausführungsformen. Der Fachmann wird verstehen, dass eines oder mehrere der beschriebenen Elemente durchaus zu einem einzigen Funktionselement kombiniert werden können. Alternativ dazu können bestimmte Elemente in mehrere Funktionselemente aufgeteilt werden. Elemente aus einer Ausführungsform können einer anderen Ausführungsform hinzugefügt werden. So kann beispielsweise die Reihenfolge der hier beschriebenen Prozesse geändert werden und ist nicht auf die hier beschriebene Weise beschränkt. Darüber hinaus müssen die Aktionen eines Flussdiagramms nicht in der gezeigten Reihenfolge ausgeführt werden; auch müssen nicht unbedingt alle Aktionen durchgeführt werden. Auch können die Handlungen, die nicht von anderen Handlungen abhängig sind, parallel zu den anderen Handlungen ausgeführt werden. Der Umfang der Ausführungsformen ist durch diese spezifischen Beispiele keineswegs begrenzt. Zahlreiche Variationen sind möglich, unabhängig davon, ob sie in der Beschreibung explizit aufgeführt sind oder nicht, wie z. B. Unterschiede in der Struktur, den Abmessungen und der Verwendung von Materialien. Der Umfang der Ausführungsformen ist mindestens so groß wie in den folgenden Ansprüchen angegeben.
  • Vorteile, andere Vorzüge und Problemlösungen wurden oben im Hinblick auf bestimmte Ausführungsformen beschrieben. Die Vorteile, Vorzüge, Problemlösungen und Komponenten, die dazu führen können, dass ein Vorteil, ein Nutzen oder eine Lösung auftritt oder ausgeprägter wird, sind jedoch nicht als kritisches, erforderliches oder wesentliches Merkmal oder Komponente eines oder aller Ansprüche zu verstehen.
  • Bezugszeichenliste
  • 100
    Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen.
    102
    Konvertierungseinheit
    104
    Vorverarbeitungseinheit
    106
    Kontrolleinheit
    108
    Messschieber-Modul
    202
    EINZIEHER
    204
    ABROLLER
    206
    PRÄDIKATOR
    302
    Funktionserweiterung
    304
    Fusions-Parallel-Wandler
    306
    Schleifenabwickler
    308
    Kontroll-Prädikator
    310
    Rekursions-Konverter
    312
    Generations-Parallelkonverter
    314
    Spaltungs-Parallelkonverter
    316
    Datenabhängigkeits-Analysator
    402
    Funktionserweiterung
    404
    Schleifenabspulen
    406
    Kontrollprädikation
    408
    Rekursionskonvertierung
    410
    Analyse der Datenabhängigkeit
    412
    Fusion-Parallel-Konvertierung
    414
    Parallele Konvertierung durch Spaltung
    416
    Parallele Generierung - Konvertierung

Claims (7)

  1. System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen, wobei das System umfasst: eine Konvertierungseinheit zum Konvertieren von Code in sequentiellen Code zum Ausführen einer oder mehrerer paralleler Schleifen, die in dem parallelen Programm enthalten sind; eine Vorverarbeitungseinheit umfasst eine Programmformabflachung zur Beseitigung von Schätzungshürden, wobei die Programmform eine Zahl und eine Platzierung umfasst, die ein eindeutiges Zeichen hinzufügt; und eine Steuereinheit, die mit einer Äquivalenzklasse ausgestattet ist, um das zentrale Problem zu lösen, das in dem Papier angesprochen wird, nämlich die grobe Bewertung der parallelen Leistung und die Bereitstellung von Schätzungen und Vorhersagen für Programmierer, wobei die Steuereinheit eine Vielzahl von Indikatoren für die parallele Leistung umfasst, um den parallelen Programmierer bei der maximalen verfügbaren Parallelität und der Beschleunigung nach der parallelen Umwandlung zu unterstützen.
  2. System nach Anspruch 1, wobei die Äquivalenzklasse Programmanweisungen enthält, die eine gemeinsame Abhängigkeit aufweisen, wobei die Messung der Ausführungszeit während der Ausführung der parallelen Schleife in dem geschalteten Ausführungsmodus erfolgt.
  3. System nach Anspruch 1, wobei die Ausführungszeit durch Vergleichen des Messergebnisses mit einer Ausführungszeit für eine parallele Schleife im Laufmodus vor dem Umschalten gemessen wird.
  4. System nach Anspruch 3, wobei der Ausführungsmodus in einen anderen Ausführungsmodus umgeschaltet wird, wenn das Vergleichsergebnis kürzer ist als die Ausführungszeit in dem Ausführungsmodus vor dem Umschalten.
  5. System nach Anspruch 1, bei dem ein Caliper-Modul verwendet wird, um dem Benutzer eine Basiserwartung an die parallele Leistung zu geben, die dem betrachteten Programm innewohnt, was dazu beiträgt, die Wahl der auf das Programm anzuwendenden Transformationen zu diktieren, einschließlich der Parallelumwandlungsentscheidungen.
  6. System nach Anspruch 1, bei dem das Caliper-Modul programmformabflachende Transformationen wie Funktionsaufrufexpansion, Schleifenentrollung und Steuerungsprädikation durchführt, die später einzeln beschrieben werden, wobei die Ausgabe des Caliper-Moduls die Leistungsabschätzung in Form von maximal verfügbarer Parallelität (MAP) und die Leistungsvorhersage in Form von Beschleunigung nach Parallelumsetzung (SAP) ist.
  7. System nach Anspruch 1, wobei die Berechnung der parallelen Ausführungszyklen die Klassifizierung der Anweisungen auf der Grundlage ihrer Datenabhängigkeit in verschiedene Äquivalenzklassen beinhaltet.
DE202022104088.5U 2022-07-20 2022-07-20 Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen Active DE202022104088U1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE202022104088.5U DE202022104088U1 (de) 2022-07-20 2022-07-20 Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE202022104088.5U DE202022104088U1 (de) 2022-07-20 2022-07-20 Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen

Publications (1)

Publication Number Publication Date
DE202022104088U1 true DE202022104088U1 (de) 2022-07-27

Family

ID=82799523

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202022104088.5U Active DE202022104088U1 (de) 2022-07-20 2022-07-20 Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen

Country Status (1)

Country Link
DE (1) DE202022104088U1 (de)

Similar Documents

Publication Publication Date Title
DE69727453T2 (de) Kompilieren von prädikatiertem Code mit direkter Analyse desselben
DE69024515T2 (de) Gerät zur Streckenmessung und -analyse zur Leistungsabschätzung von Software-Entwürfen
DE69029983T2 (de) Leistungsverbesserungsgerät für auf Regeln beruhendes Expertensystem
DE112018006047T5 (de) Deformation von aufwandsfunktionen bei der quanten-näherungsoptimierung
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE102018111905A1 (de) Domänenspezifische Sprache zur Erzeugung rekurrenter neuronaler Netzarchitekturen
DE10297279T5 (de) Verfahren und Vorrichtung zum Durchführen von Compiler-Transformation von Softwarecode unter Verwendung von Fast-Forward-Bereichen und Wertespezialisierung
DE102014113692A1 (de) Verdichtung von longitudinalen epa für eine verbesserte phänotypisierung
EP2137615B1 (de) Verfahren zum rechnergestützten ermitteln der abhängigkeiten einer vielzahl von modulen eines technischen systems, insbesondere eines softwaresystems
DE112013001747T5 (de) Optimieren des Verbindens von Anweisungen
DE112004001214T5 (de) Schnelles Merkmalsauswahlverfahren und System zur Maximalentropiemodellierung
EP3568757B1 (de) Verfahren zur erzeugung von quellcode
DE102011014830A1 (de) Verfahren und vorrichtung zum analysieren vonsoftware
EP1529249B1 (de) Verfahren und anordnung zum entwurf eines technischen systems
DE102022109136A1 (de) Maschinelles lernen (ml) modellbasierter compiler
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
DE10256990A1 (de) Programmcodegenerator und Programm
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
WO2012062595A1 (de) Verfahren und vorrichtung zum bewerten von software-parallelisierung
DE202016008006U1 (de) Generierung von Integrationstests im Kleinen
DE102020215589A1 (de) Steuern eines deep-sequence-modells mit prototypen
DE202022104088U1 (de) Ein System zur Abschätzung der inhärenten Parallelität und der Beschleunigung von sequentiellen Programmen
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
DE3689502T2 (de) System und Verfahren zur Programmstrukturierung durch Datentabellenübersetzung.
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm

Legal Events

Date Code Title Description
R207 Utility model specification
R082 Change of representative

Representative=s name: LIPPERT STACHOW PATENTANWAELTE RECHTSANWAELTE , DE