DE69637020T2 - Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen - Google Patents

Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen Download PDF

Info

Publication number
DE69637020T2
DE69637020T2 DE69637020T DE69637020T DE69637020T2 DE 69637020 T2 DE69637020 T2 DE 69637020T2 DE 69637020 T DE69637020 T DE 69637020T DE 69637020 T DE69637020 T DE 69637020T DE 69637020 T2 DE69637020 T2 DE 69637020T2
Authority
DE
Germany
Prior art keywords
data
input data
program
partitions
computer
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.)
Expired - Lifetime
Application number
DE69637020T
Other languages
English (en)
Other versions
DE69637020D1 (de
Inventor
Craig Waltham STANFILL
Cliff Cambridge LASSER
Robert Wayland LORDI
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.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Software LLC
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 Ab Initio Software LLC filed Critical Ab Initio Software LLC
Publication of DE69637020D1 publication Critical patent/DE69637020D1/de
Application granted granted Critical
Publication of DE69637020T2 publication Critical patent/DE69637020T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Description

  • Hintergrund der Erfindung
  • 1. Bereich der Erfindung
  • Die vorliegende Erfindung betrifft Computerverarbeitungssysteme und insbesondere ein Verfahren zum Partitionieren einer durch ein Computerprogramm auszuführenden Aufgabe in kleinere Komponenten, so dass eine größere Anzahl von Prüfpunkten oder Programmhaltepunkten (Checkpoints) gesetzt werden kann.
  • 2. Beschreibung der verwandten Technik
  • Die Rechengeschwindigkeiten von Einzelprozessorcomputern haben in den letzten drei Jahrzehnten enorm zugenommen. In vielen Anwendungsgebieten ist jedoch eine Rechenleistung erforderlich, die selbst die des schnellsten Einzelprozessorcomputers überschreitet. Ein Beispiel ist eine Transaktionsverarbeitung, bei der mehrere Benutzer gleichzeitig auf Computerressourcen zugreifen, und in denen die Ansprechzeiten des Systems gering sein müssen, damit es kommerziell akzeptabel ist. Ein anderes Beispiel ist Datenbank-Mining, wobei hunderte Gigabyte Information verarbeitet werden muss, und wobei die Verarbeitung von Daten auf einem seriellen Computer Tage oder Wochen dauern könnte. Daher sind verschiedenartige "Parallelverarbeitungs"systeme zum Handhaben derartiger Probleme entwickelt worden. Für die vorliegende Diskussion weisen Parallelverarbeitungssysteme eine beliebige Konfiguration von Computersystemen auf, in denen mehrere Zentraleinheiten (CPUs), entweder lokal (z.B. Mehrprozessorsysteme, wie beispielsweise SMP-Computer) oder lokal verteilt (z.B. mehrere als Cluster verbundene Prozessoren oder MPPs) oder abgesetzt oder abgesetzt verteilt (z.B. mehrere über ein LAN- oder ein WLAN verbundene Prozessoren) oder in einer Kombination davon verwendet werden.
  • Die meisten Geschäftsanwendungen weisen einen Satz von "Programmkomponenten" auf, die Daten auf irgendeine Weise umwandeln. Beispielsweise könnte eine Lohnkostenanwendung ein Programm enthalten, das Arbeitsblätter in Gehaltsschecks umwandelt. Wenn eine derartige Komponente als Teil einer Anwendung verwendet wird, die auf einem Parallelverarbeitungssystem ausgeführt wird, gelten die folgenden allgemeinen Grundsätze:
    • (1) Es wird ein Parallelitätsgrad p gewählt. In den meisten Fällen entspricht p der Anzahl von Prozessoren.
    • (2) Eingangsdaten für die Programmkomponente werden auf einen Satz von p Eingangsdateien ("Partitionen") verteilt.
    • (3) p Prozesse der Programmkomponente werden auf verschiedenen Prozessoren gleichzeitig ausgeführt.
    • (4) Jeder Prozess der Programmkomponente verarbeitet eine Partition der Eingangsdaten.
  • Wenn die Ausführung der Programmkomponente beendet ist, werden ihre Ausgangsdaten in p Partitionen geteilt worden sein. Die Ausgangsdaten können dann als Eingangsdaten für weitere Programmkomponenten verwendet oder in eine Speichervorrichtung geschrieben werden.
  • Die Organisation der Daten in diesen Partitionen ist häufig sehr wichtig, da die Programmkomponente in vielen Fällen fehlerhafte Ergebnisse liefern wird, wenn die Daten nicht geeignet partitioniert sind. Außerdem ist die Ordnung oder Folge der Daten innerhalb jeder Partition häufig sehr wichtig. Beispielsweise erfordern viele Programme, dass ihre Eingangsdaten auf eine bestimmte Weise geordnet sind.
  • Um eine korrekte Partitionierung der Daten zu erzielen, ist es üblich, ein separates "Partitionierer"programm zu verwenden, dem eine Eingangsdatei zugeführt wird und das die Eingangsdatei gemäß einer vorgegebenen Regel in p Teile teilt. Wenn die Weise der Partitionierung die durch die Programmkomponente erzeugten Ergebnisse nicht beeinflusst, kann der Partitionierer die Daten auf eine beliebige Weise teilen. Außerdem ist es üblich, dass die Partitionierung auf einer mathematischen Funktion basiert, die jede Eintragung basierend auf den Datenwerten in der Eintragung einer der p Partitionen zuweist.
  • Im Allgemeinen werden die Eingangsdaten in q Eingangs- oder Anfangspartitionen geteilt sein, jedoch nicht notwendigerweise auf eine Weise, die den Erfordernissen der Programmkomponente entspricht. Um derartige Daten zu partitionieren, werden im Allgemeinen q Kopien des Partitioniererprogramms ausgeführt, wobei jede Kopie als Eingangsdaten einer der q Anfangspartitionen verwendet wird. Weil jede der q Kopien des Partitioniererprogramms p Ausgangspartitionen erzeugt, werden die Eingangsdaten in p·q Partitionen geteilt. Üblicherweise wird dieses Problem dadurch gelöst, dass ein zweites "Gatherer"-Programm zum Kombinieren von Gruppen von q Partitionierungen (eine für jeden Prozess des Partitionierers) und zum Erzeugen von End-Ausgangsdaten verwendet wird.
  • Es ist wünschenswert, wenn Anwendungen, die einmal geschrieben wurden, mit einem beliebigen Parallelitätsgrad p ausführbar sind. Dies ist erforderlich, weil im Verlauf der Zeit zunehmende Datenmengen die Anschaffung eines Computers mit einer größeren Anzahl von Prozessoren erforderlich ma chen kann. Um dies zu unterstützen, ist es üblich, die Partitionierer-/Gatherer-Programme derart zu parametrisieren, dass sie eine beliebige Anzahl von Partitionen p erzeugen können, und derart, dass die Programmkomponente korrekt arbeitet. Diese Eigenschaft wird als "Skalierbarkeit" bezeichnet.
  • 1 zeigt ein Diagramm eines herkömmlichen Partitionierer-/Gatherer-Systems zum Teilen von q Anfangspartitionen in p Ausgangspartitionen. 1 zeigt ein System für den Fall einer Programmkomponente, die einzelne Eingangsdateien liest und in einzelne Ausgangsdateien schreibt. Eingangsdatensätze 21 sind in q = 3 Anfangs- oder Eingangspartitionen 1 geteilt worden. Der gewünschte Parallelitätsgrad beträgt p = 2. Es werden drei Prozesse von Partitionierern 2 ausgeführt, die sechs Zwischenergebnisse erzeugen, die über Kommunikationskanäle 3 übertragen werden. Diese Zwischenergebnisse werden durch zwei Prozesse von Gatherer-Programmen 4 gelesen, die zwei Zwischendateien 5 erzeugen. Dann werden zwei Prozesse von Programmkomponenten 6 ausgeführt, die jeweils von einer spezifischen Zwischendatei 5 lesen und in eine spezifische Ausgangsdatei 7 schreiben. Die Ausgangsdatei 7 weist die Partitionen eines Ausgangsdatensatzes 22 auf. Wenn mehrere Eingangsdatensätze 21 vorhanden wären, würden der Partitionierer 2, die Kommunikationskanäle 3, der Gatherer 5 und die Zwischendatei 6 für jeden Eingangsdatensatz einmal kopiert (wodurch sich möglicherweise die Anzahl der Partitionierer 2 und der Gatherer 3 ändert). Außerdem könnten mehrere Ausgangsdatensätze 22 bereitgestellt werden. Schließlich ist es möglich, einige individuelle Eingangsdateien nicht zu partitionieren, sondern sie stattdessen zu allen Prozessen der Programmkomponente (nicht dargestellt) zu übertragen.
  • Es sind viele Modifikationen dieser Architektur möglich. Beispielsweise könnten die Zwischendateien 5 durch entsprechende Kommunikationskanäle ersetzt werden, oder die Kommunikationskanäle 3 könnten durch entsprechende Dateien ersetzt werden.
  • 2 zeigt ein Diagramm eines herkömmlichen Systems zum Darstellen eines wichtigen Spezialfalls "vorpartitionierter Daten". Dieser Fall tritt auf, wenn die Anzahl der Eingangspartitionen q dem gewünschten Parallelitätsgrad p der Programmkomponenten gleicht, und die Weise, auf die die Eingangsdatensätze 21 partitioniert sind, für die Programmkomponente 6 geeignet ist. In diesem Fall müssen die Daten nicht partitioniert werden, so dass die Partitionierer 2, die Kommunikationskanäle 3, die Gatherer 4 und die Zwischendateien 5 eliminiert werden können. Es ist vorteilhaft, diesen Spezialfall zu nutzen, weil durch die Eliminierung der Elemente 2-5 ein wesentlicher Rechenaufwand und wesentlicher Speicherplatz eingespart werden.
  • Wenn die Programmkomponente 6 mehrere Eingangsdaten aufweist, wird für einige dieser Eingangsdaten eine in 1 dargestellte Partitionierung erforderlich sein, und andere werden wie in 2 dargestellt "vorpartitioniert" sein.
  • Um eine komplexe Anwendung mit mehreren Programmkomponneten zu konstruieren, können mehrere Recheneinheiten ("Aufgaben" bzw. "Tasks") mit in 1 oder 2 dargestellten Strukturen verknüpft werden. Diese Verknüpfung erfolgt durch Zuweisen der Ausgangspartitionen 7 einer Stufe der Verarbeitung zu entsprechenden Eingangspartitionen 1 der nächsten Stufe.
  • Für komplexe Anwendungen ist es wünschenswert, wenn ein "Prüfpunkterstellungs"-Schema bereitgestellt wird, durch das, wenn eine Systemstörung auftritt, die Anwendung von einem "Prüfpunkt" ausgehend fortgesetzt werden kann, der einen Zwischenzustand der Rechenverarbeitung hält, anstatt dass die gesamte Anwendung von Anfang an erneut ausgeführt wird. Für eine allgemeine Diskussion der "Prüfpunkterstellung" und eines spezifischen Beispiels eines verbesserten Prüfpunkterstellungssystems, für das die vorliegende Erfindung geeignet sein kann, wird auf die dem Bevollmächtigten der vorliegenden Patentanmeldung übertragene mitanhängige Patenanmeldung mit dem Titel "Methods and Systems for Reconstructing the State of a Computation" verwiesen.
  • Eine der Einschränkungen der Prüfpunkterstellung ist, dass Prüfpunkte nur dann erzeugt werden dürfen, wenn das System sich "im Ruhezustand" befindet, d.h., wenn keine Anwendungsprogramme ausgeführt werden. Ein System kann derart aufgebaut sein, dass es sich zwischen zwei Aufgaben im Ruhezustand befindet, so dass am Ende jeder Aufgabe ein Prüfpunkt erzeugt wird. Außerdem kann ein Prüfpunkt innerhalb einer Aufgabe, unmittelbar nach Ablauf des Gatherer-Programms 4 erzeugt werden. Diese Techniken führen jedoch möglicherweise nicht zu einer ausreichenden Anzahl von Möglichkeiten für eine Prüfpunkterstellung. Beispielsweise wird, wenn eine Programmkomponente 6 einer Aufgabe 10 Stunden läuft, die Anwendung notwendigerweise ein 10-Stunden-Periode aufweisen, in der keine Prüfpunkte erzeugt werden können. Wenn irgendwann innerhalb dieser 10-Stunden-Periode eine Störung auftritt, muss die gesamte Anwendung von Anfang an neu ausgeführt werden.
  • Daher besteht ein Bedarf für ein Verfahren, in dem in parallelen komponentenbasierten Anwendungen eine größere Anzahl von Prüfpunkten erstellt werden kann. Durch die vorliegende Erfindung wird ein Verfahren bereitgestellt, das insbesondere für auf Parallelverarbeitungssystemen laufende Anwendungen geeignet ist und außerdem für auf verteilten Verarbeitungssystemen laufende Verarbeitungen geeignet ist.
  • Kurze Beschreibung der Erfindung
  • Die vorliegende Erfindung beinhaltet zwei Verfahren zum Modifizieren einer Aufgabe (Task) in einer komplexen parallelen Anwendung derart, dass sie häufiger auf einen Ruhezustand schaltet (in dem Prüfpunkte erstellt werden können).
  • Eine parallele Aufgabe beginnt mit einem oder mehreren Eingangsdatensätzen mit q Anfangspartitionen, teilt die Eingangsdatensätze durch eine Kombination von Partitionierungselementen (d.h. Partitionierer/Gatherer) in p Partitionen, führt einen Prozess einer Programmkomponente bezüglich jeder der p Partitionen von Daten aus und erzeugt einen oder mehrere Sätze von Ausgangsdateien, wobei jeder Satz als partitionierter Datensatz betrachtet wird. Die vorliegende Erfindung wird beispielsweise folgendermaßen auf eine Aufgabe zum Erzeugen einer neuen, "überpartitionierten" Aufgabe angewendet:
    • (1) Der Partitionierer wird durch einen "Überpartitionierer" ersetzt, der seine q Eingangsdaten in n·p Partitionen teilt, wobei n einen ganzzahligen Überpartitionierungsfaktor darstellt.
    • (2) Die Programmkomponente wird in einer Folge von n Ausführungsphasen ausgeführt, wobei Prozesse der Programmkomponente gleichzeitig laufen. In jeder Phase wird jeder Prozess der Programmkomponente eine Überpartition der Eingangsdaten lesen und eine Partition von Ausgangsdaten erzeugen.
    • (3) Am Ende jeder der n Ausführungsphasen befindet sich das System im Ruhezustand, in dem ein Prüfpunkt erzeugt werden kann.
  • Die Erfindung umfasst zwei bevorzugte Ausführungsformen. Eine Ausführungsform dient zum "expliziten Überpartitionieren" der Eingangsdaten unter Verwendung bekannter Parti tioniererprogramme, Kommunikationskanäle und Gatherer-Programme zum Erzeugen überpartitionierter Zwischendateien. Diese Ausführungsform ist auf Aufgaben anwendbar, die die in 1 dargestellte Form haben. Die zweite Ausführungsform dient zum "dynamischen Überpartitionieren" der Eingangsdaten durch Anordnen der Programmkomponenten derart, dass nacheinander aufeinanderfolgende Untersätze der originalen Eingangsdaten gelesen werden. Diese Ausführungsform ist auf viele Aufgaben mit der in 2 dargestellten Form anwendbar.
  • Details der bevorzugten Ausführungsform der vorliegenden Erfindung werden nachstehend unter Bezug auf die beigefügten Zeichnungen beschrieben. Anhand der Details der Erfindung sind für Fachleute zahlreiche weitere Innovationen und Änderungen ersichtlich.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt ein Diagramm eines herkömmlichen Partitionierer-/Gatherer-Systems zum Teilen von q Anfangspartitionen in p Ausgangspartitionen;
  • 2 zeigt ein Diagramm eines herkömmlichen Systems zum Darstellen des Spezialfalls "vorpartitionierter Daten";
  • 3a zeigt ein Gesamtdiagramm einer Originalaufgabe vor der Anwendung eines erfindungsgemäßen Überpartitionierungssystems;
  • 3b zeigt eine Gesamtansicht der Aufgabe von 3a nach der Anwendung eines erfindungsgemäßen Überpartitionierungssystems;
  • 4 zeigt ein Detaildiagramm des Überpartitionierungssystems von 3b zum Darstellen der bevorzugten Ausführungsform eines erfindungsgemäßen expliziten Überpartitionierungssystems;
  • 5a und 5b zeigen Detaildiagramme zum Darstellen der Datenfluss-, Prozessor-, Kommunikations- und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen expliziten Überpartitionierungssystems;
  • 6 zeigt ein Detaildiagramm des Überpartitionierungssystems von 3b zum Darstellen der bevorzugten Ausführungsform eines erfindungsgemäßen dynamischen Überpartitionierungssystems;
  • 7 zeigt ein Detaildiagramm zum Darstellen der Datenfluss-, Prozessor-, Kommunikations- und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen dynamischen Überpartitionierungssystems; und
  • 8 zeigt ein Detaildiagramm zum Darstellen der Datenfluss-, Funktions- und Kommunikationsbeziehungen eines Systems zum Implementieren von Zeigern und Überwachungseinrichtungen in einem erfindungsgemäßen dynamischen Überpartitionierungssystem.
  • In den verschiedenen Zeichnungen stellen ähnliche Bezugszeichen und Bezeichnungen ähnliche Elemente dar.
  • Ausführliche Beschreibung der Erfindung
  • In der vorliegenden Beschreibung sollen die bevorzugte Ausführungsform und die dargestellten Beispiele als exemplarisch und nicht im einschränkenden Sinn verstanden werden.
  • Übersicht
  • 3a zeigt ein Gesamtdiagramm einer Originalaufgabe vor der Anwendung eines erfindungsgemäßen Überpartitionierungssystems. 3a zeigt eine parallele Aufgabe 11, die mit einem oder mehrren Eingangsdatensätzen 21 mit q Eingangspartitionen 1 startet, diese durch eine Kombination von Partitionierungselementen (d.h. Partitionierer/Gatherer) 8 in p Partitionen 12 teilt, einen Prozess einer Programmkom ponente 6 bezüglich jeder der p Partitionen 12 der Daten ausführt und einen oder mehrere Ausgangspartitionen 7 von Ausgangsdaten 22 erzeugt.
  • 3b zeigt ein Gesamtdiagramm der Aufgabe von 3a nach der Anwendung eines erfindungsgemäßen Überpartitionierungssystems. Eine neue, überpartitionierte Aufgabe 13 wird folgendermaßen erzeugt:
    • (1) Der Partitionierer 8 wird durch einen "Überpartitionierer" 9 ersetzt, der seine q Eingangspartitionen in n·p Datenpartitionen 12 teilt, wobei n einen ganzzahligen Überpartitionierungsfaktor darstellt.
    • (2) Die Programmkomponente 6 wird in einer Serie von n Ausführungsphasen 10 ausgeführt, wobei p Prozesse der Programmkomponente gleichzeitig ausgeführt werden. In jeder Phase wird jeder Prozess der Programmkomponente 6 eine Partition 12 der Eingangsdaten 21 lesen und eine Partition 7 der Ausgangsdaten 22 erzeugen. Die Eingangsdatendateien 21 können ein beliebiges Format haben, z.B. ein sequentielles, ein hierarchisches, ein relationales oder ein ähnliches Format.
    • (3) Am Ende jeder der n Ausführungsphasen 10 befindet sich das System im Ruhezustand, in dem ein Prüfpunkt erstellt werden kann.
  • Ein wichtiges Merkmal ist hierbei, dass in den meisten Fällen die zum Ausführen der Programmkomponenten 6 erforderliche Zeit eng mit dem zu verarbeitenden Datenvolumen in Beziehung steht, z.B. kann die Hälfte der Daten etwa in der Hälfte der Zeit verarbeitet werden. Durch eine n-fache Verminderung des Datenvolumens kann daher die Laufzeit für jeden Prozess der Programmkomponente 6 um einen entsprechenden Faktor n vermindert werden, wodurch das Intervall zwischen Möglichkeiten für die Erstellung eines Prüfpunktes um einen Faktor n vermindert wird.
  • Die Erfindung umfasst zwei bevorzugte Ausführungsformen. Eine Ausführungsform dient zum "expliziten Überpartitionieren" der Eingangsdaten 21 unter Verwendung bekannter Partitioniererprogramme 2, Kommunikationskanäle 3 und Gatherer-Programme 4 zum Erzeugen überpartitionierter Zwischendateien 5. Diese Ausführungsform ist auf Aufgaben anwendbar, die die in 1 dargestellte Form haben. Die zweite Ausführungsform dient zum "dynamischen Überpartitionieren" der Eingangsdaten 21 durch Anordnen der Programmkomponenten 6 derart, dass nacheinander aufeinanderfolgende Untersätze der originalen Eingangsdaten 21 gelesen werden. Diese Ausführungsform ist auf viele Aufgaben mit der in 2 dargestellten Form anwendbar.
  • Explizite Überpartitionierung
  • Das explizite Überpartitionierungsverfahren verwendet zwei herkömmliche Partitionierer 2, Kommunikationskanäle 3 und Gatherer 4 zum erzeugt einen Satz "überpartitionierter" Zwischendateien 5 und führt dann die Programmkomponenten 6 in mehreren Ausführungsphasen bezüglich den überpartitionierten Dateien aus. Dieses Verfahren kann verwendet werden, wenn die folgenden Anforderungen erfüllt sind:
    • (1) Für das Verfahren müssen q Eingangspartitionen 1 von einem Eingangsdatensatz 21, ein gewünschter Parallelitätsgrad p und ein gewünschter Überpartitionierungsgrad n bereitgestellt werden.
    • (2) Das Partitionierungsprogramm 2 muss derart konfiguriert sein, dass es mindestens n·p Ausgangspartitionen erzeugt.
    • (3) Die Programmkomponente 6 muss "skalierbar" sein, d.h., es muss sichergestellt sein, dass die Anwendung für einen beliebigen Parallelitätsgrad p gültige Ergebnisse erzeugt.
  • 4 zeigt ein detaillierteres Diagramm des Überpartitionierungssystems von 3b zum Darstellen der bevorzugten Ausführungsform eines erfindungsgemäßen expliziten Überpartitionierungssystems. Wenn die vorstehenden Anforderungen erfüllt sind, kann das explizite Überpartitionierungsverfahren folgendermaßen implementiert werden:
    • (1) q Prozesse des Partitionierers 2 sind derart konfiguriert, dass sie auf die q Eingangspartitionen einwirken. Jeder Prozess des Partitionierers 2 ist derart konfiguriert, dass er n·p Partitionen erzeugt.
    • (2) n·p Prozesse des Gatherer 4 sind derart konfiguriert, dass sie auf die Ausgangsdaten des Partitionierers 2 einwirken.
    • (3) Die q Prozesse des Partitionierers 2 sind, wie dargestellt ist, unter Verwendung von n·p·q Kommunikationskanälen mit den n·p Prozessen des Gatherers 4 verknüpft.
    • (4) Alle Partitionierer 2 und Gatherer 4 laufen und erzeugen n·p Zwischendateien 5.
    • (5) n Ausführungsphasen 10 werden wie vorstehend beschrieben ausgeführt. In jeder Phase werden p Prozesse der Programmkomponente 6 ausgeführt, wobei jeder Prozess auf herkömmliche Weise Daten von einer der Zwischendateien 5 liest und Daten in eine der Ausgangspartitionsdateien 7 schreibt. Die Ausgangsdaten werden aus n·p Dateien bestehen.
  • In vielen Fällen ist die Logik der Programmkomponente 6 derart, dass die durch die n aufeinanderfolgenden Ausführungsphasen 10 erzeugten Ausgangsdaten, falls sie miteinander verknüpft werden, unabhängig vom Wert n den gleichen Satz aus p (anstatt n·p) Ausgangsdateien erzeugen werden, wie im überpartitionierten Fall. In diesem Fall kann ein Satz aus p Ausgangsdateien erzeugt werden, indem einfach die durch jeden Prozess der Programmkomponente 6 während ihrer aufeinanderfolgenden Ausführungshasen 10 erzeugten Ausgangsdaten angehängt werden. Dies hat den Vorteil, dass die Anzahl der zu managenden Ausgangsdateien vermindert wird.
  • Ähnlich wie beim Stand der Technik sind viele Modifikationen dieser Architektur möglich. Beispielsweise könnten die Zwischendateien 5 durch entsprechende Kommunikationskanäle ersetzt werden, oder die Kommunikationskanäle 3 könnten durch entsprechende Dateien ersetzt werden.
  • Die vorstehenden Schritte könnten entweder manuell (z.B. durch Überschreiben der zum Steuern der Gesamtausführung der Anwendung verwendeten Software) oder automatisch implementiert werden. In der bevorzugten Ausführungsform erfordert der automatische Fall, dass für jede Aufgabe die folgende Information (oder äquivalente Information) in maschinenlesbarer Form spezifiziert wird:
    • (1) Der gewünschte Parallelitätsgrad p und der gewünschte Überpartitionierungsgrad n.
    • (2) Die Identität der Programmkomponente 6.
    • (3) Die Identitäten der Dateien, die die Eingangsdaten 21 für die Programmkomponente 6 enthalten.
    • (4) Für jeden Eingangsdatensatz 21 für die Aufgabe die folgende Zusatzinformation:
    • (1) Die Identitäten der Dateien, die ihre Eingangspartitionen 1 aufweisen.
    • (2) Die Identitäten der für diese Eingangspartitionen geeigneten Partitionierer 2.
    • (3) Die Identitäten der für diese Eingangspartitionen geeigneten Gatherer.
    • (4) Die Identitäten geeigneter Speichervorrichtungen, in denen die p Zwischendateien 5 gespeichert werden können.
    • (5) Für jeden Ausgangsdatensatz 22 die Identitäten geeigneter Speichervorrichtungen, in denen die p Ausgangspartitionsdateien 7 gespeichert werden können.
    • (6) Identifizierungen für q "Partitions"prozessoren, durch die die Partitioniererprogramme 2 ausgeführt werden können.
    • (7) Identifizierungen für p "Gatherer"prozessoren, durch die die Gatherer-Programme 4 ausgeführt werden können (die gegebenenfalls die gleichen sein können wie die Partitioniererprozessoren).
    • (8) Identifizierungen für p "Arbeits"prozessoren, durch die die Programmkomponenten 6 ausgeführt werden können (die gegebenenfalls die gleichen sein können wie die Partitioniererprozessoren oder die Gatherer-Prozessoren).
    • (9) Für die Partitionierer 2, die Gatherer 4 und die Programmkomponente 6 Information, die erforderlich ist, um sie zu betreiben und sie mit Datendateien und Kommunikationskanälen zu verbinden; und im Fall der Partitionierer 2 Information darüber, wie diese konfiguriert sein müssen, um eine beliebige Anzahl von Partitionen zu erzeugen, wobei diese Information auf herkömmliche Weise bereitgestellt wird. In der bevorzugten Ausführungsform wird diese Information durch eine Unterroutine bereitgestellt, wobei, wenn die Identitäten der zu verbindenden Datendateien/Unterroutinen bereitgestellt wird (für die Partitionierer 2 zusätzlich die Anzahl der Partitionen), eine Folge von "Argumentzeilenparametern" zurückübertragen wird, durch die veranlasst wird, dass das Programm wunschgemäß ausgeführt wird.
  • Wenn die vorstehende Information (oder äquivalente Information) bereitgestellt wird, kann der explizite Überpartitionierungsalgorithmus ausgeführt werden. Die 5a und 5b zeigen Detaildiagramme zum Darstellen der Daten fluss-, Prozessor-, Kommunikations- und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen expliziten Überpartitionierungssystems.
  • Gemäß 5a werden die Dateien, die die Eingangsdaten 21 enthalten, für die Aufgabe in der bevorzugten Ausführungsform auf die folgende Weise iterativ verarbeitet:
    • (1) Identifizieren der Anzahl q von Eingangspartitionen für die Eingangsdatendateien 21.
    • (2) Erzeugen von n·p·q Kommunikationskanälen 3 durch:
    • (1) Erzeugen der ersten n·p Kanäle 3 durch einen ersten Partitionsprozessor 23, Erzeugen der nächsten n·p Kanäle durch einen nächsten Partitionsprozessor 23, usw.
    • (2) Verbinden der ersten n Kanäle 3 mit einem ersten Gatherer-Prozessor 24, Verbinden der nächsten n Kanäle mit dem nächsten Gatherer-Prozessor 24, usw., bis n·p Kommunikationskanäle zugewiesen worden sind, wobei zu diesem Zeitpunkt der Zyklus mit dem ersten Gatherer-Prozessor 24 wiederholt wird.
    • (3) Ausführen von q Prozessen des Partitionierers 2, wobei:
    • (1) Jeder Prozess einem der Partitionsprozessoren 23 zugeordnet ist.
    • (2) Jeder Prozess derart konfiguriert ist, dass er n·p Ausgangspartitionen erzeugt.
    • (3) Jeder Prozess mit allen Kommunikationskanälen 3 verbunden ist, die in ihrem Prozessor erzeugt werden.
    • (4) Ausführen von n·p Prozessen des Gatherers 4, wobei:
    • (1) Jedem der Gatherer-Prozessoren 24 n Prozesse zugeordnet sind. Der i-te Prozess jedes Prozessors mit dem i-ten ankommenden Kommunikationskanal 3, dem (n + i)-ten Kanal 3, dem (2n + i)-ten Kanal 3, usw. verbunden ist, bis keine weiteren unverbundenen Kommunikationskanäle 3 übrig sind.
    • (2) Die auf dem k-ten Gatherer-Prozessor 24 laufenden Prozesse schreiben eine k-te Zwischendatei 5 in eine Speichervorrichtung eines Satzes von "Zwischendatei"speichervorrichtungen 25 (für eine höhere Leistungsfähigkeit schreibt jeder auf dem k-ten Prozessor 24 laufende Prozess eine k-te Zwischendatei 5 in eine separate k-te Speichervorrichtung).
    • (5) Warten, bis alle Prozesse des Partitionierers 2 und des Gatherers 4 beendet sind, und anschließendes Löschen der Kommunikationskanäle 3.
    • (6) Optionales Erstellen von Prüfpunkten im System, bevor der nächste Satz Eingangsdatendateien 21 abgearbeitet wird (zu diesem Zeitpunkt ist die Überpartitionierung der bereitgestellten Eingangsdateien 21 abgeschlossen; Prüfpunkte müssen nicht tatsächlich bei jedem Ereignis erstellt werden, bei dem sie erstellt werden können).
    • (7) Wiederholen der Schritte (1)-(6) für jeden nächsten Satz von Eingangsdatendateien 21.
  • Gemäß 5b werden in der bevorzugten Ausführungsform n Ausführungsphasen 10 bezüglich Daten in den Zwischendateien 5 auf die folgende Weise ausgeführt:
    • (1) Ausführen von p Kopien der Programmkomponente 6 auf jedem der Arbeitsprozessoren 26 während jeder der n Ausführungsphasen 10.
    • (2) Während jeder i-ten Ausführungsphase 10 liest der Prozess der auf dem j-ten Arbeitsprozessor 26 laufenden Programmkomponente 6 die i-te Zwischendatei 5 von einer Zwischenspeichervorrichtung 26 und schreibt Daten in die i-te Ausgangspartitionsdatei 7 in einer Ausgangsspeichervorrichtung (für eine höhere Leistungsfähigkeit liest jeder auf dem j-ten Arbeitsprozessor 26 laufende Prozess die i-te Zwischendatei 5 von der j-ten Zwischenspeichervorrichtung 25 und schreibt Daten in die i-te Ausgangspartitionsdatei 7 in einer separaten j-ten Ausgangsspeichervorrichtung 27).
    • (3) Optionales Löschen der Zwischendateien 5 in jeder Ausführungsphase 10, in der sie verbraucht werden.
    • (4) Warten auf den Abschluss aller p Prozesse der in jeder der n Ausführungsphasen laufenden Programmkomponente 6, wobei zu diesem Zeitpunkt Prüfpunkte im System erstellt werden können.
  • Daher werden am Ende jeder der n Ausführungsphasen 10 p Prozesse der Programmkomponente 6 1/n der gesamten Eingangsdaten 21 verarbeitet haben, woraufhin die Prozesse sich im Ruhezustand befinden, so dass an dieser Stelle ein Prüfpunkt erstellt werden kann. Wenn beispielsweise q = 2 und p = 5 betragen, würde herkömmlich jede Programmkomponente 6 1/5 aller Eingangsdaten 21 in einer Zykluszeit verarbeiten; unter der Voraussetzung einer gleichzeitigen Ausführung aller Programmkomponenten 6 werden alle Daten in der gleichen Zykluszeit verarbeitet. Es kann jedoch kein Prüfpunkt erstellt werden, ehe ein Zyklus beendet ist. Unter Verwendung der vorliegenden Erfindung beträgt bei Auswahl eines Überpartitionierungsfaktors von 3 die Gesamtzahl von verarbeitbaren Partitionen 3·5 = 15. In jedem Ausführungszyklus werden jedoch nur 5 Partitionen mit einer Größe von jeweils etwa 1/3 der Größe einer herkömmlichen Partition verarbeitet. Unter der Voraussetzung linearer Verarbeitungszeiten beträgt die Zykluszeit für jede Programmkomponente 6 etwa 1/3 der herkömmlichen Zykluszeit. Nach jedem derartigen reduzierten Zyklus kann ein Prüfpunkt erstellt werden, und dann kann eine nächste Ausführungsphase 10 gestartet werden. Das Erstellen von Prüfpunkten und die Ausführungsphasen 10 werden dann wiederholt, bis alle Überpartitionen verarbeitet wurden.
  • Dynamische Überpartitionierung
  • Wie vorstehend erwähnt wurde, werden die Eingangsdaten 21 in einigen Fällen anfangs auf eine für die Programmkomponente 6 geeignete Weise partitioniert, so dass in diesem Fall die in 2 dargestellte Optimierung möglich wird (d.h., die Partitionierer 2, die Kommunikationskanäle 3, die Gatherer 4 und die Zwischendateien 5 sind eliminiert). Das erforderliche explizite Überpartitionierungsverfahren beinhaltet jedoch notwendigerweise die Verwendung von Partitionierern, usw., so dass die Vorteile der vorpartitionierten Optimierung verloren gehen.
  • Die zweite Ausführungsform der vorliegenden Erfindung basiert nicht auf Partitionierern, usw. zum Erzeugen überpartitionierter Zwischendateien 5. Stattdessen wird in der zweiten Ausfürhunsgform eine Eingangsdatei 1 effektiv neu partitioniert. Dieses Verfahren wird als "dynamische Überpartitionierung" bezeichnet. 6 zeigt ein Detaildiagramm des Überpartitionierungssystems von 3b zum Darstellen der bevorzugten Ausführungsform eines erfindungsgemäßen dynamischen Überpartitionierungssystems. Dieses Verfahren kann verwendet werden, wenn durch Teilen der Eingangsdateien 1 in als Datensegmente 27 bezeichnete sequentielle Partitionen für die Programmkomponente 6 geeignete Partitionen erhalten werden können (das Verfahren zum Erzeugen derartiger Segmente wird nachstehend erläutert).
  • Die dynamische Überpartitionierungsverarbeitung 28 führt dazu, dass die Programmkomponenten 6 auf die Datensegmente 27 der Eingangspartitionen 1 zugreifen können, wobei ein Segment jeder Eingangspartition 1 durch die Programmkomponenten 6 in jeder von mehreren Ausführungsphasen 10 auf eine ähnliche Weise wie bei der expliziten Überpartitionierung verarbeitet wird. In der dynamischen Überpartitionierungsverarbeitung 28 erfolgt dies ohne dass Zwischendateien erzeugt werden. Das Wesentliche der dynamischen Überpartitionierung besteht darin, jeden Prozess der Programmkomponente 6 zu "überlisten", ein Datensegment 27 der Eingangsdatendatei 1 zu lesen, indem veranlasst wird, dass der entsprechende Prozess "annimmt", dass er einen vollständigen Datensatz 1 liest.
  • 7 zeigt ein Detaildiagramm zum Darstellen der Datenfluss-, Prozessor-, Kommunikations- und Speicherbeziehungen eines Systems zum Implementieren eines erfindungsgemäßen dynamischen Überpartitionierungssystems. Die dynamische Überpartitionierung wird in der bevorzugten Ausführungsform folgendermaßen implementiert:
    • (1) Erzeugen eines geeigneten "Zeigers" 29 und einer Überwachungseinrichtung 30 für jede Eingangspartition 1. (Die dynamische Überpartitionierungsverarbeitung 28 von 6 weist den Zeiger 29 und die Überwachungseinrichtung 30 auf. Der Zeiger 29 markiert eine Position (z.B., ein Byte-Offset) innerhalb der Eingangspartition 1. Dadurch kann die Programmkomponente 6 Daten von der Eingangsdatei 1 an der durch den Zeiger 29 aktuell angezeigten Position lesen. Die Überwachungseinrichtung 30 prüft die durch den Zeiger 29 angezeigte Dateneintragung, und kann den Zeiger 29 zu einem geeigneten Zeitpunkt anweisen, eine "Datenende"markierung (EOF) anzuzeigen, anstatt zur nächsten Dateneintragung in der Eingangspartition 1 zu springen.)
    • (2) Ausführen von p Prozessen der Programmkomponente 6 in jeder Ausführungsphase 10.
    • (3) Zugreifen auf Daten in einem Datensegment 27 nur über den Zeiger 29 (anstatt zuzulassen, dass die Programm komponente 6 direkt auf die Eingangspartition 1 zugreift).
    • (4) Anweisen des Zeigers 29, eine Datendemarkierung (EOF) anzuzeigen, wenn die Überwachungseinrichtung 30 das Ende eines Datensegments 27 erfasst, wie nachstehend näher beschrieben wird. (Weil der Zeiger 29 sich nicht wirklich am Ende der Eingangspartition 1 befindet, wird dieses Ereignis als "künstliches Datenende" bezeichnet.)
    • (5) Beenden der Programmkomponenten 6 (die jeweils alle Daten in einem entsprechenden Datensegment 27 verarbeitet haben).
    • (6) Anschließendes Schreiben der Inhalte des Zeigers 29 und der Überwachungseinrichtung 30 in einen geeigneten Speicher, vorzugsweise unter Verwendung eines Two-Phase-Commit-Protocol, das einen Teil eines Prüfpunkterstellungssystems aufweist.
    • (7) Optionales Erstellen von Prüfpunkten im System, bevor die Verarbeitung zum nächsten Datensegment 27 fortschreitet.
    • (8) Lesen der Inhalte des Zeigers 29 und der Überwachungseinrichtung 30 in einen Arbeitsspeicher zu Beginn der nächsten Ausführungsphase 10.
    • (9) Beginnen mit einer weiteren Ausführung der Programmkomponenten 6 unter Verwendung eines entsprechenden Zeigers 29 zum Zugreifen auf Daten. (Jeder Zeiger 29 wird nun auf einen Mittelabschnitt einer Eingangspartition 1 verweisen, d.h. auf den Beginn eines nächsten Datensegments 29 dieser Eingangspartition 1. Dadurch wird die Verarbeitung exakt an der Stelle starten, an der sie in der vorangehenden Ausführungsphase 10 verlassen wurde. Die Ausgangsdaten jeder Ausführungsphase 10 werden an Ausgangsdaten der vorherigen Ausführungsphase ange hängt, so dass es scheint, als ob die Anwendung vom Beginn bis zum Ende ohne Unterbrechung durch die Eingangsdatendateien 21 fortgesetzt wird.)
    • (10) Beenden aller Ausführungen, wenn alle Zeiger 29 das "tatsächliche" Ende ihrer Eingangspartition 1 erreichen (d.h., es werden keine weiteren Ausführungsphasen ausgeführt, weil alle Daten verarbeitet worden sind).
  • Die Bestimmung, wann eine Überwachungseinrichtung 30 einen Zeiger 29 anweist, ein künstliches Datenende anzuzeigen, ist vom durch die Programmkomponente 6 verwendeten Partitionierungsschema abhängig. Es können mehrere Fälle auftreten.
  • Erstens können die Eingangsdaten für die Programmkomponenten 6 auf eine beliebige Weise partitioniert sein. Dies kann beispielsweise der Fall sein, wenn die Verarbeitung einer Eintragung von der Verarbeitung der nächsten vollständig unabhängig ist. In diesem Fall können Segmentgrenzen auf eine beliebige geeignete Eintragungsgrenze fallen.
  • Zweitens kann für die Programmkomponenten 6 erforderlich sein, dass alle Eintragungen, die den gleichen Wert eines Schlüssels aufweisen (z.B. eine Angestelltenzahl), dem gleichen Segment 27 zugeordnet sind. In diesem Fall sollten die Eingangsdaten 1 gemäß diesem Schlüssel sortiert sein. In diesem Fall sind Segmentgrenzen vorzugsweise derart eingeschränkt, dass sie auf Grenzen zwischen Verarbeitungen aufeinanderfolgender Eintragungen mit identischen Schlüsselwerten liegen.
  • Drittens können die Programmkomponenten 6 von mehreren Eingangsdateien lesen, wobei erforderlich ist, dass alle Eintragungen mit einem vorgegebenen Schlüsselwert in der gleichen Ausführungsphase verarbeitet werden. In diesem Fall sollten die Daten in allen derartigen Eingangsdateien bezüglich des Eingangsschlüssels sortiert sein, und die den Pro grammkomponenten 6 vorangehenden verschiedenen Überwachungseinrichtungen 30 müssen künstliche Datenendesignale koordinieren, so dass alle Zeiger 29 ihre Daten bezüglich der gleichen Schlüsselwertgrenze segmentieren.
  • Schließlich ist ein Mechanismus erforderlich, der bestimmt, wann die Überwachungseinrichtungen 30 beginnen, eine geeignete Stelle zu suchen, an der ein künstliches Datenende eingefügt werden kann. Im Fall der dynamischen Überpartitionierung muss der Überpartitionierungsgrad nicht im Voraus festgelegt werden. Die Programmkomponenten 6 werden ausgeführt, bis ein Ereignis eintritt (z.B. tritt im Eingangsdatenstrom ein bestimmter Datenwert auf, oder es verstreicht eine vorgegebene Zeitdauer, oder es wird eine vorgegebene Anzahl von Bytes oder Eintragungen verarbeitet, oder es wird ein vorgegebener Prozentsatz der Eingangsdatendateigröße verarbeitet, usw.).
  • Diese Anforderungen können durch die in 8 dargestellte Architektur erfüllt werden, die ein Diagramm zum Darstellen der Datenfluss-, Funktions- und Kommunikationsbeziehungen eines Systems zum Implementieren von Zeigern 29 und Überwachungseinrichtungen 30 in einem erfindungsgemäßen dynamischen Überpartitionierungssystem zeigt.
    • (1) Alle Überwachungseinrichtungen 30 verwenden gemeinsam einen globalen "Triggerkanal" 31 für eine wechselseitige Kommunikation.
    • (2) Alle Überwachungseinrichtungen 30, die bezüglich eines bestimmten Schlüsselwertes "koordinieren" müssen, sind über einen Koordinierungskanal 32 verbunden (es können mehrere Koordinierungskanäle 32 vorhanden sein).
    • (3) Eine beliebige Überwachungseinrichtung 30 kann zu einem beliebigen Zeitpunkt eine "Phasenunterbrechungs"meldung über den Triggerkanal 31 übertragen; die Meldung wird durch eine andere Überwachungseinrichtung 30 über den Triggerkanal 31 empfangen. Ein derartiges Ereignis wird typischerweise nach Ablauf einer bestimmten Zeitdauer auftreten, nachdem eine bestimmte Datenmenge die Überwachungseinrichtung durchlaufen hat, oder nachdem ein Schlüsselwert in einer Eintragung erfasst wird.
    • (4) Nachdem eine Phasenunterbrechungsmeldung empfangen worden ist, erfasst jede Überwachungseinrichtung 30 den Schlüssel von der letzten Eintragung, die tatsächlich von ihrem aktuellen Datensegment 27 gelesen wurde, und überträgt diesen Schlüssel über ihren Koordinierungskanal 32 zu einer spezifizierten "Hauptüberwachungseinrichtung".
    • (5) Jede Hauptüberwachungseinrichtung wartet, bis ein Schlüssel von jeder Überwachungseinrichtung 30 über ihren Koordinierungskanal 32 (einschließlich ihres eigenen) empfangen worden ist, und erfasst dann den größten Schlüsselwert in diesem Satz. Dieser Schlüssel wird als "Unterbrechungspunktschlüssel" bezeichnet.
    • (6) Jede Hauptüberwachungseinrichtung überträgt den Unterbrechungspunktschlüssel über ihren Koordinierungskanal 32 zu allen Überwachungseinrichtungen.
    • (7) Jede Überwachungseinrichtung 30 aktiviert dann ihren entsprechenden Zeiger 29, um die Datenzufuhr zu einer entsprechenden Programmkomponente 6 fortzusetzen, bis ein Schlüssel erreicht wird, der den Wert des Unterbrechungspunktschlüssels überschreitet. An diesem Punkt wird durch diese Überwachungseinrichtung 30 ein künstliches Datenendesignal erzeugt, wodurch die aktuelle Ausführungsphase 10 beendet wird.
    • (8) In einem besonderen Fall, in dem die Überwachungseinrichtungen 30 nicht koordiniert werden müssen (wenn beispielsweise die Programmkomponenten 6 von einer einzelnen Eingangsdatendatei 21 lesen), enthält jeder Ko ordinationskanal 32 eine einzelne Überwachungseinrichtung 30 (d.h. es ist keine gemeinsame Verwendung von Information zwischen den Überwachungseinrichtungen erforderlich). Der vorstehende Algorithmus bleibt ansonsten unverändert. In einer alternativen Ausführungsform werden überhaupt keine Koordinationskanäle 32 eingerichtet.
    • (9) In einem besonderen Fall, in dem die Phasenunterbrechung ohne Berücksichtigung von Schlüsseln erzeugt werden kann (z.B. basierend auf der verstrichenen Zeit oder der Anzahl von Eintragungen, usw.) erzeugen die Überwachungseinrichtungen 30 unmittelbar nach dem Empfang einer Phasenunterbrechungsmeldung über den Triggerkanal 31 einfach ein künstliches Datenendesignal.
  • Die Kombination aus dem Zeiger 29 und der Überwachungseinrichtung 30 kann zwischen den Programmkomponenten 6 und den Eingangspartitionen 1 auf eine beliebige von mindestens drei Weisen eingefügt werden:
    • (1) Die Programmkomponente 5 kann unter Verwendung einer Unterprogramm-Bibliothek geschrieben oder überschrieben werden, die Zeiger 29 und Überwachungseinrichtungen 30 erzeugt. Hierfür ist ein Zugriff auf den Quellencode der Programmkomponente 6 erforderlich, was zwar zeitaufwendig sein kann, jedoch die höchste Leistungsfähigkeit bietet.
    • (2) Die Programmkomponente 6 kann auf bekannte Weise mit einer Laufzeitbibliothek verknüpft werden, die Aufrufe untergeordneter Eingabe-/Ausgabemechanismen unterbricht. Beispielsweise kann ein Aufruf "Öffnen" unterbrochen und auf einen Aufruf "Zeiger öffnen" geschaltet werden; ein Aufruf "Lesen" könnte unterbrochen und auf einen Aufruf "Lesen vom Zeiger" geschaltet werden. Hierfür ist ein Zugriff auf den Objektcode der Pro grammkomponente 6 erforderlich, aber diese Vorgehensweise ist wahrscheinlich hochgradig effizient.
    • (3) Eine "Zwischenverarbeitung" kann zwischen jeder Programmkomponente 6 und ihrer Eingangspartition 1 eingefügt werden. Die Zwischenverarbeitung liest die Eingangspartitionsdatei 1 über den Cusor-/Überwachungseinrichtungsmechanismus und leitet dann Daten über einen Kommunikationskanal oder eine Zwischendatei auf bekannte Weise zur Programmkomponente 6 weiter. Diese Option erfordert lediglich einen Zugriff auf die auführbare (binäre) Form der Programmkomponente 6, kann jedoch aufgrund des Aufwandes zum Kopieren von Daten von der Eingangspartitionsdatei 1 auf einen Kommunikationskanal oder in eine Zwischendatei etwas ineffizient sein.
  • Indem jeder Prozess der Programmkomponente 6 "überlistet" wird, jeweils nur ein Datensegment der Eingangsdatendatei 1 zu lesen und dann ein "natürliches" Ende der Programmkomponenten 6 erzwungen wird, indem am Ende jedes Datensegments 27 ein künstliches Datenendesignal erzeugt wird, kommt die Anwendung häufiger in einen Ruhezustand, so dass in einer Anwendung, die eigentlich keine häufige Prüfpunkterstellung unterstützt, eine bessere Prüfpunkterstellung ermöglicht wird.
  • Durch die vorliegende Erfindung werden zwei Verfahren zum Modifizieren einer Aufgabe in einer komplexen parallelen Anwendung bereitgestellt, so dass diese häufiger einen Ruhezustand erreicht (in dem Prüfpunkte erstellt werden können). Durch die vorliegende Erfindung wird ein Verfahren bereitgestellt, das insbesondere für Anwendungen geeignet ist, die auf Parallelverarbeitungssystemen laufen, und außerdem für Anwendungen, die auf verteilten Verarbeitungssystemen laufen.
  • Die Erfindung kann in Hard- und/oder Software implementiert werden. Die Erfindung wird jedoch vorzugsweise durch ein Computerprogramm implementiert, das auf programmierbaren Computern ausgeführt wird, die jeweils einen Prozessor, ein Datenspeichersystem (z.B. flüchtige und nichtflüchtige Speicher und/oder Speicherelemente), mindestens eine Eingabeeinrichtung und mindestens eine Ausgabeeinrichtung aufweisen. Ein Programmcode wird auf Eingangsdaten angewendet, um die hierin beschriebenen Funktionen auszuführen und Ausgangsinformation zu erzeugen. Die Ausgangsinformation wird auf bekannte Weise einer oder mehreren Ausgabeeinrichtungen zugeführt.
  • Jedes Programm wird vorzugsweise in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert, um mit einem Computersystem zu kommunizieren. Die Programme können jedoch auch gegebenenfalls in Assembler- oder Maschinensprache implementiert werden. Die Sprache kann jedenfalls eine kompilierte oder interpretierte Sprache sein.
  • Jedes Computerprogramm ist vorzugsweise auf einem Speichermedium oder auf einer Speichervorrichtung gespeichert (z.B. in einem ROM-Speicher oder auf einer magnetischen Diskette), die durch einen programmierbaren Universalrechner oder einen Spezialrechner lesbar ist, um den Computer zu konfigurieren und zu betreiben, wenn das Speichermedium oder die Speichervorrichtung durch den Computer gelesen wird, um die hierin beschriebenen Prozeduren auszuführen. Das erfindungsgemäße System könnte auch als computerlesbares Speichermedium implementiert werden, das mit einem Computerprogramm konfiguriert ist, wobei das Speichermedium derart konfiguriert ist, dass ein Computer veranlasst wird, auf eine spezifische und vordefiniert Weise zu arbeiten, um die hierin beschriebenen Funktionen auszuführen.
  • Vorstehend sind mehrere Ausführungsformen der vorliegenden Erfindung beschrieben worden. Die vorliegende Erfindung ist nicht auf die dargestellten spezifischen Ausführungsformen beschränkt, sondern innerhalb des durch die beigefügten Patentansprüche definierten Schutzumfangs der vorliegenden Erfindung sind verschiedenartige Modifikationen möglich.

Claims (10)

  1. Verfahren zum Erhöhen der Anzahl von Prüfpunkten in einer auf einem Parallelverarbeitungssystem ausführbaren Computeranwendung, mit den Schritten: (a) Überpartitionieren von q Eingangsdaten durch Teilen der q Eingangsdaten in n·p Datenpartitionen (12), wobei n einen ganzzahligen Überpartitionierungsfaktor darstellt; (b) Ausführen von p Prozessen einer Programmkomponente (6) in einer Folge von n Ausführungsphasen (10), wobei jeder Prozess der Programmkomponente (6) eine der n·p Datenpartitionen liest und eine entsprechende Partition (7) von Ausgangsdaten erzeugt; und (c) Ermöglichen, dass am Ende jeder der n Ausführungsphasen ein Prüfpunkt erstellt werden kann.
  2. Verfahren nach Anspruch 1, wobei der Schritt zum Teilen von q Eingangsdaten in n·p Datenpartitionen ferner die Schritte aufweist: (a) Anwenden eines Partitionierungsprogramms (2), das derart konfiguriert ist, dass es n·p·q Datenkanäle ausgibt, auf die q Eingangsdaten; und (b) Anwenden eines Gatherer-Programms (4) auf die durch das Partitionierungsprogramm ausgegebenen n·p·q Datenkanäle, um die n·p Datenpartitionen (12) zu erzeugen.
  3. Verfahren nach Anspruch 1, wobei der Schritt zum Teilen von q Eingangsdaten in n·p Datenpartitionen ferner die Schritte aufweist: (a) Verwenden von p Zeigern (29) zum Teilen der q Eingangsdaten in n Datensegmente, wobei q = p ist; und (b) Wiederholtes Erzeugen von Dateiendesignalen zum Anzeigen des Endes jedes Datensegments.
  4. Computerlesbares Speichermedium, das mit einem Computerprogramm zum Erhöhen der Anzahl von Prüfpunkten in einer auf einem Parallelverarbeitungssystem ausführbaren Computeranwendung konfiguriert ist, wobei das Speichermedium derart konfiguriert ist, dass ein Computer veranlasst wird, auf eine spezifische und vordefinierte Weise zu arbeiten, um die folgenden Funktionen auszuführen: (a) Überpartitionieren von q Eingangsdaten durch Teilen der q Eingangsdaten in n·p Datenpartitionen (12), für einen ganzzahligen Überpartitionierungsfaktor n; (b) Ausführen von p Prozessen einer Programmkomponente (6) in einer Folge von n Ausführungsphasen (10), wobei jeder Prozess der Programmkomponente (6) eine der n·p Datenpartitionen liest und eine entsprechende Partition (7) von Ausgangsdaten erzeugt; und (c) Ermöglichen, dass am Ende jeder der n Ausführungsphasen ein Prüfpunkt erstellt werden kann.
  5. Speichermedium nach Anspruch 4, wobei die Funktion zum Teilen der q Eingangsdaten in n·p Datenpartitionen ferner die Funktionen aufweist: (a) Anwenden eines Partitionierungsprogramms (2), das derart konfiguriert ist, dass es n·p·q Datenkanäle ausgibt, auf die q Eingangsdaten; und (b) Anwenden eines Gatherer-Programms (4) auf die durch das Partitionierungsprogramm ausgegebenen n·p·q Datenkanäle, um die n·p Datenpartitionen (12) zu erzeugen.
  6. Speichermedium nach Anspruch 4, wobei die Funktion zum Teilen der q Eingangsdaten in n·p Datenpartitionen ferner die Funktionen aufweist: (a) Verwenden von p Zeigern (29) zum Teilen der q Eingangsdaten in n Datensegmente, wobei q = p ist; und (b) Wiederholtes Erzeugen von Dateiendesignalen zum Anzeigen des Endes jedes Datensegments.
  7. Computerprogramm, das auf einem computerlesbaren Speichermedium gespeichert ist, zum Erhöhen der Anzahl von Prüfpunkten in einer auf einem Parallelverarbeitungssystem ausführbaren Computeranwendung, mit Befehlen, die einen Computer veranlassen, die folgenden Schritte auszuführen: (a) Überpartitionieren von q Eingangsdaten durch Teilen der q Eingangsdaten in n·p Datenpartitionen (12), für einen ganzzahligen Überpartitionierungsfaktor n; (b) Ausführen von p Prozessen einer Programmkomponente (6) in einer Folge von n Ausführungsphasen (10), wobei jeder Prozess der Programmkomponente (6) eine der n·p Datenpartitionen liest und eine entsprechende Partition (7) von Ausgangsdaten erzeugt; und (c) Ermöglichen, dass am Ende jeder der n Ausführungsphasen ein Prüfpunkt erstellt werden kann.
  8. Computerprogramm nach Anspruch 7, wobei die Befehle, durch die ein Computer veranlasst wird, q Eingangsdaten in n·p Datenpartitionen zu teilen, ferner Befehle aufweisen, die einen Computer veranlassen, folgende Schritte auszuführen: (a) Anwenden eines Partitionierungsprogramms (2), das derart konfiguriert ist, dass es n·p·q Datenkanäle ausgibt, auf die q Eingangsdaten; und (b) Anwenden eines Gatherer-Programms (4) auf die durch das Partitionierungsprogramm ausgegebenen n·p·q Datenkanäle, um die n·p Datenpartitionen (12) zu erzeugen.
  9. Computerprogramm nach Anspruch 7, wobei die Befehle, durch die ein Computer veranlasst wird, q Eingangsdaten in n·p Datenpartitionen zu teilen, ferner Befehle aufweisen, die einen Computer veranlassen, folgende Schritte auszuführen: (a) Verwenden von p Zeigern (29) zum Teilen der q Eingangsdaten in n Datensegmente, wobei q = p ist; und (b) Wiederholtes Erzeugen von Dateiendesignalen zum Anzeigen des Endes jedes Datensegments.
  10. Computerprogramm nach Anspruch 7, 8 oder 9, wobei das Computerprogramm auf einem durch ein Computersystem lesbaren Speichermedium gespeichert ist, zum Konfigurieren des Computersystems, wenn es durch das Computersystem gelesen und ausgeführt wird.
DE69637020T 1995-12-11 1996-12-11 Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen Expired - Lifetime DE69637020T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US570585 1995-12-11
US08/570,585 US5819021A (en) 1995-12-11 1995-12-11 Overpartitioning system and method for increasing checkpoints in component-based parallel applications
PCT/US1996/019706 WO1997023826A1 (en) 1995-12-11 1996-12-11 Overpartitioning system and method for increasing checkpoints in component-based parallel applications

Publications (2)

Publication Number Publication Date
DE69637020D1 DE69637020D1 (de) 2007-05-24
DE69637020T2 true DE69637020T2 (de) 2007-08-16

Family

ID=24280229

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69637020T Expired - Lifetime DE69637020T2 (de) 1995-12-11 1996-12-11 Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen

Country Status (11)

Country Link
US (1) US5819021A (de)
EP (1) EP0954781B1 (de)
JP (1) JP3207438B2 (de)
AT (1) ATE359551T1 (de)
AU (1) AU1286197A (de)
CA (1) CA2240286C (de)
DE (1) DE69637020T2 (de)
DK (1) DK0954781T3 (de)
ES (1) ES2283008T3 (de)
PT (1) PT954781E (de)
WO (1) WO1997023826A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6625638B1 (en) * 1998-04-30 2003-09-23 International Business Machines Corporation Management of a logical partition that supports different types of processors
US6675189B2 (en) * 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6480876B2 (en) * 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6289474B1 (en) * 1998-06-24 2001-09-11 Torrent Systems, Inc. Computer system and process for checkpointing operations on data in a computer system by partitioning the data
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US6801938B1 (en) 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
US7010788B1 (en) 2000-05-19 2006-03-07 Hewlett-Packard Development Company, L.P. System for computing the optimal static schedule using the stored task execution costs with recent schedule execution costs
US6834358B2 (en) * 2001-03-28 2004-12-21 Ncr Corporation Restartable database loads using parallel data streams
US7249357B2 (en) * 2001-08-20 2007-07-24 Silicon Graphics, Inc. Transparent distribution and execution of data in a multiprocessor environment
US6802024B2 (en) * 2001-12-13 2004-10-05 Intel Corporation Deterministic preemption points in operating system execution
US7257582B2 (en) * 2002-03-13 2007-08-14 Corigin Ltd Load balancing with shared data
EP1777619A3 (de) * 2003-06-25 2007-05-02 AB Initio Software Corporation Rechnergestütze Parallelisierung von Berechnungsgraphen
CA2891196C (en) * 2003-06-25 2018-03-20 Ab Initio Technology Llc Computer-aided parallelizing of computation graphs
US7644050B2 (en) * 2004-12-02 2010-01-05 International Business Machines Corporation Method and apparatus for annotation-based behavior extensions
US7954062B2 (en) * 2005-01-03 2011-05-31 International Business Machines Corporation Application status board mitigation system and method
CA2519015A1 (en) * 2005-09-13 2007-03-13 Cognos Incorporated System and method of providing relational set operations for olap data sources
US7631168B1 (en) 2006-05-10 2009-12-08 The Math Works, Inc. Graphical interface for grouping concurrent computing units executing a concurrent computing process
US9405564B2 (en) * 2006-05-10 2016-08-02 The Mathworks, Inc. System and method for targeting commands to concurrent computing units executing a concurrent computing process
US9251291B2 (en) 2007-11-29 2016-02-02 Microsoft Technology Licensing, Llc Data parallel searching
US8190624B2 (en) * 2007-11-29 2012-05-29 Microsoft Corporation Data parallel production and consumption
US20090282042A1 (en) * 2008-05-12 2009-11-12 Expressor Software Method and system for managing the development of data integration projects to facilitate project development and analysis thereof
US8290917B2 (en) * 2008-06-02 2012-10-16 Microsoft Corporation Reordering of data elements in a data parallel system
US20110010690A1 (en) * 2009-07-07 2011-01-13 Howard Robert S System and Method of Automatically Transforming Serial Streaming Programs Into Parallel Streaming Programs
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US9116759B2 (en) 2011-02-18 2015-08-25 Ab Initio Technology Llc Restarting data processing systems
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8812601B2 (en) * 2011-05-09 2014-08-19 Google Inc. Transferring application state across devices with checkpoints
US8224894B1 (en) 2011-05-09 2012-07-17 Google Inc. Zero-click sharing of application context across devices
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US9184800B2 (en) 2012-07-16 2015-11-10 Google Inc. Automated sharing of application data over a near field communication link
US9116842B2 (en) 2013-03-14 2015-08-25 International Business Machines Corporation Avoiding restart on error in data integration
US9125180B1 (en) 2013-03-15 2015-09-01 Google Inc. Techniques for automatically establishing a long-lasting connection across computing devices configured for short-range wireless communication
JP6400695B2 (ja) 2013-10-21 2018-10-03 アビニシオ テクノロジー エルエルシー データユニットの集合のチェックポイント作成
JP6454706B2 (ja) 2013-12-06 2019-01-16 アビニシオ テクノロジー エルエルシー ソースコード変換
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US9792042B2 (en) 2015-10-21 2017-10-17 Red Hat, Inc. Systems and methods for set membership matching
CA3005400C (en) 2015-12-17 2020-10-27 Ab Initio Technology Llc Processing data using dynamic partitioning
CA3024375C (en) 2016-05-17 2021-04-27 Ab Initio Technology Llc Reconfigurable distributed processing
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1468642A (en) * 1975-01-07 1977-03-30 Burroughs Corp Data processing systems
US5363503A (en) * 1992-01-22 1994-11-08 Unisys Corporation Fault tolerant computer system with provision for handling external events

Also Published As

Publication number Publication date
JP3207438B2 (ja) 2001-09-10
EP0954781A1 (de) 1999-11-10
DK0954781T3 (da) 2007-08-06
EP0954781A4 (de) 2004-08-04
CA2240286C (en) 2002-03-12
ATE359551T1 (de) 2007-05-15
WO1997023826A1 (en) 1997-07-03
DE69637020D1 (de) 2007-05-24
AU1286197A (en) 1997-07-17
PT954781E (pt) 2007-05-31
CA2240286A1 (en) 1997-07-03
EP0954781B1 (de) 2007-04-11
US5819021A (en) 1998-10-06
JPH11514116A (ja) 1999-11-30
ES2283008T3 (es) 2007-10-16

Similar Documents

Publication Publication Date Title
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage
EP0048767B1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE2714805C2 (de)
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE2350884A1 (de) Datenverarbeitungssystem
DE2758830A1 (de) Rechenvorrichtung
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE1549474B2 (de) Anordnung in einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE2064383C3 (de) Datenverarbeitungsanlage mit mehreren zentralen Verarbeitungseinrichtungen
DE2401364A1 (de) Datenverarbeitungssystem
EP1040414A1 (de) Verfahren zum umsetzen eines systemaufrufs
EP1701266A1 (de) Testvorrichtung zur Überprüfung einer Stapelverarbeitung
DE112019004391T5 (de) Grossmodellunterstützung für deep learning
DE2548720A1 (de) Mikroprogramm-steuerwerk
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE2245284A1 (de) Datenverarbeitungsanlage
EP1166215B1 (de) Verfahren zur automatischen wiedergewinnung von engineeringdaten aus anlagen
DE102021125858A1 (de) Verfolgen eines protokollverlaufs einer änderungsdatenerfassung
DE102020100215B4 (de) Gleichzeitige Profilbereitstellungen
DE2622140C3 (de) Einrichtung zur Steuerung manueller Operationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: AB INITIO SOFTWARE LLC, LEXINGTON, MASS., US

8327 Change in the person/name/address of the patent owner

Owner name: AB INITIO TECHNOLOGY LLC, LEXINGTON, MASS., US