[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE102012204167A1 - Vorauslaufende genäherte Berechnungen - Google Patents

Vorauslaufende genäherte Berechnungen Download PDF

Info

Publication number
DE102012204167A1
DE102012204167A1 DE102012204167A DE102012204167A DE102012204167A1 DE 102012204167 A1 DE102012204167 A1 DE 102012204167A1 DE 102012204167 A DE102012204167 A DE 102012204167A DE 102012204167 A DE102012204167 A DE 102012204167A DE 102012204167 A1 DE102012204167 A1 DE 102012204167A1
Authority
DE
Germany
Prior art keywords
group
engines
processing engines
processing
calculations
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.)
Ceased
Application number
DE102012204167A
Other languages
English (en)
Inventor
Jian Li
Harm Peter Hofstee
Damir Anthony Jamsek
Christopher J. Craik
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012204167A1 publication Critical patent/DE102012204167A1/de
Ceased legal-status Critical Current

Links

Images

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
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es werden Mechanismen zum Durchführen genäherter vorauslaufender Berechnungen bereitgestellt. Eine erste Gruppe von Bearbeitungs-Engines wird aus dem Bestand von Bearbeitungs-Engines ausgewählt, um vollständige Berechnungen an einem vollständigen Satz von Eingangsdaten durchzuführen. Eine zweite Gruppe von Bearbeitungs-Engines wird ausgewählt, um Berechnungen an einem Probeteilsatz der Eingangsdaten auszuführen. Eine dritte Gruppe von Bearbeitungs-Engines wird ausgewählt, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu bestimmen. Die zweite Gruppe von Bearbeitungs-Engines wird auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds neu eingerichtet.

