DE102012204167A1 - Advance approximated calculations - Google Patents

Advance approximated calculations 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
German (de)
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/en
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

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.Mechanisms are provided for performing approximate preliminary calculations. A first group of processing engines is selected from the pool of processing engines to perform complete calculations on a complete set of input data. A second group of processing engines is selected to perform calculations on a sample subset of the input data. A third group of processing engines is selected to determine a difference in the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines. The second group of processing engines is re-established based on the difference created by the third group of processing engines.

Description

Die vorliegende Anmeldung betrifft allgemein eine verbesserte Vorrichtung und ein Verfahren zur Datenverarbeitung sowie spezifischer Mechanismen zur Bereitstellung vorauslaufender genäherter Berechnungen.The present application relates generally to an improved data processing apparatus and method, as well as specific mechanisms for providing prior approximate calculations.

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.A parallel computer system is a computer system with more than one processor for parallel processing of tasks. A parallel program is a program that can consist of one or more activities that can be split into tasks that can be performed in parallel by a plurality of processors. Parallel programs allow the tasks of some co-ordination between processors to be performed concurrently on multiple processors to get results faster.

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).There are many different approaches to providing parallel computer systems. Examples of some types of parallel computer systems are multi-processing systems, computer cluster systems, parallel supercomputer systems, distributed computer systems, grid computer systems, and the like. These parallel computer systems are usually distinguished by the nature of the connection between the processors and the memory. One of the most widely recognized classifications of parallel computer systems parallels parallel computer systems according to whether all processors execute the same instructions, i. H. one instruction / multiple data (single instruction / multiple data SIMD), or whether each processor is executing different instructions, i. H. multiple instructions / multiple data (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.Another way of classifying parallel computer systems is based on their memory architectures. Shared shared memory computer systems have multiple processors that access all available memory as a global address space. These shared memory computer systems may be further classified into uniform memory access (UMA) systems where access times are common to all parts of the memory and non-uniform memory access (NUMA) systems which access times to all parts of the memory are not the same. Another category, parallel distributed memory computer systems, also provides a parallel computer system that uses multiple processors, but each of which can access only its own local memory; that is, there is no global memory address space between them. Another currently dominating type of parallel computer systems is a combination of the above systems in which nodes of the system have a certain amount of shared memory space for a small number of processors, but many of these nodes coexist in a parallel system distributed memory are connected.

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.In some parallel computer systems, the Message Passing Interface is used to communicate and coordinate the workloads performed in parallel by a plurality of computing or processing units. The Message Routing Interface (MPI) is a language-independent descriptive application programming interface (API) for inter-computer communication that is used to route messages to shared memory or parallel distributed storage computer systems. The MPI typically provides a parallel application in the form of one or more activities, which are then split into tasks that can be processed in parallel on a plurality of processors of one or more computer units. The MPI provides the processors with a communication API with which they can exchange data with each other regarding the processing of these activities.

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.The use of parallel computer systems to handle large analytical workloads such as: For example, facial recognition, weather or traffic analysis, biological sequence analysis, Internet traffic analysis, document warehouses, multiple applications of data mining, or any other type of large analytical workload is becoming increasingly important in today's information age , As can be seen, the amount of data on which such analyzes are made is relatively large and continually increasing. Even with the speed increases made possible by parallel computer systems, the mere fact that the data is to be analyzed in terms of target costs and performance makes the analysis of complete data sets relatively impractical.

ZUSAMMENFASSUNGSUMMARY

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 an illustrative embodiment, a method for performing approximate leading calculations is provided in a data processing system. The method includes selecting a first group of processing engines from a set of processing engines to perform more complete ones Calculations on a complete set of input data. The method further includes selecting a second group of processing engines from a stock of processing engines to perform calculations on a trial subset of the input data. The method further includes selecting a third group of processing engines from the inventory of processing engines to determine a difference of the computation results between first computation results generated by the first group of processing engines and the second, by the second group of processing engines calculate generated calculation results. In addition, the method includes re-establishing the second group of processing engines based on the difference generated by the third group of processing engines.

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 other illustrative embodiments, a computer program product is provided that includes a computer usable or computer readable medium having a computer readable program. The computer readable program, when executed on a computer unit, causes the computer unit to perform various and combinations of the above-discussed operations with respect to the illustrative embodiment of the method.

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 yet another embodiment, a system / apparatus is provided. The system / device may include one or more processors and memory coupled to the one or more processors. The memory may include instructions that, when executed on the one or more processors, cause the one or more processors to perform various and combinations of the above-discussed operations with respect to the illustrative embodiment of the method.

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.In one aspect, the invention relates to a method in a data processing system for performing approximate leading calculations, the method comprising: selecting a first group of processing engines from a stock of processing engines to perform full calculations on a complete set of input data; Selecting a second group of processing engines from a stock of processing engines to perform calculations on a trial subset of the input data; Selecting a third group of processing engines from the inventory of processing engines to calculate a difference of the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines; and re-establishing the second group of processing engines based on the difference generated by the third group of processing engines.

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.According to one embodiment of the invention, the inventory of processing engines comprises at least one of a set of processors, a set of functional units within one or more processors, a collection of data processing units, each computing unit comprising one or more processors or a stock of dedicated accelerators. which accelerate a certain kind of calculation.

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.According to one embodiment of the invention, the second group of processing engines comprises a number of processing engines, the number of which is smaller than a number of processing engines in the first group of processing engines.

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.According to an embodiment of the invention, the second group of processing engines executes the computations in a leading manner so that the data on which the second group of processing engines operates includes data whose position progresses relatively further in the order in the data set located at the back as data on which the first group of editing engines is working.

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.According to one embodiment of the invention, re-establishing the second group of processing engines includes increasing a number of processing engines in the second group of processing 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.According to an embodiment of the invention, re-establishing the second group of processing engines further comprises increasing the size of the sample part data set from the set of input data on which the second group of processing engines is operating.

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.In a further aspect, the invention relates to a computer program product comprising a computer readable storage medium having a computer readable program stored thereon, the computer readable program, when executed on a computer unit, causing the computer unit to: select a first group of edit engines from a stock of edit Engines to perform full edits on a complete set of input data; Select a second set of editing engines from the inventory of editing engines to edits to perform a trial subset of the input data; Selecting a third group of processing engines from the inventory of processing engines to calculate a difference of the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines; and re-establishing the second group of processing engines based on the difference generated by the third group of processing engines.

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.According to one embodiment of the invention, the inventory of processing engines comprises at least one of: a stock of processors, a stock of functional units within one or more processors, a population of data processing units, each data processing unit having one or more processors or a stock of dedicated accelerators which accelerate a particular type of calculation.

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.According to one embodiment of the invention, the second group of processing engines comprises a number of processing engines, the number of which is smaller than the number of processing engines in the first group of processing engines.

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.According to an embodiment of the invention, the second group of processing engines executes the computations in a leading manner so that the data on which the second group of processing engines operates includes data whose position progresses relatively further in the order in the data set located at the back as data on which the first group of editing engines is working.

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.According to one embodiment of the invention, the computer-readable program causes the computer unit to re-set the second group of processing engines by incrementing a number of processing engines in the second group of processing engines.

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.According to one embodiment of the invention, the computer-readable program causes the computer unit to re-set the second group of processing engines by increasing the size of the sample data record from the set of input data on which the second group of processing engines is operating.

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.These and other features and advantages of the present invention will be described in light of the following detailed description of the exemplary embodiments of the present invention, or will be apparent to those skilled in the art.

KURZE BESCHREIBUNG DER MEHREREN ZEICHNUNGSANSICHTENBRIEF DESCRIPTION OF THE SEVERAL DRAWING VIEWS

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:The invention as well as a preferred mode of use and further objects and advantages will be best understood by reference to the following detailed description of illustrative embodiments in conjunction with the accompanying drawings, in which:

1 eine beispielhafte Abbildung eines verteilten Datenverarbeitungssystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können; 1 Fig. 12 shows an exemplary diagram of a distributed data processing system in which aspects of the illustrative embodiments may be configured;

2 ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems zeigt, in dem Aspekte der veranschaulichenden Ausführungsformen ausgebildet sein können; 2 FIG. 12 is a block diagram of an exemplary data processing system in which aspects of the illustrative embodiments may be configured; FIG.

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; 3 10 is an exemplary illustration of a parallel computer system having processing engine groupings and an analysis coordination engine configured in accordance with an illustrative embodiment;

4A bis 4D beispielhafte Abbildungen zeigen, die Berechnungsphasen gemäß einer veranschaulichenden Ausführungsform der Erfindung unter vielfältigen Bedingungen veranschaulichen; und 4A to 4D show exemplary diagrams illustrating calculation phases according to an illustrative embodiment of the invention under a variety of conditions; and

5 einen beispielhaften Ablaufplan zeigt, der die Arbeitsweise der Engine zur Analysekoordination gemäß einer veranschaulichenden Ausführungsform zeigt. 5 10 shows an example flowchart showing the operation of the analysis coordination engine according to an illustrative embodiment.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

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.The illustrative embodiments provide mechanisms for providing preliminary approximate calculations. The mechanisms of the illustrative embodiments coordinate fast (always preprocessing) approximate calculations performed by a first set of computing devices with conventional analytic calculations on a complete data set performed by a second set of computing devices. The mechanisms of the illustrative embodiments perform such coordination through the use of accuracy, confidence intervals, and speed between the two sets of computing devices so that the combined results of both are acceptable for analysis.

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. With the mechanisms of the illustrative embodiments, a relatively large group (I) of processing engines, e.g. As data processing units, processors within one or more data processing units or the like used to cope with a conventional calculation with complete input data. A second, relatively small group (J) of machining engines is used to perform calculations on sample data with pre-computation. That is, in an exemplary embodiment, analytical workloads can perform the same calculations on a large amount of data by, for example, using loops with large iteration sets. The first group (I) iterates through the iterations of the loop in the normal manner, starting with a first iteration value and performs calculations (corresponding to the loop increment) in each iteration. The second group (J) takes samples of the iterations and performs the calculations in advance, that is, calculations of loop iterations are made prior to the time they would normally be performed when the loop was executed in terms of repetitions and step size of the loop in a sequential manner would become.

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.Another relatively small group (K) of processing engines is used to check and record differences between the results of the group (I) and (J) calculations generated when the calculations of the first group (I) at the start iteration of the catching up with the workload managed by the second group (J). Based on these differences or deltas, an analysis coordination engine can perform a variety of operations for planning and redesigning the first and second group of processing engines (I) and (J).

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.For example, the analysis coordinator may, based on the differences between the results obtained from the first group (I) and the second group (J), increase the number of processing engines in the second group (J) and the number of samples of the same Reorganize the number of processing engines in the second group (J) of the edited whole record so as to reduce the difference (delta) between the results obtained by the first group (I) and the second group (J), so that the difference within a predetermined tolerance. The reduced difference (delta) between the results is achieved by allowing multiple processors in J within the same calculation period to work on the increased number of data samples. In this way, the accuracy of the second group (J), d. H. the leading processing engines, kept approximation within an acceptable tolerance, so that the results of the leading processing engines can be used to approximate the computation for a set of iterations of the overall analysis of the large data set. These approximate calculations are combined with the analytical calculations performed by the first group of processing engines (J) to provide approximate calculations for analysis for a large set of input data.

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.If there is a next phase of the analytical calculations, d. H. Further, in a case where the difference between the calculations performed by the second group (J) and the first group (I) is within the predetermined tolerance, a subsequent phase using the results of the current phase may be the results of the current one Phase of the analytical calculations made by the second group (J) for use by the algorithm are fed to the next calculation phase while the calculations by the first group (I) are still running, d. H. before the calculations by the first group (I) are completed. In this way, the speed of the calculation is increased by providing a mechanism for performing computation phases in advance.

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 another example, in the event that the analysis coordination engine determines that the difference between the results of the first and second group calculations (I) and (J) is greater than the predetermined tolerance, a partial recalculation may occur in a next execution phase be performed. This essentially rewindbacks the calculations made by the second group (J) of processing engines. The partial recalculation is done with an increased number of processing engines in the second group (J) and an increased amount of data, i. H. a larger number of data samples from the input data.

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.In yet another example, the analysis coordination engine may determine that the confidence interval of the accuracy of the calculations performed by the second group (J) of processing engines is higher than a predetermined threshold. If so, the analysis coordination engine may instruct or otherwise cause the first group (I) of processing engines to share some of their computations, e.g. For example, the remaining repeats in which the first group (I) is to perform calculations must be skipped. Then, the approximation of the calculation produced by the first group (J) suffices is exact, this means that there is no need to continue the calculation in each repetition performed by the first group (i) of processing engines.

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.As will be apparent to those skilled in the art, the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may be embodied as a complete hardware embodiment, a complete software embodiment (including firmware, resident software, microcode, etc.) or in an embodiment that combines software and hardware aspects, all herein generally may be referred to as a "circuit", "module" or "system". Further, aspects of the present invention may be embodied as a computer program product that may be included in one or more computer-readable media having computer-usable program code thereon.

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.Any combination of one or more computer-readable media (s) may be used. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. For example, but not limited to, the computer-readable storage medium may be a system, device, electronic, magnetic, optical, electromagnetic, or infrared or semiconductor-using device, and any suitable combination of the foregoing. More specific examples of the computer-readable storage medium may include (non-exhaustive list): an electrical connection with one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory ( read-only memory (ROM)), an erasable programmable read-only memory (erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable read-only compact disk (CDROM), an optical storage unit, a magnetic storage In the context of this document, a computer readable storage medium may be any physically tangible medium that is a program for use by or in connection with a system, apparatus, or instruction execution unit include or r can save.

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.A computer readable signal medium may include a propagation data signal containing the computer readable program code in, for example, a baseband signal or as part of a carrier wave. Such a propagation signal may be formed in any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that may transmit, propagate, or transport a program for use by or in connection with a system, apparatus, or unit for executing instructions.

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.The computer code contained in a computer-readable medium may be transmitted by any suitable means including, but not limited to, wireless, wired, fiber optic, radio frequency (RF), etc., or any combination thereof.

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.Computer program code for performing operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java , Smalltalk , C ++ or the like and conventional procedural programming languages such as the "C" programming language or similar programming languages , The program code may be executed entirely on the user's computer, partly on the user's computer, as a standalone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or may be connected to an external computer (for example, via an Internet service provider over the Internet) are produced.

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.Aspects of the present invention are described below with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to the illustrative embodiments of the invention. It is understood that each block of the flowchart illustrations and / or block diagrams, as well as combinations of blocks in the flowchart illustrations and / or block diagrams, may be executed by computer program instructions. These computer program instructions may be a universal computer processor, a dedicated computer or any other programmable data processing device to generate a machine so that the instructions that are executed via the processor of the computer or other programmable data processing device include means for executing in the block or blocks of the flowchart and / or block diagram generate specified functions / actions.

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.These computer program instructions may also be stored in a computer readable medium that may direct a computer, other programmable computing device, or other entities to function in a particular manner so that the instructions stored in the computer readable medium produce an article of manufacture, including instructions corresponding to those described in U.S. Pat Block or functions / actions specified in the blocks of the flowchart and / or block diagram.

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.The computer program instructions may also be loaded onto a computer, other programmable computing device, or other device to cause a series of operations to be performed on the computer, the other programmable device, or the other devices to generate a process performed on the computer the instructions executed on the computer or other programmable device provide processes for executing the functions / actions specified in the block or blocks of the flowchart and / or block diagram.

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.The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or code region that includes one or more executable instructions for performing the specified logical function or functions. It should also be noted that in some alternative embodiments, the functions specified in the block may occur in a different order than that indicated in the figures. For example, two consecutively mapped blocks may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order depending on the functionality involved. It is also noted that each block of block diagrams and / or illustrations of flowcharts and combinations of blocks in the block diagrams and / or flowchart illustrations may be executed by dedicated hardware based systems or combinations of dedicated hardware and computer instructions having the stated functions or acts To run.

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.Thus, the illustrative embodiments may be used in many different types of computing environments, including distributed computing environments, a single computing device, or the like. In order to provide a framework for describing the specific elements and functions of the illustrative embodiments, the following will be described hereinafter 1 and 2 as exemplary environments in which aspects of the illustrative embodiments may be configured. It should be noted that the 1 to 2 are merely examples and are not intended to assure or imply any limitations as to the environments in which aspects or embodiments of the present invention may be practiced. Many changes in the illustrated embodiments may be made without departing from the spirit and scope of the present invention.

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.Referring to the figures now shows 1 4 is a pictorial representation of an exemplary distributed data processing system in which aspects of the illustrative embodiments may be configured. The distributed data processing system 100 may include a network of computers in which aspects of the illustrative embodiments may be configured. The distributed data processing system 100 contains at least one network 102 , which is the medium by means of which data transmission connections between different units and computers are provided within the distributed data processing system 100 connected to each other are the network 102 can contain connections such as cables, wireless data transmission connections or optical fibers.

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.In the example shown are a server 104 and a server 106 along with the storage unit 108 with the network 102 connected. In addition, the clients 110 . 112 and 114 also with the network 102 connected. With these clients 110 . 112 and 114 it can be, for example, personal computers, network computers or the like. In the example shown represents the server 104 the clients 110 . 112 , and 114 Data such as boot files, operating system images, and applications. The clients 110 . 112 and 114 are pictured Example clients of the server 104 , The distributed data processing system 100 may include other servers, clients, and other devices not shown.

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.In the example shown, it is the distributed data processing system 100 to the Internet, said the network 102 is a global collection of networks and gateways that use the Transmission Control Protocol / Internet Protocol (TCP / IP) protocol packet to communicate with each other. The main line of the Internet is high-speed data exchange between larger nodes or host computers, consisting of thousands of commercial, governmental, educational, and other computer systems that route data and messages. Of course, the distributed data processing systems 100 may also be configured to include a number of different network types, such as an intranet, a local area network (LAN), a wide area network (WAN), or the like. As stated above 1 as an example and not as a limitation on various embodiments of the present invention in terms of architecture. Therefore, the special in 1 are not considered to be limiting in terms of the environments in which the illustrative embodiments of the present invention may be practiced.

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.With reference to 2 In the drawings, there is shown a block diagram of an exemplary data processing system in which aspects of the illustrative embodiments may be configured. The data processing system 200 provides an example of a computer like the client 110 in 1 which may contain computer usable code or instructions that perform the processes for illustrative embodiments of the present invention.

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.In the example shown uses the data processing system 200 a hub architecture, including a north bridge and memory controller hub (NB / MCH) 202 (Northbridge and storage controller hub) and a south bridge and input / output (I / O) controller hub (SB / ICH) 204 (Southbridge and node for I / O control units). A processing unit 206 , a main memory 208 and a graphics processor 210 are with the NB / MCH 202 connected. The graphics processor 210 can via an accelerated graphics port (accelerated graphics port AGP) with the NB / MCH 202 be connected.

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.In the example shown here is the local area network (LAN) adapter 212 with the SB / ICH 204 connected. An audio adapter 216 , a keyboard and mouse adapter 220 , a modem 222 , a read-only memory (read only memory ROM) 224 , a hard disk drive (HDD) 226 , a CD-ROM drive 230 , Universal serial bus USB ports and other data transfer ports 232 as well as PCI / PCIe units 234 are over a bus 238 and a bus 240 with the SB / ICH 204 connected. PCI / PCIe devices may include, for example, Ethernet adapters, add-in cards, and notebook computer PC cards. PCI, unlike PCIe, uses a card bus controller. When ROM 224 For example, it may be a basic flash input / output system (BIOS).

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.The HDD 226 and the CD-ROM drive 230 are over the bus 240 with the SB / ICH 204 connected. The HDD 226 and the CD-ROM drive 230 For example, they may use integrated drive electronics (IDE) or a serial advanced technology attachment interface (SATA interface). A super I / O unit (Super I / O (SIO) device) 236 can with the SB / ICH 204 be connected.

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).An operating system is running on the processing unit 206 , The operating system provides control of a variety of components within the data processing system 200 in 2 ready and coordinated. As a client, the operating system may be a commercially available operating system such as "Microsoft Windows 7" (Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both). An object-oriented programming system, such as the Java programming system, may be executed in conjunction with the operating system and provides calls to the operating system from Java programs or applications running on the data processing system 200 (Java is a trademark of Oracle and / or its affiliates).

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.As a server, it can be in the data processing system 200 for example, be a computer system of the type "IBM ® eServer System p ®", which runs under the operating system "Advanced Interactive Executive (AIX ®) or the operating system" Linux "(IBM, eServer, System p and AIX are trademarks of International Business Machines Corporation in the US, other countries, or both, and LINUX is a registered trademark of Linus Torwalds in the US, other countries, or both). In the data processing system 200 it can be a symmetric multiprocessor (SMP) system, which is a symmetric multiprocessor (SMP) system a variety of processors in the processing unit 206 includes. Alternatively, a single processor system may be used.

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.Instructions for the operating system, the object-oriented programming system, and applications or programs reside on storage devices such as the HDD 226 and may be for execution by the processing unit 206 in the main memory 208 getting charged. The processes for illustrative embodiments of the present invention may be performed by the processing unit 206 by computer-usable program code residing in a memory such as the main memory 208 , the ROM 224 or for example in one or more peripheral units 226 and 230 can be located.

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.A bus system like the one in 2 shown bus 238 or bus 240 may include one or more buses. Of course, the bus system may be implemented by any type of communication fabric or architecture type providing a transfer of data between different components or units attached to the network or the architecture. A data transmission unit like the modem 222 or the network adapter 212 from 2 may include one or more units that transmit and receive data. For example, a memory may be the main memory 208 , the ROM 224 or a cache (as in the NB / MCH) 2 can be found.

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.It will be apparent to those skilled in the art that the hardware is incorporated into the 1 to 2 may vary depending on the version. Additional internal hardware or peripherals such as flash memory, corresponding non-volatile memory or optical hard disk drives, and the like may be used in addition to or instead of in the 1 to 2 used hardware. In addition, the processes of the illustrative embodiments may be applied to a multiple-processor data processing system other than the aforementioned SMP system without departing from the spirit and scope of the invention.

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.In addition, the data processing system 200 in the form of any number of different data processing systems, including client computer units, server computer units, a tablet computer, a laptop computer, a telephone or other communication device, a personal digital assistant (PDA), or the like. In some illustrative examples, the data processing system may be 200 may be a portable computing device configured with flash memory to provide nonvolatile memory for storing, for example, operating system files and / or user generated data. In essence, the data processing system can be 200 without any limitation in architecture to any known or later developed data processing system.

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.As mentioned above, the illustrative embodiments provide for advanced approximate computation mechanisms by means of a parallel computer system. The parallel computer system may be any known or later developed parallel computer system, such as a single-instruction-multiple-data (SIMD) system, multiple instructions, and multiple-instruction-multiple-data (MIMD) data. with uniform memory access (UMA) or with non-uniform memory access (NUMA), message passing interface (MPI) or the like. Thus, the parallel computer system includes a plurality of data processing units, processors, and the like. For example, in 1 one or more processors in one or more of the servers 104 and 106 , the clients 110 to 114 or the like. The parallel computer system may include all of these processors or a subset of these processors. In an illustrative embodiment, the parallel computer system includes a plurality of processors provided in a single data processing system, e.g. In any of the servers 104 . 106 or the clients 110 to 114 , In other illustrative embodiments, the parallel computer system includes a plurality of processors provided in a plurality of data processing systems, e.g. For example, both servers 104 as well as 116 , a combination of processors from a variety of clients 110 to 114 or a combination of processors from one or more of the servers 104 and 106 and one or more of the clients 110 to 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.The parallel computer system includes, in accordance with the mechanisms of the illustrative embodiments, an analysis coordination engine that coordinates the operation of groups of processing engines. In addition, the analysis coordination engine alters the composition and operation of these groups of processing engines based on an analysis of the results of the calculations of these groups of processing 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. 3 FIG. 12 shows an exemplary illustration of a parallel computer system having processing engine groupings and an analysis coordination engine configured in accordance with an illustrative embodiment. FIG. For ease of explanation, it is assumed that the parallel computer system 300 in 3 performs a single-instruction-multiple-data (SIMD) operation with each processing engine executing the same instruction or set of instructions to a different data item or set of data items. It should be understood that despite the adoption of such a SIMD process for the purposes of the examples provided herein, the illustrative embodiments are not limited to such. On the contrary, a process with multiple instructions and multiple data (MIMD) can also be performed by the parallel computer system 300 or other parallel processing operations may be used without departing from the spirit and scope of the illustrative embodiments.

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.As in 3 shown includes the parallel computer system 300 a stock of editing engines 310 , which in the example shown is a stock of processors in one or more data processing systems. Instead of an inventory of processors, the processing engines may instead include larger data processing units that include one or more processors or the like. Furthermore, the processing engines may be a collection of functional units, which may be computer logic that may be part of a conventional processor, graphics processor, or other type of computing device. The processing engines may also be a stock of dedicated accelerators for speeding up certain types of computations, e.g. SIMD units, compression / decompression accelerators, RegEx (regular expressions) accelerators, digital signal processing (DSP) processors, field programmable gate arrays (FPGA), etc. , In general, a processing engine can be any logic that handles primarily data processing rather than data storage or data exchange. The inventory is, in fact, a logical set of processing engines in which the processing engines themselves may be distributed through a plurality of data processing systems that are local or remote from one another and to which one or more data networks, such as a LAN, a WAN, the Internet or similar can be accessed. groups 330 to 350 of editing engines can be from the inventory of editing engines 310 to facilitate the calculation approximations by means of leading calculations according to the illustrative embodiments.

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.Certain of the groups 330 to 340 can be used to calculate an algorithm 305 on a big record 360 in a parallel manner. In the example shown, a first group corresponds 330 from machining engines to a relatively large set of processing engines, on the order of hundreds of thousands or thousands, and to perform full analytic calculations on each piece of data in the large data set 360 can be set up. The second group 340 from the editing engine corresponds to a relatively smaller set of editing engines, by two or more orders of magnitude smaller and to perform approximated calculations of the algorithm 305 on a relatively smaller subset of the large data set 360 like sample data from the big record 360 , can be furnished. The second group 340 For example, the processing engine may be set up to have 1 data element of 9000 data elements each in the large data set 360 edited, whereas the first group 330 Of editing engines can be set up to be any data element of the large data set 360 processed. While the first group 330 can be set up so that they each data element of the large data set 360 According to the illustrative embodiments, it may not process each data element but a subset of the data elements that is part of the large data set 360 corresponds to that of the first group 330 is provided for processing while other parts of the large record 360 through the operations of the second group 340 Approximately calculated by editing engines.

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.The parallel computer system 300 also includes an analysis coordination engine 320 that have a difference detection logic 321 , a new building logic 322 , a phase anticipation logic 324 , a logic for partial recalculation 326 , a logic for skipping calculations 328 and an engine for calculating the confidence interval 329 having. The operations of these diverse logic elements 321 to 329 will be described in more detail below. These logic elements 321 to 329 may be in software, hardware, or any combination of software and hardware. In an illustrative embodiment, the analysis coordination engine 320 comprise one or more processors, memory or the like, wherein the logic elements 321 to 329 through software instructions may be formed, which may be executed on the one or more processors using the memory. In other illustrative embodiments, the logic may be 321 to 329 stuck in the circuits of the analysis coordination engine 320 wired as circuit elements configured to perform the operations described below.

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.In operation, the engine is the analysis coordination 320 for the establishment of groupings 330 to 350 of editing engines within the inventory of editing engines 310 responsible. A first set of editing engines from the inventory 310 becomes a relatively large group 330 selected from editing engines, with complete analytical calculations on the record 360 be performed. The manner in which the machining engines are selected may take various forms, such as any selection, selection based on performance capabilities of the machining engines, current machining engine workloads, physical proximity, or any other Criterion that can be used to select machining engines and as will be readily apparent to those skilled in the art in view of the present description.

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.In addition, the engine chooses analysis coordination 320 a second set of editing engines from the inventory 310 for inclusion in the second group 340 for leading approximate calculations on a subset of the record 360 responsible is. The second group 340 is relative to the first group 330 smaller. In addition, the engine chooses analysis coordination 320 a set of editing engines for inclusion in the third group 350 out for comparing the results from the first group 330 carried out calculations and results of by the second group 340 responsible for calculating a difference between the results obtained. The difference is made by the analysis coordination engine 320 used to determine how the composition and functioning of the groups 330 to 340 of machining engines must be dynamically altered to provide a reasonably accurate approximate calculation on the data set 360 to obtain in the most effective way possible. This means that the analysis coordination engine 320 the operation of the groups 330 to 340 of machining engines based on the degree of accuracy of the approximate calculations and a measure of the confidence interval coordinated for these approximate calculations.

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.As mentioned above, the second group works 340 of editing engines on a subset of the record 360 such as sample data elements of the record 360 and is executed in a preceding operation. As a result, the second group 340 Processing Engines typically execute their statements and perform their calculations on data items much later in the record 360 occur as data elements by the first group 330 edited by editing engines. The first group 330 For example, editing engines can do calculations on data items 1 to 100 perform while the second group 340 Calculations on sample data up to the data element 100 or more at the same time as the first group 330 Edits to the data elements 1 to 100 performs. In many machine learning algorithms, calculations at a reduced input set can yield results that are good enough compared to the total input. The reason for this is that machine learning algorithms typically achieve more local optimal than globally optimal results. Using the non-negative matrix factorization algorithm (NMF) as an example, a randomly chosen approximate calculation matrix subset may be used to construct a list of hotkeys that closely correlates with the Cover results of the original matrix input. If it is acceptable that only a certain amount of keyboard assignments are correctly recognized by the approximate calculation, the use of a subset of processing engines (eg, the second group 340 ) to work on a subset of data the same performance at much higher speed and lower cost.

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.The third group 350 Editing Engines compares the results of the first group 330 from machining engines generated calculations and the results from through the second group 340 Calculations generated by editing engines. For example, the results of calculations are calculated by the first group 330 edit engines edited data item 1 in the record 360 with the results of calculations on by through the second group 340 editable data elements from editing engines 500 in the record 360 as one of the sample data items from the record 360 compared. The difference between the results can be the analysis coordination engine 320 provided that can compare the difference with one or more predetermined thresholds to determine whether the second group 340 ie, the leading group for the approximate calculations, results produced are sufficiently accurate and have a reasonable confidence. The estimation of the Confidence is a generic machine learning evaluation approach to estimate the likelihood of correctness of the output data. A simple method of estimating the confidence interval can be performed by monitoring the proportion of correct results among all results from previous iterations of the calculation. Such a proportion can be used as an estimate of the confidence level. An analytic model may also be used to determine the confidence interval offline based on the properties of the application. The output of the confidence interval estimate is used for comparison with the predetermined thresholds.

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.The engine for analysis coordination 320 can see the results of the third group 350 obtained comparisons and various operations to re-establish the groups 330 to 350 of machining engines and modify their operation so that a desired level of accuracy and a desired level of confidence in the overall results of the combination of the groups 330 to 340 obtained results of the calculations is achieved. Target of the analysis coordination engine 320 is it, the operation of the group 330 and the group 340 to coordinate that through the group 340 performed approximate calculations within a predetermined tolerance of the group 330 completed calculations and thus the results of the group 340 can be considered sufficiently accurate and reliable. In this way, the speed with which the group 340 their approximated computations can be used to provide a faster overall approximated computation by the algorithm 305 can be used.

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.The engine for analysis coordination 320 compares by means of the difference comparison logic 321 by the third group 350 From editing engines generated differences, or deltas, with one or more predetermined thresholds to determine if the results of the second group 340 performed approximate calculations with the full accuracy of the first group 330 from machining engines to complete full calculations. For example, the predetermined thresholds may include a value of 10%, thereby determining that the difference between those by the second group 340 performed approximate calculations of those by the first group 330 may differ by no more than 10% and may be considered sufficiently

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.If the results of the approximate calculations of the second group 340 of edit engines due to the comparison between the differences and one or more predetermined thresholds by the difference comparison logic 321 are not sufficiently accurate, the composition and operation of the second group 340 of editing engines through the refurbishment logic 322 be changed, and by the second group 340 Analytical calculations performed by editing engines can be at least partially under the control of partial recalculation logic 326 be recalculated.

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.If, for example, the first group 330 of processing engines herein as Group (I), the second group 340 of processing engines herein as group (J) and the third group 350 of machining engines is referred to herein as a group (K), the group (K) generates difference values between the calculation results of the groups (I) and (J). If that through the difference comparison logic 321 determined differences, z. For example, | | (I) - (J) |, give a difference greater than or equal to a predetermined threshold delta, ie | (I) - (J) | ≥ delta, so will one or more new-building logic 322 or logger for partial recalculation 326 started to perform a rebuild and recalculate operation.

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.For example, the refurbishment logic 322 the engine for analysis coordination 320 based on the differences between those of the first group (I) 330 and the second group (J) 340 results obtained the number of processing engines in the second group (J) 340 and the number of samples of the by the increased number of processing engines in the second group (J) 340 edited complete record 360 re-establish the difference between those of the first group (I) 330 and the second group (J) 340 obtained results so that the difference lies within a predetermined tolerance delta. This means that the refurbishment logic 322 additional editing engines from a remaining part 370 of editing engines in the inventory of editing engines 310 can not assign other groups yet 330 to 350 have been assigned. Assuming that the number of processing engines in the second group (J) 340 significantly smaller than those in the first group (I) 330 Thus, some editing engines from the first group (I) can 330 the second group (J) 340 be assigned without noticeable effect on the calculation speed and Accuracy of the first group (I) 330 occur. Other ways to assign and reassign the machining engines exist as long as the computational speed and accuracy of the first group (I) 330 are acceptable on the basis of certain predetermined metrics. This increases the number of editing engines in the second group 340 and allows them to sample a larger number of sample data items from the record 360 to work. As a result, a more accurate approximated calculation can be generated, which will be closer to the complete calculation given by the first group 330 performed by editing engines. The new execution speed of the second group 340 varies with changes in the number of processing engines as well as the amount of input data. The new building logic 322 make sure the second group 340 their calculations are still faster than the first group 330 and this still does in a preliminary way due to the sampling data being taken.

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.In this way, the accuracy of the second group (J) 340 That is, the leading machining engines, generated approximation kept within an acceptable tolerance, so that the results of the leading machining engines 340 can be used to calculate for a set of iterations of the overall analysis of the large data set 360 approximate. These approximated calculations are compared with those by the first group of editing engines (J) 330 combined analytical computations, in order for the large input data set 360 to provide approximate calculations of the analysis.

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.As another example, in the case of the analysis coordination engine 320 notes that the difference between the results of the calculation of the first and second groups (I) 330 and J) 340 greater than the predetermined tolerance, by means of the partial recalculation logic 326 a partial recalculation will be performed in a next execution phase. As a result, those which are essentially the second group (J) 340 backward from calculations performed by machining engines. The partial recalculation is done with an increased number of processing engines in the second group (J) 340 for example, by assigning additional processors from the unallocated processors 370 in stock of editing engines 310 , and with an increased amount of data, e.g. B. with a larger number of samples from the input data carried out.

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.If a next phase of the analytical calculations, ie a subsequent phase, in which another part of the algorithm 305 through the editing engines in the groups 330 to 340 is executed, which uses the results from the current phase, so in the case that the difference between the results by the second group (J) 340 and the first group (I) 330 Calculations carried out within the previously set tolerance Delta, through the engines for analysis coordination 320 triggered an interruption to the calculation of the first group (I) 330 stop and initialize them for a next phase. Then those through the second group (J) 340 generated results of the current phase of analytical calculations in the first group (I) 330 for the next calculation phase for use by the algorithm 305 be entered. In this way, the calculation speed is increased by providing a mechanism for performing computation phases in advance.

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.For everyone through the analysis coordination engine 320 from the third group 350 difference obtained from editing engines can be the analysis coordination engine 320 calculate a confidence interval value to determine how reliable the difference calculation is. This confidence interval value can be determined by the analysis coordination engine 320 be used to determine if the measure of confidence for the accuracy of the second group (J) 340 Calculations performed by machining engines are equal to or greater than a threshold previously set based on a confidence interval in the differences. If the measure of confidence is equal to or greater than a predetermined threshold, then the analysis coordination engine 320 instruct the first group (I) of editing engines or otherwise ensure that parts of their calculations, eg. The remaining repeats in which the first group (I) 330 Iterations should be skipped. Since then the approximation of the first group (J) 340 calculated sufficiently accurately, this means that there is no longer any need to calculate with each of the first group (I) 330 from editing engines performed iteration continue. Thus, the logic for skipping calculations 328 to be used the editing engines in the first group (I) 330 instructing them to interrupt the calculations of the current execution phase, the results of which either coincide with those of the second group (J) 340 to combine generated results or otherwise the results of the first group (I) 330 to discard and then proceed to the next calculation phase, if any.

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.By means of the mechanisms of the illustrative embodiments described herein, a highly parallel and effective leading mechanism is provided which can provide accurate approximations of computation results. While these Calculations "approximations", in reality, these approximations generally have a high accuracy with respect to complete analytical calculations. For example, it has been found through experimentation that for a nonnegative matrix factorization (NMF) algorithm (a major kernel in analysis workloads of data mining) with an approximate 10% approximate error allowed, the speed of the analytic performed by the mechanisms of the illustrative embodiments Calculations can increase by 400%. If, for example, a complete analytical calculation 800 Reduction of the number of rows by sampling to only 450 rows and use of the illustrative embodiments would result in an error of calculation of approximately 10%, but also a 400% faster calculation.

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.As mentioned above, the illustrative embodiments may be used in many different types of analytical computations and parallel computer systems. Analytical calculations can be broadly classified into descriptive analysis, predictive analysis and prescriptive analysis. The descriptive analysis uses calculations that use standard reporting functions (describing what has happened), ad hoc reporting functions (which describe how many, how often or where things happen), and query / in-depth operations (which describe exactly what the problem was) in Related. Predictive analysis uses calculations that involve alerts (indicating what action is needed), simulations (predicting what might happen), and predictive modeling (predicting what would happen in response to specific conditions). The prescriptive analysis uses calculations in terms of optimization (how to get the best result) and stochastic optimization (how to get the best result, including fluctuation effects). The illustrative embodiments may be used with processing engines that operate on workloads associated with any of these types of analytical computations or any other type of analytical computation that is not specifically described herein.

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.In order to further illustrate the operation of the illustrative embodiments, reference will now be made 4A to 4D Reference is made to provide exemplary mappings illustrating computation phases according to an illustrative embodiment under a variety of conditions. 4A FIG. 10 is an exemplary diagram illustrating the calculation phases for processing an example workload according to an illustrative embodiment. FIG. In the 4A phases shown 410 to 440 stand for the calculation phases which are followed by a large set of processing engines without execution of the preceding mechanisms of the illustrative embodiments as an approximation. Thus, the in 4A shown calculation phases a first phase 410 followed by a second phase 420 These two phases, for example, for another part of a large data set, as phases 430 and 440 be repeated.

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. 4B however, shows the same set of calculation phases with execution of the leading approximation mechanisms of the illustrative embodiments. As in 4B 1 and 2, the first and third phases are not performed by complete analytic computations on a complete dataset, but by approximate leading computations such as by a second group (J) of processing engines. The approximation is made with a reasonable confidence and accuracy by a relatively smaller group of processing engines (J) 340 carried out. Consequently, this only leads to a performance improvement indicated by an arrow due to the introduction of an acceptable level of error, indicated by one or more predetermined thresholds 450 is clarified.

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.at 4C is an exemplary mapping of calculation phases in the event that a difference between the first group (I) and the second group (J) of processing engines is equal to or greater than an acceptable value, such as one or more predetermined ones Thresholds can be specified. As in 4C in this case, the analysis coordination engine may, in such a case, compute the first phase with more input data, possibly using additional processing engines (J) 460 shown) to reduce the difference to the acceptable range indicated by one or more predetermined thresholds. The increases in the amount of data to be processed can increase the time to perform the calculations, which is explained by the relatively larger phase representations in FIG 4C is illustrated.

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.at 4D it is an exemplary mapping of a computation in case a partial recalculation is necessary due to a confidence interval value for the approximated results that is below a desired value for the confidence interval. In the example shown is in phase 410 found that the If some of the approximate calculation results have some wrong results that reduce the confidence interval value for the approximation, and the analysis coordination engine notes that recalculation of the approximated results is in phase 420 necessary is. As a result, the analysis coordination engine waits for the first group (I) of processing engines to finish processing their current workload, as indicated by the "idle state" section in the figure. Subsequently, the partial calculation of phase 420 carried out. During the third phase 430 The second group (J) of editing engines will be re-set up as described above 4C to comply with the required accuracy and confidence interval value. This means that (J) in phase 2 ( 420 ) performs a partial recalculation since some of the input data from Phase 1 ( 410 ) were incorrect. Once the partial recalculation in phase 2 completed, phase 3 ( 430 ) with the in 4C shown new equipment. It should be noted that the length of the phase 430 in 4D that of the phase in 4C equivalent. Although in each in the 43 to 4D In the scenario shown, the performance of the mechanisms of the illustrative embodiments is reduced in a required recalculation, the performance is compared with that in FIG 4R The mechanism shown in which the illustrative embodiments are not formed, in each case still higher.

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). 5 FIG. 12 is an exemplary flowchart showing the operation of the analysis coordination engine according to an illustrative embodiment. FIG. As in 5 As shown, operation begins by selecting groups of processing engines to perform full analytical calculations, approximated leading analytical calculations, and differential calculation (step 510 ). Workloads are provided to groups of editing engines (step 520 ), wherein the set (s) of complete analytical computation engines perform complete analytical computations on one or more portions of an input dataset, the approximate precomputation analysis engines performing analytical computations on a sample dataset of one or more portions of the input dataset and the difference-processing engines determine differences between the results generated by the other groups of processing engines (step 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).Assuming that the group (s) for the complete analytical computation are referred to as group (I), the processing engines for the approximate leading computation as group (J) and the processing engines for discriminating as group (k) , it is determined whether (I) has overtaken (J), that is, whether (I) has completed a calculation phase previously executed by (J); z. B. has caught up with (I) at calculation phase 1 (J) while (J) is already at calculation phase 3 has passed (step 540 ). In other words, (I) has completed a loop iteration that is within a range of iterations already processed by (J). If not, the operation returns to step 540 and continues to monitor whether a situation occurs where (I) is catching up at a certain calculation phase (J). If (I) has obtained (J) at this calculation phase, a comparison of the results of (I) and (J) is made to generate one or more difference values (step 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.The analysis coordination engine determines whether the difference is less than one or more predetermined thresholds (in this case, threshold delta) (step 560 ). If not, the analysis coordination engine (J) re-establishes to meet the one or more predetermined thresholds (step 570 ). For example, the re-establishment may involve adding additional processing engines to (J) and / or increasing the amount of data from the input data set at which the approximated leading calculations are performed. In addition, a confidence interval value is updated in conjunction with the results of the approximate leading calculation (step 580 ). The execution then returns to step 540 so that the recalculation of the approximate leading calculations can be performed.

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).In response to the difference being less than the one or more thresholds or not, a confidence interval value is updated in conjunction with the results of the approximate leading calculation (step 590 ) and determines if this confidence interval value is less than a predetermined threshold (step 600 ). In addition, in the case of parallel operation, if the results of the current calculation phase are to be used in a later calculation phase and the difference is less than the one or more thresholds, the results of the current calculation phase may be forwarded for use by the algorithm for later calculation phases be (step 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.If the confidence interval value is less than the previously set threshold (step 600 ), nothing is done and execution returns 540 back. If the range of confidence of the approximated calculations is sufficient, ie, the confidence interval value is equal to or greater than the predetermined threshold (step 600 ), the analysis coordination engine instructs the group (s) for the complete analytical computation to skip at least part of their computations to be performed (step 620 ). The above-described embodiment may continue until an execution terminating condition such as all input data sets have been processed, an unrecoverable error occurs in the execution of the algorithm, or the like.

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.Thus, the illustrative embodiments provide mechanisms for effective leading-in approximated calculations by means of groups of processing engines and the coordination between these groups of processing engines. The illustrative embodiments greatly increase the overall performance of analytical calculations by using the speed of approximate calculations and determining the accuracy and confidence level of the approximated calculations as compared to complete analytical calculations.

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.As noted above, it should be noted that the illustrative embodiments may be embodied as a complete hardware embodiment, a complete software embodiment, or an embodiment that includes both hardware and software elements. In an exemplary embodiment, the mechanisms of the illustrative examples are embodied as software or program code, including, but not limited to, firmware, resident software, microcode, and so forth.

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.A data processing system suitable for storing and / or executing program code includes at least one processor directly or indirectly connected to memory elements via a system bus. The memory elements may include local memory used during the actual execution of the program code, mass memories and latches that provide temporary storage of at least some program code to reduce the number of code fetch operations from the mass memory during execution.

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.Input / output or I / O units (including, but not limited to, keyboards, displays, pointing devices, etc.) may be connected to the system either directly or through intermediate I / O controllers. Network adapters may also be connected to the system so that the data processing system is connected to other data processing systems or remotely located printers or storage units through private or public network intermediaries. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.

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.The description of the present invention has been presented for purposes of illustration and description, and is not to be construed as exhaustive or limited to the invention in the form disclosed. Many changes and variations will be apparent to those skilled in the art. The embodiment has been chosen and described in order to best describe the principles of the invention, the practical application, and to enable others skilled in the art to appreciate the invention for a variety of embodiments with various modifications as appropriate for the particular particular use.

Claims (15)

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.A method in a data processing system for performing approximate leading calculations, the method comprising: Selecting a first group of processing engines from a collection of processing engines to perform full calculations on a complete set of input data; Selecting a second group of processing engines from a stock of processing engines to perform calculations on a trial subset of the input data; Selecting a third group of processing engines from the inventory of processing engines to calculate a difference of the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines; and Rebuilding the second set of editing engines based on the difference generated by the third group of editing engines. Verfahren nach Anspruch 1, wobei die zweite Gruppe von Bearbeitungs-Engines genäherte Berechnungen an dem Probeteilsatz der Eingangsdaten durchführt.The method of claim 1, wherein the second group of processing engines performs approximate calculations on the trial subset of the input data. 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.The method of claim 2, wherein re-establishing the second group of processing engines based on the difference generated by the third group of processing engines re-sets the second group of processing engines based on a degree of accuracy of the approximate calculations and a Measure of a confidence interval of these approximated calculations. 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.The method of claim 1, wherein selecting the first group of processing engines from a collection of processing engines to perform full calculations on a complete set of input data comprises: selecting a group of processing engines from the inventory of processing engines based on at least one of the following: any selection process, a selection of machining engines based on the performance of the machining engines, current workloads of the machining engines, or the physical proximity of the machining engines. 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.The method of claim 1, wherein re-establishing the second group of processing engines in response to the difference in the calculation results not being within a predetermined tolerance indicated by one or more thresholds. 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.The method of claim 5, wherein in response to the difference of the calculation results not being within the predetermined tolerance, the method further comprises starting a partial recalculation by the newly established second group of processing engines in a next computational phase. 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.The method of claim 1, wherein in response to the difference in the calculation results being within a predetermined tolerance indicated by one or more thresholds, the method further comprises: Generating an interrupt to interrupt the calculations performed by the first group of processing engines; and Using the results of the calculations of the second group of processing engines as results of a calculation phase of code executed by a first and second group of processing engines. 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.A computer program product comprising a computer readable storage medium having a computer readable program stored thereon, the computer readable program when executed on a computer unit causing the computer unit to: Selecting a first group of processing engines from a collection of processing engines to perform complete processing on a complete set of input data; Selecting a second group of processing engines from the inventory of processing engines to perform processing on a trial subset of the input data; Selecting a third group of processing engines from the inventory of processing engines to calculate a difference of the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines; and Rebuilding the second set of editing engines based on the difference generated by the third group of editing engines. Computerprogrammprodukt nach Anspruch 8, wobei die zweite Gruppe von Bearbeitungs-Engines genäherte Berechnungen an dem Probeteilsatz der Eingangsdaten durchführt.The computer program product of claim 8, wherein the second group of processing engines performs approximate calculations on the trial subset of the input data. 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.The computer program product of claim 9, wherein the computer readable program causes the processing unit to reestablish the second group of processing engines based on the difference generated by the third group of processing engines by setting the second group of processing engines based on a degree of accuracy of the approximate calculations and a measure of a confidence interval of these approximated calculations. 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.The computer program product of claim 8, wherein the computer-readable program causes the processing unit to select a first group of processing engines from a collection of processing engines to perform full computations on a complete set of input data by using a group of processing engines Inventory of machining engines based on at least one of the following: any selection method, a selection of machining engines based on the performance of the machining engines, current workloads of the machining engines, or the physical proximity of the machining engines , 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.The computer program product of claim 8, wherein the computer-readable program causes the computer unit to re-establish the second group of processing engines in response to the difference in the calculation results not being within a predetermined tolerance specified by one or more thresholds. 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.The computer program product of claim 12, wherein in response to the difference in the calculation results not being within the predetermined tolerance, the computer readable program further causes the computer unit to start a partial recalculation by the newly established second group of processing engines in a next calculation phase. 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.The computer program product of claim 8, wherein in response to the difference in the calculation results being within a predetermined tolerance specified by one or more thresholds, the computer-readable program further causes the computer unit to: Generating an interrupt to interrupt the calculations performed by the first group of processing engines; and using the results of the calculations of the second group of processing engines as results of a calculation phase of code executed by a first and second group of processing engines. 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.A data processing system comprising: a coordinator engine; and a set of editing engines connected to the coordinator engine, where the coordinator engine is: select a first group of edit engines from the inventory of edit engines to perform full edits on a complete set of input data; select a second group of processing engines from a stock of processing engines to perform processing on a trial subset of input data; selects a third group of processing engines from the inventory of processing engines to determine a difference of the calculation results between first calculation results generated by the first group of processing engines and second calculation results generated by the second group of processing engines; and re-establish the second set of edit engines based on the difference created by the third group of edit engines.
DE102012204167A 2011-03-29 2012-03-16 Advance approximated calculations Ceased DE102012204167A1 (en)

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 (en) 2012-10-04

Family

ID=46052021

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012204167A Ceased DE102012204167A1 (en) 2011-03-29 2012-03-16 Advance approximated calculations

Country Status (4)

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

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
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 (en) * 2018-07-06 2018-12-11 中国科学院计算技术研究所 Computing engines selection method and more computing engines platforms based on this method
CN111583042B (en) * 2020-05-13 2023-08-18 恒生电子股份有限公司 Method, system, storage medium and electronic device for calculating option real-time data
CN114693450A (en) * 2022-03-30 2022-07-01 蚂蚁区块链科技(上海)有限公司 Intelligent contract-based calculating, updating and reading method and device and electronic equipment
CN114693451A (en) * 2022-03-30 2022-07-01 蚂蚁区块链科技(上海)有限公司 Intelligent contract-based computing method and device and electronic equipment

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH076146A (en) 1993-06-18 1995-01-10 Fujitsu Ltd Parallel data processing system
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
US7606804B2 (en) 2004-03-15 2009-10-20 Emc Corporation 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
WO2010045511A2 (en) * 2008-10-15 2010-04-22 Gal Zuckerman Methods and systems for delivering content
JP5470819B2 (en) 2008-11-28 2014-04-16 富士通株式会社 Spatial data output processing method, program thereof, and data processing system
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
GB2489562B (en) 2017-01-04
US20120254604A1 (en) 2012-10-04
US8566576B2 (en) 2013-10-22
CN102736896A (en) 2012-10-17
US8510546B2 (en) 2013-08-13
US20120254603A1 (en) 2012-10-04
GB201204629D0 (en) 2012-05-02
GB2489562A (en) 2012-10-03
CN102736896B (en) 2015-03-04

Similar Documents

Publication Publication Date Title
DE102012204167A1 (en) Advance approximated calculations
DE112017006806T5 (en) REDUCE DATA FLOW DELAYS IN A DATA STREAMING APPLICATION
DE112019003405T5 (en) AUTOMATIC FINE TUNING DEVICE FOR EMBEDDING CLOUD MICRO-SERVICES
DE112019004076T5 (en) DECENTRALIZED DISTRIBUTED DEEP LEARNING
DE112016005536T5 (en) DETERMINING THE ORDER OF A CONSTRUCTION OF A NEURONAL NETWORK
DE202012013462U1 (en) Data processing in a Mapreduce framework
DE202016008045U1 (en) Distributed storage system with replica site selection
DE112013000752T5 (en) Manage processing elements in a streaming data system
DE102013209868A1 (en) Querying and integrating structured and unstructured data
DE102012216029A1 (en) A SCALABLE ADAPTABLE MAP REDUCE FRAMEWORK WITH DISTRIBUTED DATA
DE112019002235T5 (en) INTEGRATING A DICTIONARY EDITING SYSTEM IN A TEXT MINING
DE112012005030T5 (en) Dynamically configurable placement engine
DE112013001747T5 (en) Optimizing the linking of instructions
DE112013005993T5 (en) Method, apparatus and computer readable medium for optimal determination of data subsets
DE112013000966T5 (en) Apparatus, program and method for clustering a plurality of documents
DE112017008151T5 (en) CIRCUITS OF LESS DEPTH THAN QUANTUM CLASSIFICATORS
DE112013001735T5 (en) Optimizing the linking of instructions
DE202014010885U1 (en) Acceleration based on cached flows
DE112021002572T5 (en) MULTI-CRITERIAL OPTIMIZATION OF APPLICATIONS
DE112017007361T5 (en) SUPPORTING INTERACTIVE TEXT MINING PROCESS WITH DIALOG IN NATURAL LANGUAGE
DE112018002266T5 (en) Cognitive data filtering for storage environments
DE112020004116T5 (en) DYNAMIC CHANGING THE PARALLELITY OF A TASK IN A PIPELINE
DE112021000338T5 (en) OUTSOURCE THE STATISTICS COLLECTION
DE112021000485T5 (en) System for fast interactive exploration of mass data
DE112021002883T5 (en) AUTOMATED FEEDBACK AND CONTINUOUS LEARNING FOR QUERY OPTIMIZATION

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