Description

  • Die vorliegende Anmeldung betrifft allgemein eine verbesserte Vorrichtung und ein Verfahren zur Datenverarbeitung sowie spezifischer Mechanismen zur Bereitstellung vorauslaufender genäherter Berechnungen.
  • Ein paralleles Computersystem ist ein Computersystem mit mehr als einem Prozessor zur parallelen Bearbeitung von Aufgaben. Ein paralleles Programm ist ein Programm, das aus einer oder mehreren Tätigkeiten bestehen kann, die in Aufgaben aufgeteilt werden können, die durch eine Vielzahl von Prozessoren parallel ausgeführt werden können. Durch parallele Programme können die Aufgaben bei einiger Koordination zwischen den Prozessoren gleichzeitig auf mehreren Prozessoren ausgeführt werden, um Ergebnisse schneller zu erhalten.
  • Für die Bereitstellung paralleler Computersysteme gibt es viele unterschiedliche Ansätze. Beispiele einiger Arten paralleler Computersysteme sind Mehrfachbearbeitungssysteme, Computer-Cluster-Systeme, parallele Supercomputer-Systeme, verteilte Computersysteme, Gittercomputersysteme und Ähnliche. Diese parallelen Computersysteme werden üblicherweise durch die Art der Verbindung zwischen den Prozessoren und dem Speicher unterschieden. Eine der anerkanntesten Klassifizierungen paralleler Computersysteme teilt parallele Computersysteme danach ein, ob alle Prozessoren dieselben Anweisungen ausführen, d. h. eine Anweisung/mehrere Daten (single instruction/multiple data SIMD), oder ob jeder Prozessor unterschiedliche Anweisungen ausführt, d. h. mehrere Anweisungen/mehrere Daten (multiple instruction/multiple data MIMD).
  • Eine andere Art der Klassifizierung paralleler Computersysteme beruht auf deren Speicherarchitekturen. Parallele Computersysteme mit gemeinsam genutztem Speicher verfügen über mehrere Prozessoren, die auf sämtliche verfügbaren Speicher als globaler Adressraum zugreifen. Diese Computersysteme mit gemeinsam genutztem Speicher können weiter in Systeme mit einheitlichem Speicherzugriff (uniform memory access UMA), bei denen die Zugriffszeiten auf alle Teile des Speichers gleich sind, und in Systems mit nichteinheitlichem Speicherzugriff (non-uniform memory access NUMA) eingeteilt werden, bei denen die Zugriffszeiten auf alle Teile des Speichers nicht gleich sind. Eine weitere Kategorie, parallele Computersysteme mit verteiltem Speicher, stellt auch ein paralleles Computersystem bereit, bei dem mehrere Prozessoren verwendet werden, von denen jedoch jeder nur auf seinen eigenen lokalen Speicher zugreifen kann, d. h., zwischen ihnen ist kein globaler Speicheradressraum vorhanden. Bei einem weiteren momentan dominierenden Typ paralleler Computersysteme handelt es sich um eine Kombination der oben genannten Systeme, bei der Knoten des Systems über eine gewisse Menge an gemeinsam genutztem Speicherplatz für eine kleine Anzahl von Prozessoren verfügen, viele dieser Knoten jedoch miteinander in einem parallelen System mit verteiltem Speicher verbunden sind.
  • Bei einigen parallelen Computersystemen wird die Schnittstelle zur Weiterleitung von Nachrichten (Message Passing Interface) für die Kommunikation und Koordination der durch eine Vielzahl von Computer- oder Verarbeitungseinheiten parallel durchgeführten Arbeitslasten verwendet. Bei der Schnittstelle zur Weiterleitung von Nachrichten (MPI) handelt es sich um eine sprachunabhängige beschreibende Schnittstelle zur Anwendungsprogrammierung (application programming interface API) für den Datenaustausch zwischen Computern, die der Weiterleitung von Nachrichten auf gemeinsam genutztem Speicher oder parallelen Computersystemen mit verteiltem Speicher dient. Bei der MPI wird üblicherweise eine parallele Anwendung in Form einer oder mehrerer Tätigkeiten bereitgestellt, die dann in Aufgaben aufgeteilt werden, die in paralleler Weise auf einer Vielzahl von Prozessoren einer oder mehrerer Computereinheiten bearbeitet werden können. Die MPI stellt den Prozessoren eine Kommunikations-API bereit, mit der sie untereinander bezüglich der Bearbeitung dieser Tätigkeiten Daten austauschen können.
  • Die Verwendung paralleler Computersysteme zur Bearbeitung großer analytischer Arbeitslasten wie z. B. der Gesichtserkennung, der Analyse von Wetter- oder Verkehrsbedingungen, der biologische Sequenzanalyse, der Analyse von Internetdatenverkehr, der Analyse von Dokumentenablagen (document warehouses), vielfältigen Anwendungen des Data-Mining oder beliebigen anderen Arten großer analytischer Arbeitslasten wird im heutigen Informationszeitalter immer wichtiger. Wie erkennbar ist, ist die Menge von Daten, an denen derartige Analysen vorgenommen werden, relativ groß und nimmt kontinuierlich zu. Auch mit den durch parallele Computersysteme ermöglichten Geschwindigkeitszuwächsen wird die Durchführung von Analysen an vollständigen Datensätzen bereits durch die reine Größe der zu analysierenden Daten im Hinblick auf Zielkosten und Leistung relativ unpraktisch.
  • ZUSAMMENFASSUNG
  • In einer veranschaulichenden Ausführungsform wird in einem Datenverarbeitungssystem ein Verfahren zur Durchführung genäherter vorauslaufender Berechnungen bereitgestellt. Das Verfahren umfasst das Auswählen einer ersten Gruppe von Bearbeitungs-Engines (Bearbeitungsfunktionseinheiten) aus einem Bestand von Bearbeitungs-Engines zur Durchführung vollständiger Berechnungen an einem vollständigen Satz von Eingangsdaten. Das Verfahren umfasst weiterhin das Auswählen einer zweiten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um Berechnungen an einem Probeteilsatz der Eingangsdaten durchzuführen. Das Verfahren umfasst zudem das Auswählen einer dritten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu berechnen. Darüber hinaus umfasst das Verfahren ein Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds.
  • In weiteren veranschaulichenden Ausführungsformen wird ein Computerprogrammprodukt bereitgestellt, das einen von Computern verwendbaren oder computerlesbaren Datenträger mit einem computerlesbaren Programm umfasst. Das computerlesbare Programm veranlasst bei Ausführung auf einer Computereinheit die Computereinheit dazu, vielfältige sowie Kombinationen der oben erläuterten Operationen in Hinblick auf die veranschaulichende Ausführungsform des Verfahrens durchzuführen.
  • In noch einer weiteren Ausführungsform wird ein System/eine Vorrichtung bereitgestellt. Das System/die Vorrichtung kann einen oder mehrere Prozessoren und einen mit dem einen oder den mehreren Prozessoren verbundenen Speicher umfassen. Der Speicher kann Anweisungen umfassen, die bei Ausführung auf dem einem oder den mehreren Prozessoren den einen oder die mehreren Prozessoren dazu veranlassen, vielfältige sowie Kombinationen der oben erläuterten Operationen in Hinblick auf die veranschaulichende Ausführungsform des Verfahrens durchzuführen.
  • In einem Aspekt betrifft die Erfindung ein Verfahren in einem Datenverarbeitungssystem zur Durchführung genäherter vorauslaufender Berechnungen, wobei das Verfahren Folgendes umfasst: Auswählen einer ersten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um vollständige Berechnungen an einem vollständigen Satz von Eingangsdaten durchzuführen; Auswählen einer zweiten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um Berechnungen an einem Probeteilsatz der Eingangsdaten durchzuführen; Auswählen einer dritten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu berechnen; und Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds.
  • Nach einer Ausführungsform der Erfindung umfasst der Bestand von Bearbeitungs Engines mindestens ein Element aus einem Bestand von Prozessoren, einem Bestand funktionaler Einheiten innerhalb eines oder mehrerer Prozessoren, einem Bestand von Datenverarbeitungseinheiten, wobei jede Datenverarbeitungseinheit einen oder mehrere Prozessoren oder einen Bestand von zweckbestimmten Beschleunigern umfasst, die eine bestimmte Art von Berechnung beschleunigen.
  • Nach einer Ausführungsform der Erfindung umfasst die zweite Gruppe von Bearbeitungs-Engines eine Anzahl von Bearbeitungs Engines, deren Anzahl kleiner als eine Anzahl von Bearbeitungs-Engines in der ersten Gruppe von Bearbeitungs Engines ist.
  • Nach einer Ausführungsform der Erfindung führt die zweite Gruppe von Bearbeitungs-Engines die Berechnungen in einer vorauslaufenden Weise aus, so dass die Daten, an denen die zweite Gruppe von Bearbeitungs-Engines arbeitet, Daten umfassen, deren Position sich in der Reihenfolge im Datensatz relativ weiter hinten befindet als Daten, an denen die erste Gruppe von Bearbeitungs-Engines arbeitet.
  • Nach einer Ausführungsform der Erfindung umfasst das Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines das Erhöhen einer Anzahl von Bearbeitungs-Engines in der zweiten Gruppe von Bearbeitungs-Engines.
  • Nach einer Ausführungsform der Erfindung umfasst das Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines weiterhin ein Erhöhen des Umfangs des Probeteildatensatzes aus dem Satz von Eingangsdaten, an dem die zweite Gruppe von Bearbeitungs-Engines arbeitet.
  • In einem weiteren Aspekt betrifft die Erfindung ein Computerprogrammprodukt, das ein computerlesbares Speichermedium mit einem darauf gespeicherten computerlesbaren Programm aufweist, wobei das computerlesbare Programm bei Ausführung auf einer Computereinheit die Computereinheit zu Folgendem veranlasst: Auswählen einer ersten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um vollständige Bearbeitungen an einem vollständigen Satz von Eingangsdaten durchzuführen; Auswählen einer zweiten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um Bearbeitungen an einem Probeteilsatz der Eingangsdaten durchzuführen; Auswählen einer dritten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu berechnen; und Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds.
  • Nach einer Ausführungsform der Erfindung umfasst der Bestand von Bearbeitungs-Engines mindestens eines von Folgendem: ein Bestand von Prozessoren, ein Bestand funktionaler Einheiten innerhalb eines oder mehrerer Prozessoren, ein Bestand von Datenverarbeitungseinheiten, wobei jede Datenverarbeitungseinheit einen oder mehrere Prozessoren oder einen Bestand von zweckbestimmten Beschleunigern umfasst, die eine bestimmte Art von Berechnung beschleunigen.
  • Nach einer Ausführungsform der Erfindung umfasst die zweite Gruppe von Bearbeitungs-Engines eine Anzahl von Bearbeitungs-Engines, deren Anzahl kleiner als die Anzahl von Bearbeitungs-Engines in der ersten Gruppe von Bearbeitungs-Engines ist.
  • Nach einer Ausführungsform der Erfindung führt die zweite Gruppe von Bearbeitungs-Engines die Berechnungen in einer vorauslaufenden Weise aus, so dass die Daten, an denen die zweite Gruppe von Bearbeitungs-Engines arbeitet, Daten umfassen, deren Position sich in der Reihenfolge im Datensatz relativ weiter hinten befindet als Daten, an denen die erste Gruppe von Bearbeitungs-Engines arbeitet.
  • Nach einer Ausführungsform der Erfindung veranlasst das computerlesbare Programm die Computereinheit dazu, die zweite Gruppe von Bearbeitungs-Engines durch das Erhöhen einer Anzahl von Bearbeitungs-Engines in der zweiten Gruppe von Bearbeitungs-Engines neu einzurichten.
  • Nach einer Ausführungsform der Erfindung veranlasst das computerlesbare Programm die Computereinheit dazu, die zweite Gruppe von Bearbeitungs-Engines weiterhin durch ein Erhöhen des Umfangs des Probeteildatensatzes aus dem Satz von Eingangsdaten, an dem die zweite Gruppe von Bearbeitungs-Engines arbeitet, neu einzurichten.
  • Diese und weitere Merkmale und Vorteile der vorliegenden Erfindung werden angesichts der folgenden detaillierten Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung beschrieben oder werden für den Fachmann daraus ersichtlich.
  • KURZE BESCHREIBUNG DER MEHREREN ZEICHNUNGSANSICHTEN
  • Die Erfindung sowie eine bevorzugte Verwendungsart und weitere Ziele und Vorteile werden am besten unter Bezug auf die folgende detaillierte Beschreibung veranschaulichender Ausführungsformen in Verbindung mit den begleitenden Zeichnungen deutlich, in denen:
  • 1 eine beispielhafte Abbildung eines verteilten Datenverarbeitungssystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können;
  • 2 ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können;
  • 3 eine beispielhafte Abbildung eines parallelen Computersystems zeigt, bei dem Gruppierungen von Bearbeitungs-Engines und eine Engine zur Analysekoordination gemäß einer veranschaulichenden Ausführungsform ausgebildet sind;
  • 4A bis 4D beispielhafte Abbildungen zeigen, die Berechnungsphasen gemäß einer veranschaulichenden Ausführungsform der Erfindung unter vielfältigen Bedingungen veranschaulichen; und
  • 5 einen beispielhaften Ablaufplan zeigt, der die Arbeitsweise der Engine zur Analysekoordination gemäß einer veranschaulichenden Ausführungsform zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Die veranschaulichenden Ausführungsformen stellen Mechanismen zur Bereitstellung vorauslaufender genäherter Berechnungen bereit. Die Mechanismen der veranschaulichenden Ausführungsformen koordinieren schnelle (immer vorauslaufende) genäherte Berechnungen, die durch einen ersten Satz von Datenverarbeitungseinheiten durchgeführt werden, mit herkömmlichen analytischen Berechnungen an einem vollständigen Datensatz, die durch einen zweiten Satz von Datenverarbeitungseinheiten durchgeführt werden. Die Mechanismen der veranschaulichenden Ausführungsformen führen eine solche Koordination durch Einsatz von Genauigkeit, Vertrauensbereichen und Geschwindigkeit zwischen den beiden Sätzen von Datenverarbeitungseinheiten durch, so dass die kombinierten Ergebnisse von beiden für die Analyse annehmbar sind.
  • Mit den Mechanismen der veranschaulichenden Ausführungsformen wird eine relativ große Gruppe (I) von Bearbeitungs-Engines, z. B. Datenverarbeitungseinheiten, Prozessoren innerhalb einer oder mehrerer Datenverarbeitungseinheiten oder Ähnliches dazu verwendet, eine herkömmliche Berechnung mit vollständigen Eingangsdaten zu bewältigen. Eine zweite, relativ kleine Gruppe (J) von Bearbeitungs-Engines wird dazu verwendet, Berechnungen an Probedaten mit vorauslaufender Berechnung durchzuführen. Das bedeutet in einer beispielhaften Ausführungsform, dass analytische Arbeitslasten beispielsweise durch die Verwendung von Schleifen mit großen Iterationssätzen dieselben Berechnungen an einer großen Datenmenge durchführen können. Die erste Gruppe (I) durchläuft die Iterationen der Schleife auf normale Weise beginnend mit einem ersten Iterationswert und führt (entsprechend der Schrittweite der Schleife) bei jeder Iteration Berechnungen durch. Die zweite Gruppe (J) nimmt Stichproben der Iterationen und führt die Berechnungen in vorauslaufender Weise durch, d. h. Berechnungen von Schleifeniterationen werden vor dem Zeitpunkt durchgeführt, an dem sie normalerweise durchgeführt werden würden, wenn die Schleife bezüglich Wiederholungen und Schrittweite der Schleife in sequentieller Weise ausgeführt werden würde.
  • Eine weitere, relativ kleine Gruppe (K) von Bearbeitungs-Engines wird dazu verwendet, Unterschiede zwischen den Ergebnissen der erzeugten Berechnungen der Gruppe (I) und (J) zu prüfen und festzuhalten, wenn die Berechnungen der ersten Gruppe (I) zur Startiteration der durch die zweite Gruppe (J) bewältigten Arbeitslast aufholen. Auf der Grundlage dieser Unterschiede oder Deltas kann eine Engine zur Analysekoordination vielfältige Operationen zur Planung und Neueinrichtung der ersten und zweiten Gruppe von Bearbeitungs-Engines (I) und (J) durchführen.
  • Zum Beispiel kann der Analysekoordinator auf der Grundlage der Unterschiede zwischen den von der ersten Gruppe (I) und der zweiten Gruppe (J) erhaltenen Ergebnissen die Anzahl der Bearbeitungs-Engines in der zweiten Gruppe (J) und die Anzahl von Proben des durch die erhöhte Anzahl von Bearbeitungs-Engines in der zweiten Gruppe (J) bearbeiteten vollständigen Datensatzes neu einrichten, um so den Unterschied (Delta) zwischen den von der ersten Gruppe (I) und der zweiten Gruppe (J) erhaltenen Ergebnissen zu verringern, so dass der Unterschied innerhalb einer zuvor festgelegten Toleranz liegt. Der verringerte Unterschied (Delta) zwischen den Ergebnissen wird erreicht, indem mehreren Prozessoren in J innerhalb desselben Berechnungszeitraums erlaubt wird, an der erhöhten Anzahl von Datenproben zu arbeiten. Auf diese Weise wird die Genauigkeit der durch die zweite Gruppe (J), d. h. die vorauslaufenden Bearbeitungs-Engines, erzeugten Näherung innerhalb einer annehmbaren Toleranz gehalten, so dass die Ergebnisse der vorauslaufenden Bearbeitungs-Engines dazu verwendet werden können, die Berechnung für einen Satz von Iterationen der Gesamtanalyse des großen Datensatzes näherungsweise zu bestimmen. Diese genäherten Berechnungen werden mit den durch die erste Gruppe von Bearbeitungs-Engines (J) durchgeführten analytischen Berechnungen kombiniert, um genäherte Berechnungen zur Analyse für einen großen Satz von Eingangsdaten bereitzustellen.
  • Falls eine nächste Phase der analytischen Berechnungen vorhanden ist, d. h. eine nachfolgende Phase, die die Ergebnisse der aktuellen Phase verwendet, können darüber hinaus im Falle, dass der Unterschied zwischen den durch die zweite Gruppe (J) und die erste Gruppe (I) durchgeführten Berechnungen innerhalb der zuvor festgelegten Toleranz liegt, die Ergebnisse der aktuellen Phase der durch die zweite Gruppe (J) vorgenommenen analytischen Berechnungen zur Verwendung durch den Algorithmus in die nächste Berechnungsphase eingespeist werden, während die Berechnungen durch die erste Gruppe (I) noch laufen, d. h. bevor die Berechnungen durch die erste Gruppe (I) abgeschlossen sind. Auf diese Weise wird die Geschwindigkeit der Berechnung erhöht, indem ein Mechanismus zur vorauslaufenden Durchführung von Berechnungsphasen bereitgestellt wird.
  • In einem weiteren Beispiel kann im Falle, dass die Engine zur Analysekoordination feststellt, dass der Unterschied zwischen den Ergebnissen der Berechnung der ersten und zweiten Gruppe (I) und (J) größer als die zuvor festgelegte Toleranz ist, eine teilweise Neuberechnung in einer nächsten Ausführungsphase durchgeführt werden. Dies führt im Wesentlichen für die durch die zweite Gruppe (J) von Bearbeitungs-Engines durchgeführten Berechnungen eine Rückabwicklung (rollback) durch. Die teilweise Neuberechnung wird mit einer erhöhten Anzahl von Bearbeitungs-Engines in der zweiten Gruppe (J) und einer erhöhten Datenmenge, d. h. einer größeren Anzahl von Datenproben aus den Eingangsdaten, durchgeführt.
  • In noch einem weiteren Beispiel kann die Engine zur Analysekoordination feststellen, dass der Vertrauensbereich der Genauigkeit der durch die zweite Gruppe (J) von Bearbeitungs-Engines durchgeführten Berechnungen höher als eine zuvor festgelegte Schwelle ist. Wenn dies der Fall ist, kann die Engine zur Analysekoordination die erste Gruppe (I) von Bearbeitungs-Engines anweisen oder anderweitig veranlassen, Teile ihrer Berechnungen, z. B. die verbleibenden Wiederholungen, in denen die erste Gruppe (I) Berechnungen durchführen soll, zu überspringen. Da dann die Näherung der durch die erste Gruppe (J) erzeugten Berechnung hinreichend genau ist, bedeutet dies, dass keine Notwendigkeit mehr besteht, die Berechnung in jeder durch die erste Gruppe (I) von Bearbeitungs-Engines durchgeführten Wiederholung fortzusetzen.
  • Wie für den Fachmann ersichtlich, kann die vorliegende Erfindung als System, Verfahren, oder Computerprogrammprodukt ausgeführt werden. Dementsprechend können Aspekte der vorliegenden Erfindung in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder in einer Ausführungsform ausgebildet sein, die Software- und Hardware-Aspekte kombiniert, was hierin sämtlich allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein kann. Weiterhin können Aspekte der vorliegenden Erfindung in Form eines Computerprogrammprodukts ausgebildet sein, das in einem oder mehreren beliebigen computerlesbaren Datenträgern mit darauf befindlichem von Computern verwendbarem Programmcode enthalten sein kann.
  • Jede Kombination aus einem oder mehreren computerlesbaren Datenträger(n) kann verwendet werden. Bei dem computerlesbaren Datenträger kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein System, eine Vorrichtung, eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer oder Infrarot oder Halbleiter verwendender Art sowie eine beliebige geeignete Kombination des zuvor Genannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium können folgende gehören (nicht erschöpfende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein schreibgeschützter Speicher (read-only memory (ROM)), ein löschbarer programmierbarer schreibgeschützter Speicher (erasable programmable read-only memory (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler schreibgeschützter Compact-Disk-Speicher (CDROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des zuvor Genannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes physisch greifbare Medium handeln, das ein Pragramm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen beinhalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein Ausbreitungsdatensignal beinhalten, das den computerlesbaren Programmcode zum Beispiel in einem Basissignal (baseband) oder als Teil eines Trägersignals (carrier wave) enthält. Solch ein Ausbreitungssignal kann in jeder beliebigen einer Vielzahl von Formen ausgebildet sein, darunter, jedoch nicht beschränkt, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
  • Der in einem computerlesbaren Datenträger enthaltene Computercode kann mittels eines beliebigen geeigneten Mediums einschließlich, aber nicht beschränkt auf kabellose, kabelgebundene, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder einer beliebigen Kombination davon übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination einer oder mehrerer Programmiersprachen, darunter eine objektorientierte Programmiersprache wie JavaTM, SmalltalkTM, C++ oder Ähnliche und herkömmliche verfahrensorientierte Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen, geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten (remote) Computer oder vollständig auf einem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede Art von Netzwerk, darunter ein Nahbereichsnetzwerk (local area network LAN) oder ein Weitbereichsnetzwerk (wide area network WAN), verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Abbildungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den veranschaulichenden Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen der Ablaufpläne und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern durch Computerprogrammanweisungen ausgeführt werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Datenträger gespeichert sein, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Datenträger gespeicherten Anweisungen einen Herstellungsartikel einschließlich Anweisungen erzeugen, welche die im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen ausführen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Operationsschritten hervorzurufen, um einen auf dem Computer ausgeführten Prozess so zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zur Ausführung der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen bereitstellen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und die Arbeitsweise möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß vielfältiger Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block im Ablaufplan oder den Blockschaubildern für ein Modul, ein Segment oder einen Codebereich stehen, der eine oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion oder Funktionen umfasst. Es soll zudem angemerkt werden, dass bei einigen alternativen Ausführungen die im Block angegeben Funktionen in anderer Reihenfolge als der in den Figuren angegebenen auftreten können. Zum Beispiel können zwei aufeinander folgend abgebildete Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der betreffenden Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Abbildungen von Ablaufplänen und Kombinationen von Blöcken in den Blockschaubildern und/oder Abbildungen von Ablaufplänen durch zweckbestimmte hardwaregestützte Systeme oder Kombinationen von zweckbestimmter Hardware und Computeranweisungen ausgeführt werden kann, welche die angegebenen Funktionen oder Handlungen ausführen.
  • Somit können die veranschaulichenden Ausführungsformen in vielen unterschiedlichen Arten von Datenverarbeitungsumgebungen einschließlich verteilter Datenverarbeitungsumgebungen, einer einzelnen Datenverarbeitungseinheit oder Ähnlichem verwendet werden. Um einen Rahmen für die Beschreibung der spezifischen Elemente und Funktionen der veranschaulichenden Ausführungsformen bereitzustellen, werden nachfolgend die 1 und 2 als beispielhafte Umgebungen bereitgestellt, in denen Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können. Es ist festzuhalten, dass die 1 bis 2 nur Beispiele darstellen und keine Einschränkungen hinsichtlich der Umgebungen zusichern oder mit sich bringen sollen, in denen Aspekte oder Ausführungsformen der vorliegenden Erfindung ausgeführt sein können. Viele Veränderungen der abgebildeten Ausführungsformen können vorgenommen werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
  • Unter Bezugnahme auf die Figuren zeigt nun 1 eine bildliche Darstellung eines beispielhaften verteilten Datenverarbeitungssystems, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können. Das verteilte Datenverarbeitungssystem 100 kann ein Netzwerk von Computern beinhalten, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können. Das verteilte Datenverarbeitungssystem 100 enthält mindestens ein Netzwerk 102, welches das Medium darstellt, mittels dessen Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern bereitgestellt werden, die innerhalb des verteilten Datenverarbeitungssystems 100 miteinander verbunden sind Das Netzwerk 102 kann Verbindungen wie Kabel, kabellose Datenübertragungsverbindungen oder Lichtwellenleiter enthalten.
  • Im abgebildeten Beispiel sind ein Server 104 und ein Server 106 zusammen mit der Speichereinheit 108 mit dem Netzwerk 102 verbunden. Darüber hinaus sind die Clients 110, 112 und 114 ebenfalls mit dem Netzwerk 102 verbunden. Bei diesen Clients 110, 112 und 114 kann es sich zum Beispiel um Personal Computer, Netzwerkcomputer oder Ähnliches handeln. Im abgebildeten Beispiel stellt der Server 104 den Clients 110, 112, und 114 Daten wie Startdateien (boot files), Betriebssystemabbilder (operating system images) und Anwendungen bereit. Die Clients 110, 112 und 114 sind im abgebildeten Beispiel Clients des Servers 104. Das verteilte Datenverarbeitungssystem 100 kann weitere Server, Clients und andere nicht gezeigte Einheiten beinhalten.
  • Im abgebildeten Beispiel handelt es sich bei dem verteilten Datenverarbeitungssystem 100 um das Internet, wobei das Netzwerk 102 für eine weltweite Ansammlung von Netzwerken und Vermittlungseinheiten (gateways) steht, die das Protokollpaket „Transmission Control Protocol/Internet Protocol” (TCP/IP) verwenden, um miteinander zu kommunizieren. Den Hauptstrang des Internet bilden Hochgeschwindigkeitsleitungen zum Datenaustausch zwischen größeren Knoten oder Host-Computern, die aus tausenden kommerzieller, behördlicher, Bildungs- und anderen Computersystemen bestehen, die Daten und Nachrichten leiten (route). Natürlich können die verteilten Datenverarbeitungssysteme 100 auch so ausgebildet sein, dass sie eine Anzahl verschiedener Netzwerktypen wie beispielsweise ein Intranet, ein Nahbereichsnetzwerk (local area network LAN), ein Weitbereichsnetzwerk (wide area network WAN) oder Ähnliches beinhalten. Wie oben ausgeführt, ist 1 als Beispiel und nicht als Einschränkung für verschiedene Ausführungsform der vorliegenden Erfindung hinsichtlich der Architektur gedacht. Daher sollten die besonderen in 1 gezeigten Elemente nicht als Einschränkung im Hinblick auf die Umgebungen angesehen werden, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung ausgeführt sein können.
  • Unter Bezugnahme auf 2 wird ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems gezeigt, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können. Das Datenverarbeitungssystem 200 stellt ein Beispiel für einen Computer wie den Client 110 in 1 dar, in dem sich von Computern verwendbarer Code oder Anweisungen befinden können, die die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung ausführen.
  • Im abgebildeten Beispiel verwendet das Datenverarbeitungssystem 200 eine Knotenpunkt-Architektur (hub architecture), darunter eine „north bridge and memory controller hub” (NB/MCH) 202 (Northbrigde und Knotenpunkt für Speichersteuereinheiten) und eine „south bridge and input/output (I/O) controller hub” (SB/ICH) 204 (Southbridge und Knotenpunkt für Eingabe/Ausgabe(E/A)-Steuereinheiten). Eine Verarbeitungseinheit 206, ein Hauptspeicher 208 und ein Grafikprozessor 210 sind mit der NB/MCH 202 verbunden. Der Grafikprozessor 210 kann über einen beschleunigten Grafikanschluss (accelerated graphics Port AGP) mit der NB/MCH 202 verbunden sein.
  • Im abgebildeten Beispiel ist der Nahbereichsnetzwerk-(LAN-)Adapter 212 mit der SB/ICH 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein schreibgeschützter Speicher (read only memory ROM) 224, ein Festplattenlaufwerk (hard disk drive HDD) 226, ein CD-ROM-Laufwerk 230, Anschlüsse für einen universellen seriellen Bus (universal serial bus USB) und weitere Datenübertragungsanschlüsse 232 sowie PCI/PCIe-Einheiten 234 sind über einen Bus 238 und einen Bus 240 mit der SB/ICH 204 verbunden. Zu PCI/PCIe-Einheiten können zum Beispiel Ethernet-Adapter, Erweiterungskarten (add-in cards) und PC-Karten für Notebook-Computer zählen. PCI verwendet im Gegensatz zu PCIe eine Karten-Bus-Steuereinheit (card bus controller). Beim ROM 224 kann es sich zum Beispiel um ein grundlegendes Flash-Eingabe/Ausgabe-System (flash basic input/output system BIOS) handeln.
  • Die HDD 226 und das CD-ROM-Laufwerk 230 sind über den Bus 240 mit der SB/ICH 204 verbunden. Die HDD 226 und das CD-ROM-Laufwerk 230 können zum Beispiel eine integrierte Laufwerkelektronik (integrated drive electronics IDE) oder eine Anbindungsschnittstelle mit fortschrittlicher serieller Technologie (serial advanced technology attachment SATA interface) verwenden. Eine Super-E/A-Einheit (Super I/O (SIO) device) 236 kann mit der SB/ICH 204 verbunden sein.
  • Ein Betriebssystem läuft auf der Verarbeitungseinheit 206. Das Betriebssystem stellt die Steuerung vielfältiger Komponenten innerhalb des Datenverarbeitungssystems 200 in 2 bereit und koordiniert sie. Als Client kann es sich bei dem Betriebssystem um ein kommerziell verfügbares Betriebssystem wie „Microsoft Windows 7” handeln (Microsoft und Windows sind Marken der Microsoft Corporation in den USA, anderen Ländern oder beidem). Ein objektorientiertes Programmiersystem wie das Java-Programmiersystem kann in Verbindung mit dem Betriebssystem ausgeführt werden und stellt Aufrufe des Betriebssystem aus Java-Programmen oder -Anwendungen heraus bereit, die auf dem Datenverarbeitungssystem 200 ausgeführt werden (Java ist eine Marke von Oracle und/oder seinen verbundenen Unternehmen).
  • Als Server kann es sich bei dem Datenverarbeitungssystem 200 zum Beispiel um ein Computersystem des Typs „IBM® eServer System p®” handeln, das unter dem Betriebssystem „Advanced Interactive Executive (AIX®) oder dem Betriebssystem „LINUX” läuft (IBM, eServer, System p und AIX sind Marken der International Business Machines Corporation in den USA, anderen Ländern oder beidem, und LINUX ist eine eingetragene Marke von Linus Torwalds in den USA, anderen Ländern oder beidem). Bei dem Datenverarbeitungssystem 200 kann es sich um ein symmetrisches Mehrfachprozessorsystem (symmetric multiprocessor (SMP) system) handeln, das eine Vielzahl von Prozessoren in der Verarbeitungseinheit 206 beinhaltet. Alternativ kann ein Einzelprozessorsystem verwendet werden.
  • Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem sowie Anwendungen oder Programme befinden sich auf Speichereinheiten wie der HDD 226 und können zur Ausführung durch die Verarbeitungseinheit 206 in den Hauptspeicher 208 geladen werden. Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung können durch die Verarbeitungseinheit 206 mittels von Computern verwendbarem Programmcode durchgeführt werden, der sich in einem Speicher wie zum Beispiel dem Hauptspeicher 208, dem ROM 224 oder beispielsweise in einer oder mehreren Peripherieeinheiten 226 und 230 befinden kann.
  • Ein Bussystem wie der in 2 gezeigte Bus 238 oder Bus 240 kann einen oder mehrere Busse umfassen. Selbstverständlich kann das Bussystem mittels jedes beliebigen Typs von Datenübertragungsnetz (communication fabric) oder Architekturtyps ausgeführt sein, der eine Übertragung von Daten zwischen unterschiedlichen Komponenten oder Einheiten bereitstellt, die an das Netz oder die Architektur angebunden sind. Eine Datenübertragungseinheit wie der Modem 222 oder der Netzwerkadapter 212 von 2 können eine oder mehrere Einheiten beinhalten, mit denen Daten übertragen und empfangen werden. Bei einem Speicher kann es sich zum Beispiel um den Hauptspeicher 208, den ROM 224 oder einen Zwischenspeicher (cache) handeln wie er im NB/MCH in 2 zu finden ist.
  • Für den Fachmann ist ersichtlich, dass die Hardware in den 1 bis 2 je nach Ausführung variieren kann. Weitere interne Hardware oder Peripherieeinheiten wie Flash-Speicher, entsprechende nichtflüchtige Speicher oder optische Festplattenlaufwerke und Ähnliches können zusätzlich zu oder anstelle der in den 1 bis 2 abgebildeten Hardware verwendet werden. Zudem können die Prozesse der veranschaulichenden Ausführungsformen auf ein anderes Mehrfachprozessor-Datenverarbeitungssystem als das zuvor erwähnte SMP-System angewandt werden, ohne den Geist und Umfang der Erfindung zu verlassen.
  • Darüber hinaus kann das Datenverarbeitungssystem 200 in Form einer beliebigen Anzahl unterschiedlicher Datenverarbeitungssysteme, darunter Client-Computereinheiten, Server-Computereinheiten, ein Tablet-Computer, ein Laptop-Computer, ein Telefon oder eine andere Kommunikationseinrichtung, ein persönlicher digitaler Assistent (personal digital assistant PDA) oder Ähnliches, ausgebildet sein. In einigen veranschaulichenden Beispielen kann es sich bei dem Datenverarbeitungssystem 200 um eine transportable Computereinheit handeln, die mit Flash-Speichern eingerichtet ist, um einen nichtflüchtigen Speicher zum Beispiel zum Speichern von Betriebssystemdateien und/oder von Benutzern erzeugten Daten bereitzustellen. Im Wesentlichen kann es sich bei dem Datenverarbeitungssystem 200 ohne jede Einschränkung hinsichtlich der Architektur um jedes beliebige bekannte oder später entwickelte Datenverarbeitungssystem handeln.
  • Wie oben erwähnt stellen die veranschaulichenden Ausführungsformen Mechanismen für vorauslaufende genäherte Berechnungen mittels eines parallelen Computersystems bereit. Bei dem parallelen Computersystem kann es sich um ein beliebiges bekanntes oder später entwickeltes paralleles Computersystem wie ein System mit einer Anweisung und mehreren Daten (single-instruction-multiple-data SIMD), mehreren Anweisungen und mehreren Daten (multiple-instruction-multipledata MIMD), mit einheitlichem Speicherzugriff (uniform memory access UMA) oder mit nichteinheitlichem Speicherzugriff (nonuniform memory access NUMA), mit Schnittstelle zum Weiterleiten von Nachrichten (Message Passing Interface MPI) oder Ähnliches handeln. Somit schließt das parallele Computersystem eine Vielzahl von Datenverarbeitungseinheiten, Prozessoren und Ähnliches ein. Zum Beispiel können in 1 einer oder mehrere Prozessoren in einem oder mehreren der Server 104 und 106, der Clients 110 bis 114 oder Ähnlichem bereitgestellt werden. Das parallele Computersystem kann all diese Prozessoren oder einen Teilsatz dieser Prozessoren umfassen. In einer veranschaulichenden Ausführungsform umfasst das parallele Computersystem eine Vielzahl von Prozessoren, die in einem einzigen Datenverarbeitungssystem bereitgestellt werden, z. B. in einem beliebigen der Server 104, 106 oder der Clients 110 bis 114. In anderen veranschaulichenden Ausführungsformen umfasst das parallele Computersystem eine Vielzahl von Prozessoren, die in einer Vielzahl von Datenverarbeitungssystemen bereitgestellt werden, z. B. sowohl Server 104 als auch 116, eine Kombination von Prozessoren von einer Vielzahl von Clients 110 bis 114 oder eine Kombination von Prozessoren von einem oder mehreren der Server 104 und 106 und einem oder mehreren der Clients 110 bis 114.
  • Das parallele Computersystem beinhaltet gemäß den Mechanismen der veranschaulichenden Ausführungsformen eine Engine zur Analysekoordination, die den Betrieb von Gruppen von Bearbeitungs-Engines koordiniert. Darüber hinaus verändert die Engine zur Analysekoordination die Zusammensetzung und den Betrieb dieser Gruppen von Bearbeitungs-Engines auf der Grundlage einer Analyse der Ergebnisse der Berechnungen dieser Gruppen von Bearbeitungs-Engines.
  • 3 zeigt eine beispielhafte Abbildung eines parallelen Computersystems, bei dem Gruppierungen von Bearbeitungs-Engines und eine Engine zur Analysekoordination gemäß einer veranschaulichenden Ausführungsform ausgebildet sind. Zur einfacheren Erklärung wird davon ausgegangen, dass das parallele Computersystem 300 in 3 einen Vorgang mit einer Anweisung und mehreren Daten (single-instructionmultiple-data SIMD) ausführt, wobei durch jede Bearbeitungs-Engine dieselbe Anweisung oder derselbe Satz von Anweisungen an einen unterschiedlichen Datenelement oder Satz von Datenelementen ausgeführt wird. Es sollte ersichtlich sein, dass trotz der Annahme eines solchen SIMD-Vorgangs zum Zwecke der hierein bereitgestellten Beispiele die veranschaulichenden Ausführungsformen nicht auf einen solchen beschränkt sind. Im Gegenteil kann auch ein Vorgang mit mehreren Anweisungen und mehreren Daten (MIMD) durch das parallele Computersystem 300 ausgeführt oder es können andere parallele Verarbeitungsoperationen verwendet werden, ohne den Geist und Umfang der veranschaulichenden Ausführungsformen zu verlassen.
  • Wie in 3 gezeigt umfasst das parallele Computersystem 300 einen Bestand von Bearbeitungs-Engines 310, bei dem es sich im abgebildeten Beispiel um einen Bestand von Prozessoren in einem oder mehreren Datenverarbeitungssystemen handelt. Anstelle eines Bestands von Prozessoren, können die Bearbeitungs-Engines stattdessen größere Datenverarbeitungseinheiten umfassen, die einen oder mehrere Prozessoren oder Ähnliches umfassen. Weiterhin kann es sich bei den Bearbeitungs-Engines um einen Bestand funktionaler Einheiten handeln, die aus Computerlogik bestehen können, die Teil eines herkömmlichen Prozessors, eines Grafikprozessors oder einer anderen Art von Datenverarbeitungseinheit sein können. Bei den Bearbeitungs-Engines kann es sich auch um einen Bestand zweckbestimmter Beschleuniger zur Beschleunigung bestimmter Arten von Berechnungen handeln, z. B. SIMD-Einheiten, Kompressions/Dekompressions-Beschleuniger, RegEx (regular expressions – reguläre Ausdrücke)-Beschleuniger, Digitale Signalverarbeitungs (Digital Signal Processing DSP)-Prozessoren, vor Ort programmierbare Gatter-Arrays (Field Programmable Gate Arrays FPGA) usw. handeln. Im Allgemeinen kann es sich bei einer Bearbeitungs-Engine um jede Logik handeln, die vorwiegend Datenverarbeitungen und nicht Datenspeicherung oder Datenaustausch abwickelt. Bei dem Bestand handelt es sich tatsächlich um einen logischen Bestand von Bearbeitungs-Engines, in dem die Bearbeitungs-Engines selbst über eine Vielzahl von Datenverarbeitungssystemen verteilt sein können, die lokal oder entfernt zueinander angeordnet sind und auf die auch über ein oder mehrere Datennetzwerke wie ein LAN, ein WAN, das Internet oder Ähnliches zugegriffen werden kann. Gruppen 330 bis 350 von Bearbeitungs-Engines können aus dem Bestand von Bearbeitungs-Engines 310 gebildet werden, um die Berechnungsnäherungen mittels vorauslaufender Berechnungen gemäß der veranschaulichenden Ausführungsformen zu erleichtern.
  • Bestimmte der Gruppen 330 bis 340 können dazu verwendet werden, Berechnungen eines Algorithmus 305 an einem großen Datensatz 360 auf parallele Weise durchzuführen. Im abgebildeten Beispiel entspricht eine erste Gruppe 330 von Bearbeitungs-Engines einem relativ großen Satz von Bearbeitungs-Engines, der in der Größenordnung von hundertern oder tausenden liegen und zur Durchführung vollständiger analytischer Berechnungen an jedem Datenelement im großen Datensatz 360 eingerichtet sein kann. Die zweite Gruppe 340 vom Bearbeitungs-Engines entspricht einem relativ kleineren Satz von Bearbeitungs-Engines, der um zwei oder mehr Größenordnungen kleiner und zur Durchführung genäherter Berechnungen des Algorithmus 305 an einem relativ kleineren Teilsatz des großen Datensatzes 360, wie Probedaten aus dem großen Datensatz 360, eingerichtet sein kann. Die zweite Gruppe 340 der Bearbeitungs-Engines kann zum Beispiel so eingerichtet sein, dass sie 1 Datenelement von jeweils 9000 Datenelementen im großen Datensatz 360 bearbeitet, wohingegen die erste Gruppe 330 von Bearbeitungs-Engines so eingerichtet sein kann, dass sie jedes Datenelement des großen Datensatzes 360 bearbeitet. Während die erste Gruppe 330 so eingerichtet sein kann, dass sie jedes Datenelement des großen Datensatzes 360 bearbeitet, bearbeitet sie gemäß den veranschaulichenden Ausführungsformen möglicherweise nicht jedes Datenelement, sondern einen Teilsatz der Datenelemente, der einem Teil des großen Datensatzes 360 entspricht, der der ersten Gruppe 330 zur Verarbeitung bereitgestellt wird, während andere Teile des großen Datensatzes 360 durch die Operationen der zweiten Gruppe 340 von Bearbeitungs-Engines näherungsweise berechnet werden.
  • Das parallele Computersystem 300 umfasst weiterhin eine Engine zur Analysekoordination 320, die eine Unterschiedermittlungslogik 321, eine Neueinrichtungslogik 322, eine Phasenvorauslauflogik 324, eine Logik zur teilweisen Neuberechnung 326, eine Logik zum Überspringen von Berechnungen 328 und eine Engine zur Berechnung des Vertrauensbereichs 329 aufweist. Die Operationen dieser vielfältigen Logikelemente 321 bis 329 werden nachfolgend detaillierter beschrieben. Diese Logikelemente 321 bis 329 können in Software, Hardware oder einer beliebigen Kombination von Software und Hardware ausgebildet sein. In einer veranschaulichenden Ausführungsform kann die Engine zur Analysekoordination 320 einen oder mehrere Prozessoren, Speicher oder Ähnliches umfassen, wobei die Logikelemente 321 bis 329 durch Softwareanweisungen ausgebildet sein können, die auf dem einen oder mehreren den Speicher verwendenden Prozessoren ausgeführt sein können. In anderen veranschaulichenden Ausführungsformen kann die Logik 321 bis 329 fest in den Schaltungen der Engine zur Analysekoordination 320 als Schaltkreiselemente verdrahtet sein, die so eingerichtet sind, das sie die nachfolgend beschriebenen Operationen ausführen.
  • Im Betrieb ist die Engine zur Analysekoordination 320 für die Einrichtung der Gruppierungen 330 bis 350 von Bearbeitungs-Engines innerhalb des Bestands von Bearbeitungs-Engines 310 zuständig. Ein erster Satz von Bearbeitungs-Engines aus dem Bestand 310 wird zur Aufnahme in eine relativ große Gruppe 330 von Bearbeitungs-Engines ausgewählt, mit der vollständige analytische Berechnungen am Datensatz 360 durchgeführt werden. Die Art und Weise, auf die die Bearbeitungs-Engines ausgewählt werden, kann in unterschiedlichen Formen stattfinden wie beispielsweise eine beliebige Auswahl, eine Auswahl auf der Grundlage von Leistungskapazitäten der Bearbeitungs-Engines, aktuelle Arbeitslasten der Bearbeitungs-Engines, räumliche Nähe oder ein beliebiges anderes Kriterium, das zur Auswahl von Bearbeitungs-Engines verwendet werden kann und wie es für den Fachmann angesichts der vorliegenden Beschreibung ohne Weiteres offensichtlich ist.
  • Zudem wählt die Engine zur Analysekoordination 320 einen zweiten Satz von Bearbeitungs-Engines aus dem Bestand 310 zur Aufnahme in die zweite Gruppe 340 aus, die für vorauslaufende genäherte Berechnungen an einem Teilsatz des Datensatzes 360 zuständig ist. Die zweite Gruppe 340 ist relativ zur ersten Gruppe 330 kleiner. Darüber hinaus wählt die Engine zur Analysekoordination 320 einen Satz von Bearbeitungs-Engines zur Aufnahme in die dritte Gruppe 350 aus, die für das Vergleichen der Ergebnisse von durch die erste Gruppe 330 durchgeführten Berechnungen und Ergebnissen von durch die zweite Gruppe 340 durchgeführten Berechnungen zuständig ist, um einen Unterschied der erhaltenen Ergebnisse zu ermitteln. Der Unterschied wird durch die Engine zur Analysekoordination 320 dazu verwendet festzulegen, wie die Zusammensetzung und die Arbeitsweise der Gruppen 330 bis 340 von Bearbeitungs-Engines dynamisch verändert werden muss, um eine hinreichend genaue genäherte Berechnung am Datensatz 360 in einer möglichst wirksamen Weise zu erhalten. Das bedeutet, dass die Engine zur Analysekoordination 320 den Betrieb der Gruppen 330 bis 340 von Bearbeitungs-Engines auf der Grundlage des Genauigkeitsgrades der genäherten Berechnungen und einem Maß für den Vertrauensbereich für diese genäherten Berechnungen koordiniert.
  • Wie oben erwähnt arbeitet die zweite Gruppe 340 von Bearbeitungs-Engines an einem Teilsatz des Datensatzes 360 wie beispielsweise Probedatenelementen des Datensatzes 360 und wird in einem vorauslaufenden Betrieb ausgeführt. Als Ergebnis wird die zweite Gruppe 340 von Bearbeitungs-Engines typischerweise ihre Anweisungen ausführen und ihre Berechnungen an Datenelementen durchführen, die viel später im Datensatz 360 vorkommen als Datenelemente, die durch die erste Gruppe 330 von Bearbeitungs-Engines bearbeitet werden. Die erste Gruppe 330 von Bearbeitungs-Engines kann zum Beispiel Berechnungen an Datenelementen 1 bis 100 durchführen, während die zweite Gruppe 340 Berechnungen an Probedaten bis zum Datenelement 100 oder mehr zur selben Zeit durchführen kann, zu der die erste Gruppe 330 Bearbeitungen an den Datenelementen 1 bis 100 durchführt. In vielen Algorithmen für maschinelles Lernen können Berechnungen an einem verringerten Eingangssatz Ergebnisse erzielen, die im Vergleich mit dem gesamten Eingang gut genug sind. Der Grund hierfür liegt darin, dass Algorithmen für maschinelles Lernen typischerweise eher lokal optimale als global optimale Ergebnisse erzielen. Bei Verwendung des Algorithmus für nichtnegative Matrixfaktorisierung (Non-negative Matrix Factorization NMF) als Beispiel kann ein zufällig ausgewählter Matrix-Teilsatz für die genäherte Berechnung dazu verwendet werden, eine Liste von Tastaturzuweisungen (hot keys) zu erstellen, die sich in großem Maße mit den Ergebnissen des ursprünglichen Matrixeingangs decken. Wenn es annehmbar ist, dass nur eine bestimmte Menge von Tastaturzuweisungen durch die genäherte Berechnung korrekt erkannt werden, erzielt die Verwendung eines Teilsatzes von Bearbeitungs-Engines (z. B. die zweite Gruppe 340) zur Arbeit an einem Teilsatz von Daten dieselbe Leistung bei viel höherer Geschwindigkeit und geringeren Kosten.
  • Die dritte Gruppe 350 von Bearbeitungs-Engines vergleicht die Ergebnisse von durch die erste Gruppe 330 von Bearbeitungs-Engines erzeugten Berechnungen und die Ergebnisse von durch die zweite Gruppe 340 von Bearbeitungs-Engines erzeugten Berechnungen. Zum Beispiel werden die Ergebnisse von Berechnungen am durch die erste Gruppe 330 von Bearbeitungs-Engines bearbeiteten Datenelement 1 im Datensatz 360 mit den Ergebnissen von Berechnungen am durch durch die zweite Gruppe 340 von Bearbeitungs-Engines bearbeiteten Datenelement 500 im Datensatz 360 als eines der Probedatenelemente aus dem Datensatz 360 verglichen. Der Unterschied zwischen den Ergebnissen kann der Engine zur Analysekoordination 320 bereitgestellt werden, die den Unterschied mit einer oder mehreren zuvor festgelegten Schwellen vergleichen kann, um zu ermitteln, ob die durch die zweite Gruppe 340, d. h. die vorauslaufende Gruppe für die genäherten Berechnungen, erzeugten Ergebnisse hinreichend genau sind und einen hinreichenden Vertrauensbereich aufweisen. Die Abschätzung des Vertrauensbereichs ist ein generischer Auswertungsansatz maschinellen Lernens, um die Wahrscheinlichkeit der Korrektheit der Ausgabedaten abzuschätzen. Ein einfaches Verfahren zur Abschätzung des Vertrauensbereichs kann durch Überwachen des Anteils korrekter Ergebnisse unter allen Ergebnissen aus vorherigen Iterationen der Berechnung ausgeführt werden. Ein derartiger Anteil kann als Abschätzung des Vertrauensbereichs verwendet werden. Es kann auch ein analytisches Modell verwendet werden, um den Vertrauensbereich offline auf der Grundlage der Eigenschaften der Anwendung zu bestimmen. Die Ausgabe der Abschätzung des Vertrauensbereichs wird für den Vergleich mit den zuvor festgelegten Schwellen verwendet.
  • Die Engine zur Analysekoordination 320 kann die Ergebnisse der durch die dritte Gruppe 350 erzeugten Vergleiche erhalten und vielfältige Operationen zur Neueinrichtung der Gruppen 330 bis 350 von Bearbeitungs-Engines durchführen und deren Arbeitsweise so verändern, dass ein gewünschter Genauigkeitsgrad und ein gewünschtes Maß des Vertrauensbereichs in den Gesamtergebnissen der von der Kombination der Gruppen 330 bis 340 erhaltenen Ergebnisse der Berechnungen erreicht wird. Ziel der Engine zur Analysekoordination 320 ist es, den Betrieb der Gruppe 330 und der Gruppe 340 so zu koordinieren, dass die durch die Gruppe 340 durchgeführten genäherten Berechnungen innerhalb einer zuvor festgelegten Toleranz der durch die Gruppe 330 durchgeführten vollständigen Berechnungen liegen und somit die Ergebnisse der Gruppe 340 als hinreichend genau und verlässlich gelten können. Auf diese Weise kann die Geschwindigkeit, mit der die Gruppe 340 ihre genäherten Berechnungen durchführen kann, genutzt werden, um eine schnellere gesamte genäherte Berechnung bereitzustellen, die vom Algorithmus 305 verwendet werden kann.
  • Die Engine zur Analysekoordination 320 vergleicht mittels der Unterschiedvergleichslogik 321 die durch die dritte Gruppe 350 von Bearbeitungs-Engines erzeugten Unterschiede, oder Deltas, mit einem oder mehreren zuvor festgelegten Schwellenwerten, um zu ermitteln, ob die Ergebnisse der durch die zweite Gruppe 340 durchgeführten genäherten Berechnungen hinreichend genau mit den vollständigen durch die erste Gruppe 330 von Bearbeitungs-Engines durchgeführten vollständigen Berechnungen übereinstimmen. Zum Beispiel können die zuvor festgelegten Schwellenwerte einen Wert von 10% beinhalten und dadurch festlegen, dass sich der Unterschied zwischen den durch die zweite Gruppe 340 durchgeführten genäherten Berechnungen von den durch die erste Gruppe 330 durchgeführten Berechnungen um höchstens 10% unterscheiden und als hinreichend genau angesehen werden darf.
  • Wenn die Ergebnisse der genäherten Berechnungen der zweiten Gruppe 340 von Bearbeitungs-Engines aufgrund des Vergleichs zwischen den Unterschieden und einem oder mehreren zuvor festgelegten Schwellenwerten durch die Unterschiedvergleichslogik 321 nicht hinreichend genau sind, kann die Zusammensetzung und der Betrieb der zweiten Gruppe 340 von Bearbeitungs-Engines durch die Neueinrichtungslogik 322 verändert werden, und die durch die zweite Gruppe 340 von Bearbeitungs-Engines durchgeführten analytischen Berechnungen können zumindest teilweise unter der Kontrolle der Logik zur teilweisen Neuberechnung 326 neu berechnet werden.
  • Wenn zum Beispiel die erste Gruppe 330 von Bearbeitungs-Engines hierin als Gruppe (I), die zweite Gruppe 340 von Bearbeitungs-Engines hierin als Gruppe (J) und die dritte Gruppe 350 von Bearbeitungs-Engines hierin als Gruppe (K) bezeichnet wird, so erzeugt die Gruppe (K) Unterschiedswerte zwischen den Berechnungsergebnissen der Gruppen (I) und (J). Wenn die durch die Unterschiedvergleichslogik 321 ermittelten Unterschiedswerte, z. B. |(I) – (J)|, einen Unterschied ergeben, der größer oder gleich einer zuvor festgelegten Schwelle Delta ist, d. h. |(I) – (J)| ≥ delta, so werden eine oder mehrere Neueinrichtungslogiken 322 oder Logikers zur teilweisen Neuberechnung 326 gestartet, um eine Neueinrichtungs- und Neuberechnungsoperation durchzuführen.
  • Zum Beispiel kann die Neueinrichtungslogik 322 der Engine zur Analysekoordination 320 auf Grundlage der Unterschiede zwischen den von der ersten Gruppe (I) 330 und der zweiten Gruppe (J) 340 erhaltenen Ergebnisse die Anzahl der Bearbeitungs-Engines in der zweiten Gruppe (J) 340 und die Anzahl von Proben des durch die erhöhte Anzahl von Bearbeitungs-Engines in der zweiten Gruppe (J) 340 bearbeiteten vollständigen Datensatzes 360 neu einrichten, um den Unterschied zwischen den von der ersten Gruppe (I) 330 und der zweiten Gruppe (J) 340 erhaltenen Ergebnissen zu verringern, so dass der Unterschied innerhalb einer zuvor festgelegten Toleranz Delta liegt. Dies bedeutet, dass die Neueinrichtungslogik 322 zusätzliche Bearbeitungs-Engines aus einem verbleibenden Teil 370 von Bearbeitungs-Engines im Bestand von Bearbeitungs-Engines 310 zuweisen kann, die noch nicht anderen Gruppen 330 bis 350 zugewiesen wurden. Unter der Vorgabe, dass die Anzahl von Bearbeitungs-Engines in der zweiten Gruppe (J) 340 deutlich kleiner als die in der ersten Gruppe (I) 330 ist, können somit einige Bearbeitungs-Engines aus der ersten Gruppe (I) 330 der zweiten Gruppe (J) 340 zugewiesen werden, ohne dass merkliche Auswirkung auf die Berechnungsgeschwindigkeit und Genauigkeit der ersten Gruppe (I) 330 auftreten. Weitere Arten, die Bearbeitungs-Engines zuzuweisen und neu zuzuweisen sind vorhanden, so lange die Berechnungsgeschwindigkeit und die Genauigkeit der ersten Gruppe (I) 330 auf der Grundlage bestimmter zuvor festgelegter Maßzahlen (metrics) annehmbar sind. Dies erhöht die Anzahl von Bearbeitungs-Engines in der zweiten Gruppe 340 und erlaubt es ihnen, an einer größeren Anzahl von Probedatenelementen aus dem Datensatz 360 zu arbeiten. Infolgedessen kann eine genauere genäherte Berechnung erzeugt werden, die näher an der vollständigen Berechnung liegen wird, die durch die erste Gruppe 330 von Bearbeitungs-Engines durchgeführt wird. Die neue Ausführungsgeschwindigkeit der zweiten Gruppe 340 variiert mit den Änderungen der Anzahl von Bearbeitungs-Engines sowie der Eingangsdatenmenge. Die Neueinrichtungslogik 322 stellt sicher, dass die zweite Gruppe 340 ihre Berechnungen immer noch schneller ausführt als die erste Gruppe 330 und dies aufgrund der Entnahme von Stichprobendaten immer noch in vorauslaufender Weise tut.
  • Auf diese Weise wird die Genauigkeit der durch die zweite Gruppe (J) 340, d. h. die vorauslaufenden Bearbeitungs-Engines, erzeugten Näherung innerhalb einer annehmbaren Toleranz gehalten, so dass die Ergebnisse der vorauslaufenden Bearbeitungs-Engines 340 dazu verwendet werden können, die Berechnung für einen Satz von Iterationen der Gesamtanalyse des großen Datensatzes 360 näherungsweise zu bestimmen. Diese genäherten Berechnungen werden mit den durch die erste Gruppe von Bearbeitungs-Engines (J) 330 durchgeführten analytischen Berechnungen kombiniert, um für den großen Eingangsdatensatz 360 genäherte Berechnungen der Analyse bereitzustellen.
  • Als weiteres Beispiel kann im Falle, dass die Engine zur Analysekoordination 320 feststellt, dass der Unterschied zwischen den Ergebnissen der Berechnung der ersten und zweiten Gruppe (I) 330 und (J) 340 größer als die zuvor festgelegte Toleranz ist, mittels der Logik zur teilweisen Neuberechnung 326 eine teilweise Neuberechnung in einer nächsten Ausführungsphase durchgeführt werden. Dadurch werden im Wesentlichen die durch die zweite Gruppe (J) 340 von Bearbeitungs-Engines durchgeführten Berechnungen rückabgewickelt. Die teilweise Neuberechnung wird mit einer erhöhten Anzahl von Bearbeitungs-Engines in der zweiten Gruppe (J) 340, beispielsweise durch Zuweisen zusätzlicher Prozessoren aus den nicht zugewiesenen Prozessoren 370 im Bestand von Bearbeitungs-Engines 310, und mit einer vergrößerten Datenmenge, z. B. mit einer größeren Anzahl von Proben aus den Eingangsdaten, durchgeführt.
  • Falls eine nächste Phase der analytischen Berechnungen, d. h. eine nachfolgende Phase, in der ein weiterer Teil des Algorithmus 305 durch die Bearbeitungs-Engines in den Gruppen 330 bis 340 ausgeführt wird, existiert, welche die Ergebnisse aus der aktuellen Phase verwendet, so wird im Falle, dass der Unterschied zwischen den durch die zweite Gruppe (J) 340 und die erste Gruppe (I) 330 durchgeführten Berechnungen innerhalb der zuvor festgelegten Toleranz Delta liegt, durch die Engines zur Analysekoordination 320 eine Unterbrechung ausgelöst, um die Berechnung der ersten Gruppe (I) 330 anzuhalten und sie für eine nächste Phase zu initialisieren. Dann können die durch die zweite Gruppe (J) 340 erstellten Ergebnisse der aktuellen Phase analytischer Berechnungen in die erste Gruppe (I) 330 für die nächste Berechnungsphase zur Verwendung durch den Algorithmus 305 eingegeben werden. Auf diese Weise wird die Berechnungsgeschwindigkeit erhöht, indem ein Mechanismus zur vorauslaufenden Durchführung von Berechnungsphasen bereitgestellt wird.
  • Für jeden durch die Engine zur Analysekoordination 320 von der dritten Gruppe 350 von Bearbeitungs-Engines erhaltenen Unterschied kann die Engine zur Analysekoordination 320 einen Vertrauensbereichswert berechnen, um zu ermitteln, wie zuverlässig die Unterschiedsberechnung ist. Dieser Vertrauensbereichswert kann durch die Engine zur Analysekoordination 320 dazu verwendet werden zu ermitteln, ob das Maß des Vertrauensbereichs für die Genauigkeit der durch die zweite Gruppe (J) 340 von Bearbeitungs-Engines durchgeführten Berechnungen gleich oder größer ist als eine zuvor auf der Grundlage eines Vertrauensbereichs in den Unterschiedsbestimmungen festgelegte Schwelle. Wenn das Maß des Vertrauensbereichs gleich oder größer als eine zuvor festgelegte Schwelle ist, kann die Engine zur Analysekoordination 320 die erste Gruppe (I) von Bearbeitungs-Engines anweisen oder anderweitig dafür sorgen, dass Teile ihrer Berechnungen, z. B. die verbleibenden Wiederholungen, in welchen die erste Gruppe (I) 330 Iterationen durchführen soll, übersprungen werden. Da dann die Näherung der durch die erste Gruppe (J) 340 erzeugten Berechnung hinreichend genau ist, bedeutet dies, dass keine Notwendigkeit mehr besteht, mit der Berechnung in jeder durch die erste Gruppe (I) 330 von Bearbeitungs-Engines durchgeführten Iteration fortzufahren. Somit kann die Logik zum Überspringen von Berechnungen 328 dazu verwendet werden, die Bearbeitungs-Engines in der ersten Gruppe (I) 330 anzuweisen, die Berechnungen der aktuellen Ausführungsphase zu unterbrechen, deren Ergebnisse entweder mit den durch die zweite Gruppe (J) 340 erzeugten genäherten Ergebnissen zu kombinieren oder andernfalls die Ergebnisse der ersten Gruppe (I) 330 zu verwerfen und dann mit der nächsten Berechnungsphase fortzufahren, falls diese vorhanden ist.
  • Mittels der Mechanismen der hierin beschriebenen veranschaulichenden Ausführungsformen wird ein in hohem Maße paralleler und wirkungsvoller vorauslaufender Mechanismus bereitgestellt, der genaue Näherungen von Berechnungsergebnissen bereitstellen kann. Während diese Berechnungen „Näherungen” darstellen, besitzen diese Näherungen in der Wirklichkeit im Allgemeinen eine hohe Genauigkeit im Hinblick auf vollständige analytische Berechnungen. Es wurde zum Beispiel durch Experimente herausgefunden, dass sich für einen Algorithmus zur nichtnegativen Matrixfaktorisierung (NMF) (ein Hauptkernel bei Analysearbeitslasten von Data-Mining) bei einem erlaubten Fehler der Näherung von höchstens 10% die Geschwindigkeit der durch die Mechanismen der veranschaulichenden Ausführungsformen durchgeführten analytischen Berechnungen um 400% erhöhen kann. Wenn zum Beispiel eine vollständige analytische Berechnung 800 Datenzeilen bearbeiten würde, würde eine Verringerung der Anzahl der Reihen durch Stichproben auf nur 450 Reihen und eine Verwendung der veranschaulichenden Ausführungsformen zwar zu einen Fehler der Berechnung von annähernd 10%, jedoch auch zu einer 400% schnelleren Berechnung führen.
  • Wie oben erwähnt können die veranschaulichenden Ausführungsformen bei vielen verschiedenen Arten analytischer Berechnungen und parallelen Computersystemen verwendet werden. Analytische Berechnungen können allgemein in deskriptive Analyse, prädiktive Analyse und präskriptive Analyse eingeteilt werden. Die deskriptive Analyse nutzt Berechnungen, die mit Standardberichtsfunktionen (die Vorgefallenes beschreiben), Ad-hoc-Berichtsfunktionen (die beschreiben, wie viele, wie oft oder wo Dinge geschehen) und Abfrage-/Vertiefungsoperationen (die beschreiben, worin genau das Problem lag) in Zusammenhang stehen. Die prädiktive Analyse nutzt Berechnungen, die mit Warnmeldungen (die anzeigen, welche Maßnahmen erforderlich sind), Simulationen (die vorhersagen, was geschehen könnte) und vorhersagender Modellierung (die vorhersagt, was als Reaktion auf bestimmte Bedingungen geschehen würde) in Zusammenhang stehen. Die präskriptive Analyse nutzt Berechnungen hinsichtlich der Optimierung (wie kann man das beste Ergebnis erzielen) und stochastischer Optimierung (wie kann man das beste Ergebnis unter Einbeziehung von Schwankungseffekten erzielen). Die veranschaulichenden Ausführungsformen können bei Bearbeitungs-Engines verwendet werden, die an Arbeitslasten arbeiten, die mit jeder beliebigen dieser Arten von analytischen Berechnungen oder jeder beliebigen anderen Art analytischer Berechnung in Zusammenhang stehen, die hierin nicht speziell beschrieben ist.
  • Um den Betrieb der veranschaulichenden Ausführungsformen weiter zu veranschaulichen, wird nun auf 4A bis 4D Bezug genommen, welche beispielhafte Abbildungen bereitstellen, die Berechnungsphasen gemäß einer veranschaulichenden Ausführungsform unter vielfältigen Bedingungen veranschaulichen. 4A zeigt eine beispielhafte Abbildung, welche die Berechnungsphasen zur Verarbeitung einer beispielhaften Arbeitslast gemäß einer veranschaulichenden Ausführungsform veranschaulicht. Die in 4A gezeigten Phasen 410 bis 440 stehen für die Berechnungsphasen, die von einem großen Satz von Bearbeitungs-Engines ohne Ausführung der vorauslaufenden Mechanismen der veranschaulichenden Ausführungsformen zur Näherung verfolgt werden. Somit beinhalten die in 4A gezeigten Berechnungsphasen eine erste Phase 410 gefolgt von einer zweiten Phase 420, wobei diese beiden Phasen, beispielsweise für einen anderen Teil eines großen Datensatzes, als Phasen 430 und 440 wiederholt werden.
  • 4B zeigt denselben Satz von Berechnungsphasen jedoch mit Ausführung der vorauslaufenden Näherungsmechanismen der veranschaulichenden Ausführungsformen. Wie in 4B gezeigt werden die erste und die dritte Phase nicht mittels vollständiger analytischer Berechnungen an einem vollständigen Datensatz, sondern mittels genäherter vorauslaufender Berechnungen wie beispielsweise durch eine zweite Gruppe (J) von Bearbeitungs-Engines ausgeführt. Die Näherung wird mit einem hinreichenden Vertrauensbereich und hinreichender Genauigkeit durch eine relativ kleinere Gruppe von Bearbeitungs-Engines (J) 340 durchgeführt. Folglich führt dies nur aufgrund der Einführung eines annehmbaren Fehlerumfangs, der durch einen oder mehrere zuvor festgelegte Schwellenwerte angegeben wird, zu einer Leistungsverbesserung, die durch einen Pfeil 450 verdeutlicht wird.
  • Bei 4C handelt es sich um eine beispielhafte Abbildung von Berechnungsphasen im Falle, dass ein Unterschied zwischen der ersten Gruppe (I) und der zweiten Gruppe (J) von Bearbeitungs-Engines gleich oder größer einem annehmbaren Wert ist, wie er beispielsweise durch einen oder mehrere zuvor festgelegte Schwellenwerte angegeben sein kann. Wie in 4C gezeigt kann die Engine zur Analysekoordination in solch einem Fall die Berechnung der ersten Phase mit mehr Eingangsdaten möglicherweise unter Verwendung zusätzlicher Bearbeitungs-Engines (J) (durch 460 dargestellt) neu starten, um den Unterschied auf den annehmbaren, durch einen oder mehrere zuvor festgelegte Schwellenwerte angegebenen Bereich zu verringern. Die Steigerungen bei der zu verarbeitenden Datenmenge kann die Zeit zum Ausführen der Berechnungen vergrößern, was durch die relativ größeren Phasendarstellungen in 4C veranschaulicht wird.
  • Bei 4D handelt es sich um eine beispielhafte Abbildung einer Berechnung im Falle, dass aufgrund eines Vertrauensbereichswertes für die genäherten Ergebnisse, der unter einem gewünschten Wert für den Vertrauensbereich liegt, eine teilweise Neuberechnung notwendig ist. Im abgebildeten Beispiel wird in Phase 410 festgestellt, dass die genäherten Berechnungsergebnisse einige falsche Ergebnisse aufweisen, die den Vertrauensbereichswert für die Näherung verringern, und die Engine zur Analysekoordination stellt fest, dass eine Neuberechnung der genäherten Ergebnisse in Phase 420 notwendig ist. Infolgedessen wartet die Engine zur Analysekoordination darauf, dass die erste Gruppe (I) von Bearbeitungs-Engines ihre Bearbeitung der aktuellen Arbeitslast beendet hat, was durch den Abschnitt „Ruhezustand” in der Figur dargestellt wird. Anschließend wird die teilweise Berechnung von Phase 420 durchgeführt. Während der dritten Phase 430 wird die zweite Gruppe (J) von Bearbeitungs-Engines neu eingerichtet, um wie im oben im Hinblick auf 4C beschriebenen Fall die erforderliche Genauigkeit und den erforderlichen Vertrauensbereichswert einzuhalten. Dies bedeutet, dass (J) in Phase 2 (420) eine teilweise Neuberechnung durchführt, da einige der Eingangsdaten aus Phase 1 (410) inkorrekt waren. Sobald die teilweise Neuberechnung in Phase 2 abgeschlossen ist, beginnt Phase 3 (430) mit der in 4C gezeigten Neueinrichtung. Es ist zu beachten, dass die Länge der Phase 430 in 4D derjenigen der Phase in 4C entspricht. Auch wenn in jedem in den 43 bis 4D gezeigten Szenario die Leistungsfähigkeit der Mechanismen der veranschaulichenden Ausführungsformen bei einer erforderliche Neuberechnung verringert wird, so ist die Leistung verglichen mit dem in 4R gezeigten Mechanismus, bei dem die veranschaulichenden Ausführungsformen nicht ausgebildet sind, in jedem Fall immer noch höher.
  • 5 zeigt einen beispielhaften Ablaufplan, der den Betrieb der Engine zur Analysekoordination gemäß einer veranschaulichenden Ausführungsform zeigt. Wie in 5 gezeigt, beginnt der Betrieb mit dem Auswählen von Gruppen von Bearbeitungs-Engines zur Durchführung von vollständigen analytischen Berechnungen, genäherten vorauslaufenden analytischen Berechnungen und Berechnungen zur Unterschiedsermittlung (Schritt 510). Arbeitslasten werden den Gruppen von Bearbeitungs-Engines bereitgestellt (Schritt 520), wobei die Gruppe(n) von Bearbeitungs-Engines für vollständige analytische Berechnungen an einem oder mehreren Teilen eines Eingangsdatensatzes vollständige analytische Berechnungen durchführt/durchführen, die Bearbeitungs-Engines für genäherte vorauslaufende Analysen an einem Probeteildatensatz eines oder mehrerer Teile des Eingangsdatensatzes analytische Berechnungen durchführen und die Bearbeitungs-Engines für die Unterschiedsermittlung Unterschiedswerte zwischen den durch die anderen Gruppen von Bearbeitungs-Engines erzeugten Ergebnissen ermitteln (Schritt 530).
  • Wenn angenommen wird, dass die Gruppe(n) für die vollständige analytische Berechnung als Gruppe (I), die Bearbeitungs-Engines für die genäherte vorauslaufende Berechnung als Gruppe (J) und die Bearbeitungs-Engines für die Unterschiedsermittlung als Gruppe (K) bezeichnet werden, wird festgestellt, ob (I) (J) eingeholt hat, d. h., ob (I) eine Berechnungsphase beendet hat, die zuvor durch (J) ausgeführt wurde; z. B. hat (I) bei Berechnungsphase 1 (J) eingeholt, während (J) bereits zu Berechnungsphase 3 übergegangen ist (Schritt 540). Anders ausgedrückt, (I) hat eine Schleifeniteration beendet, die innerhalb eines Bereichs von Iterationen liegt, die bereits von (J) bearbeitet wurden. Falls nicht, kehrt der Betrieb zu Schritt 540 zurück und fährt damit fort zu überwachen, ob eine Situation eintritt, in der (I) bei einer bestimmten Berechnungsphase (J) einholt. Wenn (I) bei dieser Berechnungsphase (J) eingeholt hat, wird ein Vergleich der Ergebnisse von (I) und (J) durchgeführt, um einen oder mehrere Unterschiedswerte zu erzeugen (Schritt 550).
  • Die Engine zur Analysekoordination ermittelt, ob der Unterschied weniger als ein oder mehrere zuvor festgelegte Schwellenwerte beträgt (in diesem Fall der Schwellenwert Delta) (Schritt 560). Falls nicht, richtet die Engine zur Analysekoordination (J) neu ein, um den einen oder die mehreren zuvor festgelegten Schwellenwerte einzuhalten (Schritt 570). Zum Beispiel kann die Neueinrichtung das Hinzufügen zusätzlicher Bearbeitungs-Engines zu (J) und/oder das Erhöhen der Datenmenge aus dem Eingangsdatensatz, an der die genäherten vorauslaufenden Berechnungen durchgeführt werden, mit sich bringen. Zudem wird ein Vertrauensbereichswert in Verbindung mit den Ergebnissen der genäherten vorauslaufenden Berechnung aktualisiert (Schritt 580). Die Ausführung kehrt dann zu Schritt 540 zurück, so dass die Neuberechnung der genäherten vorauslaufenden Berechnungen durchgeführt werden kann.
  • Als Reaktion darauf, dass der Unterschied geringer als der eine oder die mehreren Schwellenwerte ist oder nicht, wird ein Vertrauensbereichswert in Verbindung mit den Ergebnissen der genäherten vorauslaufenden Berechnung aktualisiert (Schritt 590) und ermittelt, ob dieser Vertrauensbereichswert geringer als eine zuvor festgelegter Schwelle ist (Schritt 600). Darüber hinaus können bei parallelem Betrieb im Falle, dass die Ergebnisse der aktuellen Berechnungsphase in einer späteren Berechnungsphase verwendet werden sollen und dass der Unterschied kleiner als der eine oder die mehreren Schwellenwerte ist, die Ergebnisse der aktuellen Berechnungsphase zur Verwendung durch den Algorithmus für spätere Berechnungsphasen weitergeleitet werden (Schritt 610).
  • Wenn der Vertrauensbereichswert geringer als der zuvor festgelegte Schwellenwert ist (Schritt 600), wird nichts weiter unternommen, und die Ausführung kehrt zu Schritt 540 zurück. Falls der Vertrauensbereich der genäherten Berechnungen ausreicht, d. h. der Vertrauensbereichswert gleich oder größer als die zuvor festgelegten Schwelle ist (Schritt 600), so weist die Engine zur Analysekoordination die Gruppe(n) für die vollständige analytische Berechnung an, zumindest einen Teil ihrer auszuführenden Berechnungen zu überspringen (Schritt 620). Die oben geschilderte Ausführung kann fortgesetzt werden bis eine die Ausführung beendende Beendigungsbedingung eintritt wie beispielsweise, dass alle Eingangsdatensätze bearbeitet wurden, ein nicht behebbarer Fehler bei der Ausführung des Algorithmus auftritt oder Ähnliches.
  • Somit stellen die veranschaulichenden Ausführungsformen Mechanismen für wirkungsvolle vorauslaufende genäherte Berechnungen mittels Gruppen von Bearbeitungs-Engines und der Koordination zwischen diesen Gruppen von Bearbeitungs-Engines bereit. Die veranschaulichenden Ausführungsformen erhöhen die Gesamtleistungsfähigkeit analytischer Berechnungen erheblich, indem sie die Geschwindigkeit genäherter Berechnungen und die Ermittlung der Genauigkeit und des Vertrauensbereichs der genäherten Berechnungen im Vergleich zu vollständigen analytischen Berechnungen einsetzen.
  • Wie oben erwähnt sollte beachtet werden, dass die veranschaulichenden Ausführungsformen in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform oder einer Ausführungsform, die sowohl Hardware- als auch Software-Elemente enthält, ausgeführt sein können. In einer beispielhaften Ausführungsform sind die Mechanismen der veranschaulichenden Beispiele als Software oder Programmcode ausgeführt, was Firmware, residente Software, Mikrocode usw. mit einschließt, jedoch nicht darauf beschränkt ist.
  • Ein Datenverarbeitungssystem, das für das Speichern und/oder Ausführen von Programmcode geeignet ist, beinhaltet mindestens einen über einen Systembus direkt oder indirekt mit Speicherelementen verbundenen Prozessor. Zu den Speicherelementen können ein lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes eingesetzt wird, Massenspeicher und Zwischenspeicher gehören, welche die vorübergehende Speicherung mindestens einigen Programmcodes bereitstellen, um die Anzahl der Abrufvorgänge von Code vom Massenspeicher während der Ausführung zu verringern.
  • Eingabe/Ausgabe- bzw. E/A-Einheiten (darunter, jedoch nicht darauf beschränkt, Tastaturen, Anzeigen, Zeigeeinheiten usw.) können mit dem System entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten (I/O controllers) verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten durch zwischengeschaltete private oder öffentliche Netzwerke verbunden ist. Modems, Kabelmodems und Ethernet-Karten stellen nur einige wenige der aktuell erhältlichen Arten von Netzwerkadaptern dar.
  • Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt und ist nicht als erschöpfend oder auf die Erfindung in der beschriebenen Form beschränkt aufzufassen. Viele Änderungen und Variationen sind für den Fachmann naheliegend. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung, die praktische Anwendung am besten zu beschreiben und anderen Fachleuten das Verständnis der Erfindung für vielfältige Ausführungsformen mit vielfältigen Änderungen, wie sie für den speziellen besonderen Gebrauch geeignet sind, zu ermöglichen.

Claims (15)

  1. Verfahren in einem Datenverarbeitungssystem zur Durchführung genäherter vorauslaufender Berechnungen, wobei das Verfahren Folgendes umfasst: Auswählen einer ersten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um vollständige Berechnungen an einem vollständigen Satz von Eingangsdaten durchzuführen; Auswählen einer zweiten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um Berechnungen an einem Probeteilsatz der Eingangsdaten durchzuführen; Auswählen einer dritten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu berechnen; und Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds.
  2. Verfahren nach Anspruch 1, wobei die zweite Gruppe von Bearbeitungs-Engines genäherte Berechnungen an dem Probeteilsatz der Eingangsdaten durchführt.
  3. Verfahren nach Anspruch 2, wobei das Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds ein Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage eines Genauigkeitsgrades der genäherten Berechnungen und eines Maßes eines Vertrauensbereichs dieser genäherten Berechnungen umfasst.
  4. Verfahren nach Anspruch 1, wobei das Auswählen der ersten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines zur Durchführung vollständiger Berechnungen an einem vollständigen Satz von Eingangsdaten Folgendes umfasst: Auswählen einer Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines auf der Grundlage mindestens eines der folgenden Verfahren: ein beliebiges Auswahlverfahren, eine Auswahl von Bearbeitungs-Engines auf der Grundlage der Leistungsfähigkeit der Bearbeitungs-Engines, aktuelle Arbeitslasten der Bearbeitungs-Engines oder die räumliche Nähe der Bearbeitungs-Engines.
  5. Verfahren nach Anspruch 1, wobei das Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines als Reaktion darauf erfolgt, dass der Unterschied der Berechnungsergebnisse nicht innerhalb einer durch einen oder mehrere Schwellenwerte angegebenen, zuvor festgelegten Toleranz liegt.
  6. Verfahren nach Anspruch 5, wobei als Reaktion darauf, dass der Unterschied der Berechnungsergebnisse nicht innerhalb der zuvor festgelegten Toleranz liegt, des Verfahren weiterhin das Starten einer teilweisen Neuberechnung durch die neu eingerichtete zweite Gruppe von Bearbeitungs-Engines in einer nächsten Berechnungsphase umfasst.
  7. Verfahren nach Anspruch 1, wobei als Reaktion darauf, dass der Unterschied der Berechnungsergebnisse innerhalb einer zuvor festgelegten, durch einen oder mehrere Schwellenwerte angegebenen Toleranz liegt, das Verfahren weiterhin Folgendes umfasst: Erzeugen einer Unterbrechung, um die durch die erste Gruppe von Bearbeitungs-Engines durchgeführten Berechnungen zu unterbrechen; und Verwenden der Ergebnisse der Berechnungen der zweiten Gruppe von Bearbeitungs-Engines als Ergebnisse einer Berechnungsphase von Code, der durch eine erste und zweite Gruppe von Bearbeitungs-Engines ausgeführt wird.
  8. Computerprogrammprodukt, das ein computerlesbares Speichermedium mit einem darauf gespeicherten computerlesbaren Programm aufweist, wobei das computerlesbare Programm bei Ausführung auf einer Computereinheit die Computereinheit zu Folgendem veranlasst: Auswählen einer ersten Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines, um vollständige Bearbeitungen an einem vollständigen Satz von Eingangsdaten durchzuführen; Auswählen einer zweiten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um Bearbeitungen an einem Probeteilsatz der Eingangsdaten durchzuführen; Auswählen einer dritten Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu berechnen; und Neueinrichten der zweiten Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds.
  9. Computerprogrammprodukt nach Anspruch 8, wobei die zweite Gruppe von Bearbeitungs-Engines genäherte Berechnungen an dem Probeteilsatz der Eingangsdaten durchführt.
  10. Computerprogrammprodukt nach Anspruch 9, wobei das computerlesbare Programm die Bearbeitungseinheit dazu veranlasst, die zweite Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds neu einzurichten, indem die zweite Gruppe von Bearbeitungs-Engines auf Grundlage eines Genauigkeitsgrades der genäherten Berechnungen und eines Maßes für einen Vertrauensbereich dieser genäherten Berechnungen neu eingerichtet wird.
  11. Computerprogrammprodukt nach Anspruch 8, wobei das computerlesbare Programm die Bearbeitungseinheit dazu veranlasst, eine erste Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines auszuwählen, um vollständige Berechnungen an einem vollständigen Satz von Eingangsdaten durchzuführen, indem eine Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines auf der Grundlage mindestens eines der folgenden Verfahren ausgewählt wird: ein beliebiges Auswahlverfahren, eine Auswahl von Bearbeitungs-Engines auf der Grundlage der Leistungsfähigkeit der Bearbeitungs-Engines, aktuelle Arbeitslasten der Bearbeitungs-Engines oder die räumliche Nähe der Bearbeitungs-Engines.
  12. Computerprogrammprodukt nach Anspruch 8, wobei das computerlesbare Programm die Computereinheit dazu veranlasst, die zweite Gruppe von Bearbeitungs-Engines als Reaktion darauf neu einzurichten, dass der Unterschied der Berechnungsergebnisse nicht innerhalb einer durch einen oder mehrere Schwellenwerte angegebenen, zuvor festgelegten Toleranz liegt.
  13. Computerprogrammprodukt nach Anspruch 12, wobei als Reaktion darauf, dass der Unterschied der Berechnungsergebnisse nicht innerhalb der zuvor festgelegten Toleranz liegt, das computerlesbare Programm die Computereinheit weiterhin dazu veranlasst, eine teilweise Neuberechnung durch die neu eingerichtete zweite Gruppe von Bearbeitungs-Engines in einer nächsten Berechnungsphase zu starten.
  14. Computerprogrammprodukt nach Anspruch 8, wobei als Reaktion darauf, dass der Unterschied der Berechnungsergebnisse innerhalb einer durch einen oder mehrere Schwellenwerte angegebenen, zuvor festgelegten Toleranz liegt, das computerlesbare Programm die Computereinheit weiterhin zu Folgendem veranlasst: Erzeugen einer Unterbrechung, um die durch die erste Gruppe von Bearbeitungs-Engines durchgeführten Berechnungen zu unterbrechen; und Verwenden der Ergebnisse der Berechnungen der zweiten Gruppe von Bearbeitungs-Engines als Ergebnisse einer Berechnungsphase von Code, der durch eine erste und zweite Gruppe von Bearbeitungs-Engines ausgeführt wird.
  15. Datenverarbeitungssystem, das Folgendes umfasst: eine Koordinator-Engine; und einen Bestand von Bearbeitungs-Engines, die mit der Koordinator-Engine verbunden sind, wobei die Koordinator-Engine: eine erste Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines auswählt, um vollständige Bearbeitungen an einem vollständigen Satz von Eingangsdaten durchzuführen; eine zweite Gruppe von Bearbeitungs-Engines aus einem Bestand von Bearbeitungs-Engines auswählt, um Bearbeitungen an einem Probeteilsatz von Eingangsdaten durchzuführen; eine dritte Gruppe von Bearbeitungs-Engines aus dem Bestand von Bearbeitungs-Engines auswählt, um einen Unterschied der Berechnungsergebnisse zwischen ersten, durch die erste Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen und zweiten, durch die zweite Gruppe von Bearbeitungs-Engines erzeugten Berechnungsergebnissen zu ermitteln; und die zweite Gruppe von Bearbeitungs-Engines auf der Grundlage des durch die dritte Gruppe von Bearbeitungs-Engines erzeugten Unterschieds neu einrichtet.
DE102012204167A 2011-03-29 2012-03-16 Vorauslaufende genäherte Berechnungen Ceased DE102012204167A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/074,438 2011-03-29
US13/074,438 US8510546B2 (en) 2011-03-29 2011-03-29 Run-ahead approximated computations

Publications (1)

Publication Number Publication Date
DE102012204167A1 true DE102012204167A1 (de) 2012-10-04

Family

ID=46052021

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012204167A Ceased DE102012204167A1 (de) 2011-03-29 2012-03-16 Vorauslaufende genäherte Berechnungen

Country Status (4)

Country Link
US (2) US8510546B2 (de)
CN (1) CN102736896B (de)
DE (1) DE102012204167A1 (de)
GB (1) GB2489562B (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US10235232B2 (en) 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9891935B2 (en) * 2015-08-13 2018-02-13 Altera Corporation Application-based dynamic heterogeneous many-core systems and methods
US10114613B2 (en) 2016-09-07 2018-10-30 International Business Machines Corporation Mixed-precision memcomputing system
CN108985367A (zh) * 2018-07-06 2018-12-11 中国科学院计算技术研究所 计算引擎选择方法和基于该方法的多计算引擎平台
CN111583042B (zh) * 2020-05-13 2023-08-18 恒生电子股份有限公司 期权实时数据的计算方法、系统、存储介质及电子设备
CN114693451A (zh) * 2022-03-30 2022-07-01 蚂蚁区块链科技(上海)有限公司 基于智能合约的计算方法及装置、电子设备
CN114693450A (zh) * 2022-03-30 2022-07-01 蚂蚁区块链科技(上海)有限公司 基于智能合约的计算、更新、读取方法及装置、电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH076146A (ja) 1993-06-18 1995-01-10 Fujitsu Ltd 並列データ処理システム
US5684929A (en) * 1994-10-27 1997-11-04 Lucent Technologies Inc. Method and apparatus for determining the limit on learning machine accuracy imposed by data quality
US5996013A (en) 1997-04-30 1999-11-30 International Business Machines Corporation Method and apparatus for resource allocation with guarantees
US20050180506A1 (en) * 2002-05-30 2005-08-18 Wittebrood Rimmert B. Unit for and method of estimating a current motion vector
WO2005089261A2 (en) 2004-03-15 2005-09-29 Sysdm Inc. System and method for information management in a distributed network
US7487054B2 (en) * 2005-05-11 2009-02-03 International Business Machines Corporation Automated dynamic metrology sampling system and method for process control
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
GB0809189D0 (en) 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements relating to single instruction multiple data (SIMD) architectures
US20090319755A1 (en) * 2008-06-19 2009-12-24 Vns Portfolio Llc Method and Apparatus for High Speed Data Stream Splitter on an Array of Processors
US20100095015A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Methods and systems for bandwidth amplification using replicated fragments
JP5470819B2 (ja) 2008-11-28 2014-04-16 富士通株式会社 空間データの出力処理方法、そのプログラム及びデータ処理システム
US8968083B2 (en) * 2009-11-12 2015-03-03 Igt Gaming system and method for dynamically grouping gaming devices to provide progressive awards
US8447565B2 (en) * 2010-06-07 2013-05-21 Lawrence Livermore National Security, Llc Approximate error conjugation gradient minimization methods

Also Published As

Publication number Publication date
US20120254604A1 (en) 2012-10-04
US8510546B2 (en) 2013-08-13
GB201204629D0 (en) 2012-05-02
US8566576B2 (en) 2013-10-22
GB2489562A (en) 2012-10-03
GB2489562B (en) 2017-01-04
CN102736896B (zh) 2015-03-04
CN102736896A (zh) 2012-10-17
US20120254603A1 (en) 2012-10-04

Similar Documents

Publication Publication Date Title
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE112019003405T5 (de) Automatische feinabstimmungsvorrichtung für einbettungen von cloud-mikrodiensten
DE112017006806T5 (de) Datenflussverzögerungen in einer daten-streaming-anwendung verringern
DE112019004076T5 (de) Dezentralisiertes verteiltes deep learning
DE112016005536T5 (de) Bestimmen von reihenfolgen einer ausführung eines neuronalen netzes
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE202016008045U1 (de) Verteiltes Speichersystem mit Replika-Standortauswahl
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102013209868A1 (de) Abfragen und Integrieren strukturierter und unstrukturierter Daten
DE112019002235T5 (de) Einbinden eines wörterbuch-bearbeitungssystems in ein text mining
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112013001747T5 (de) Optimieren des Verbindens von Anweisungen
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
DE112021003262T5 (de) Erkennen von quelldatensätzen, die zu einem transferlernverfahren für eine zieldomäne passen
DE112021002883T5 (de) Automatisierte rückmeldung und kontinuierliches lernen zur abfrageoptimierung
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE112017008151T5 (de) Schaltungen geringer tiefe als quantenklassifikatoren
DE112018001290T5 (de) Verfahren zum Schätzen der Löschbarkeit von Datenobjekten
DE112018002266T5 (de) Kognitives Datenfiltern für Speicherumgebungen
DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
DE112017007361T5 (de) Unterstützen von interaktivem textmining-prozess mit dialog in natürlicher sprache
DE112021000338B4 (de) Auslagern der statistikerfassung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final