DE102017213160A1 - Compilation for node device GPU-based parallel processing - Google Patents

Compilation for node device GPU-based parallel processing Download PDF

Info

Publication number
DE102017213160A1
DE102017213160A1 DE102017213160.8A DE102017213160A DE102017213160A1 DE 102017213160 A1 DE102017213160 A1 DE 102017213160A1 DE 102017213160 A DE102017213160 A DE 102017213160A DE 102017213160 A1 DE102017213160 A1 DE 102017213160A1
Authority
DE
Germany
Prior art keywords
task
gpu
routine
node device
node
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.)
Granted
Application number
DE102017213160.8A
Other languages
German (de)
Other versions
DE102017213160B4 (en
Inventor
Henry Gabriel Victor Bequet
Huina Chen
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.)
SAS Institute Inc
Original Assignee
SAS Institute Inc
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
Priority claimed from US15/422,285 external-priority patent/US9760376B1/en
Application filed by SAS Institute Inc filed Critical SAS Institute Inc
Publication of DE102017213160A1 publication Critical patent/DE102017213160A1/en
Application granted granted Critical
Publication of DE102017213160B4 publication Critical patent/DE102017213160B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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]
    • 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
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Abstract

Eine Vorrichtung kann einen Prozessor und Speicher umfassen, um Anweisungen zu speichern, die den Prozessor veranlassen, Operationen durchzuführen, einschließlich: in Reaktion auf eine Bestimmung, dass eine GPU einer Knotenvorrichtung verfügbar ist, Bestimmen, ob eine Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die GPU zu erzeugen, um eine Durchführung von mehreren Instanzen einer Aufgabe der Taskroutine wenigstens teilweise parallel ohne Abhängigkeiten dazwischen zu veranlassen; und in Reaktion auf eine Bestimmung, dass die Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen: Verwenden einer Umwandlungsregel, um die Taskroutine in die GPU-Taskroutine umzuwandeln; Kompilieren der GPU-Taskroutine zur Ausführung durch die GPU; und Zuweisen der Durchführung der Aufgabe mit einer Datensatzpartition an die Knotenvorrichtung, um die Durchführung der mehreren Instanzen mit der Datensatzpartition durch die GPU zu ermöglichen.A device may include a processor and memory to store instructions that cause the processor to perform operations, including: in response to a determination that a GPU is available to a node device, determining whether a task routine can be compiled to a GPU Create task routine for execution by the GPU to cause execution of multiple instances of a task routine task at least partially in parallel without dependencies therebetween; and in response to a determination that the task routine can be compiled to generate the GPU task routine: using a conversion rule to transform the task routine into the GPU task routine; Compiling the GPU task routine for execution by the GPU; and assigning the task with a record partition to the node device to allow the GPU to perform the multiple instances with the record partition.

Description

QUERVERWEIS AUF VERWANDTE ANMELDUNGENCROSS-REFERENCE TO RELATED APPLICATIONS

Diese Anmeldung beansprucht den Vorteil der Priorität gemäß 35 U.S.C. &119(e) aus der vorläufigen US-Patentanmeldung Serien-Nr. 62/289,484, eingereicht am 1. Februar 2016, vorläufigen US-Patentanmeldung Serien-Nr. 62/379,512, eingereicht am 25. August 2016, und vorläufigen US-Patentanmeldung Serien-Nr. 62/394,411, eingereicht am 14. September 2016, deren Gesamtheit hierin durch Bezugnahme aufgenommen ist. Diese Anmeldung ist eine Fortsetzung von und beansprucht den Vorteil der Priorität gemäß 35 U.S.C. §120 aus der US-Patentanmeldung Serien-Nr. 15/422,154, die gleichzeitig hiermit am 1. Februar 2017 eingereicht wurde, deren Gesamtheit hierin durch Bezugnahme aufgenommen ist.This application claims the benefit of priority according to 35 U.S.C. & 119 (e) from US provisional patent application serial no. No. 62 / 289,484 filed on Feb. 1, 2016, US Provisional Patent Application Ser. No. 62 / 379,512, filed on August 25, 2016, and US provisional patent application serial no. 62 / 394,411, filed September 14, 2016, the entirety of which is incorporated herein by reference. This application is a continuation of and claims the benefit of priority according to 35 U.S.C. §120 from the US patent application serial no. 15 / 422,154, filed concurrently herewith on Feb. 1, 2017, the entirety of which is incorporated herein by reference.

HINTERGRUNDBACKGROUND

Es ist zunehmend üblicher geworden, Gitter von zahlreichen Knotenvorrichtungen zu verwenden, um Analysen von großen Datensätzen (z. B. üblicherweise als „Big Data” bezeichnet) in einer verteilten Weise durchzuführen, in der Aufgaben von Analyseroutinen wenigstens teilweise parallel über mehrere ausgewählte der Knotenvorrichtungen durchgeführt werden. Beim Betrieb derartiger Gitter gibt es oftmals konkurrierende Ziele bei der Zuweisung der Aufgaben von Analyseroutinen an die Knotenvorrichtungen, einschließlich des Ziels, die Verarbeitungsressourcen jeder Knotenvorrichtung möglichst vollständig und ununterbrochen zu nutzen, und des Ziels, die Verarbeitungs- und Speicherressourcen jeder Knotenvorrichtung sowie die Netzbandbreitenressourcen des Gitters effektiver zu nutzen. Was zur Komplexität der Adressierung derartiger konkurrierender Ziele hinzukommt, ist die übliche Praxis, Gitterressourcen zu teilen, indem veranlasst wird, dass die Aufgaben von mehreren Analyseroutinen gleichzeitig von den Knotenvorrichtungen des Gitters durchgeführt werden. Ein klassischer Ansatz zur Zuweisung von Aufgaben besteht darin, einfach die nächste durchzuführende Aufgabe der Knotenvorrichtung zuzuweisen, die die nächste mit verfügbaren Verarbeitungsressourcen ist. Leider bedeutet dieser klassische Ansatz eine Entscheidung, erhebliche Ineffizienzen bei der Verwendung von Speicher- und Netzbandbreiten zu ermöglichen.It has become increasingly common to use lattices from numerous node devices to perform analyzes of large data sets (eg, commonly referred to as "big data") in a distributed fashion in which tasks of analysis routines are at least partially parallel over a plurality of selected ones of the node devices be performed. In the operation of such grids, there are often competing goals in assigning the tasks of analysis routines to the node devices, including the goal of using the processing resources of each node device as fully and uninterrupted as possible, and the destination, the processing and storage resources of each node device, and the network bandwidth resources of the node device To use grids more effectively. What is added to the complexity of addressing such competing targets is the common practice of sharing lattice resources by causing the tasks of multiple analysis routines to be concurrently performed by the node devices of the lattice. A classic approach to assigning tasks is simply to assign the next task to be performed to the node device that is closest to available processing resources. Unfortunately, this classic approach is a decision to allow significant inefficiencies in the use of memory and network bandwidths.

KURZFASSUNGSHORT VERSION

Diese Kurzfassung ist nicht dazu bestimmt, nur Schlüssel- oder wesentliche Merkmale des beschriebenen Gegenstands zu identifizieren, noch soll sie isoliert verwendet werden, um den Schutzbereich des beschriebenen Gegenstands zu bestimmen. Der Gegenstand sollte unter Bezugnahme auf geeignete Teile der gesamten Beschreibung dieses Patents, beliebige oder alle Zeichnungen und jeden Anspruch verstanden werden.This summary is not intended to identify only key or essential features of the described subject matter, nor should it be used in isolation to determine the scope of protection of the described subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this patent, any or all of the drawings, and any claims.

Eine Vorrichtung kann einen Prozessor und einen Speicher umfassen, um Anweisungen zu speichern, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor veranlassen, für jede Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen eine Zuweisung der Durchführung einer ersten Aufgabe mit einem erster Datensatz abzuleiten, wobei: der erste Datensatz in eine Mehrzahl von Partitionen aufteilbar ist; eine erste Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer ersten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen; und eine zweite Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer zweiten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen. Der Prozessor kann veranlasst werden zum Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung zu veranlassen; Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu veranlassen; Empfangen von einer Anzeige von der ersten Knotenvorrichtung der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung, so dass die erste Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen; Verzögern der Zuweisung der Durchführung einer zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung nach Empfangen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung bis zu einer vorbestimmten Zeitperiode, trotz Bereitschaft der zweiten Aufgabe, die auf der zweiten Partition durchgeführt werden soll, und trotz Verfügbarkeit des ersten Knotens als Ergebnis der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition; und Bestimmen, ob eine Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung, so dass die zweite Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen, von der zweiten Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode empfangen wird. In Reaktion auf den Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode kann der Prozessor veranlasst werden zum Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um Zugriffe auf wenigstens einen Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu ermöglichen; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu vermeiden. In Reaktion auf einen fehlenden Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode kann der Prozessor veranlasst werden zum Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu veranlassen.A device may include a processor and memory for storing instructions that, when executed by the processor, cause the processor to derive an assignment of performing a first task with a first set of data for each node device of a plurality of node devices the first record is divisible into a plurality of partitions; a first node device is assigned to the plurality of node devices to perform the first task with a first partition of the plurality of partitions of the first data set; and a second node device is assigned to the plurality of node devices to perform the first task with a second partition of the plurality of partitions of the first data set. The processor may be caused to transmit an indication of the assignment of performing the first task with the first partition to the first node device to cause the first task to perform the first task by the first node device and to store at least a portion of the first task cause first partition within the volatile memory of the first node device; Transmitting an indication of the assignment of performing the first task with the second partition to the second node device to cause the second task to perform the first task with the second partition, and storing at least a portion of the second partition within the volatile memory to cause the second node device; Receiving, by the first node device, an indication from the first node device of completion of performing the first task with the first partition, such that the first node device is available to assign the performance to another task; Delaying the assignment of the performance of a second task on the second partition to the first node device upon receiving the indication of the completion of the performance of the first task with the first partition by the first node device for a predetermined period of time, despite the second task being performed on the second partition second partition is to be performed, and despite availability of the first node as a result of completion of the execution of the first task with the first partition; and determining whether an indication of the completion of performing the first task with the second partition by the second node device so that the second node device is available to assign the performance of another task is received by the second node device within the predetermined time period. In response to receiving the indication of completion of the first task with the second partition by the second node device within the predetermined time period, the processor may be caused to allocate the second task on the second partition to the second node device for accessing at least one of the second task Allow part of the second partition within the volatile memory of the second node device; and transmitting to the second node device an indication of the assignment of performing the second task on the second partition to avoid fetching the second partition by the first node device. In response to a failure of the second task to terminate the first task with the second partition by the second node device within the predetermined period of time, the processor may be caused to allocate the second task on the second partition to the first node device; and transmitting to the first node device an indication of the assignment of performing the second task on the second partition to cause the second partition to fetch the second partition.

Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich Ableiten der vorbestimmten Zeitperiode von wenigstens einer Messung einer Zeitdauer zwischen der Übertragung einer Zuweisung der Durchführung der ersten Aufgabe an eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen und dem Empfang einer Anzeige der Beendigung der Durchführung der ersten Aufgabe von der Knotenvorrichtung.The processor may be caused to perform operations including deriving the predetermined period of time from at least one measurement of a time period between the transmission of an assignment of performing the first task to a node device of the plurality of node devices and receiving an indication of completion of performing the first task of the node device.

Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich: Bestimmen einer Anzahl von Knotenvorrichtungen der Mehrzahl von Knotenvorrichtungen, die verfügbar sind, um die erste Aufgabe durchzuführen; und Ableiten einer Aufteilung des ersten Datensatzes in die Mehrzahl von Partitionen des ersten Datensatzes basierend auf der Anzahl von Knotenvorrichtungen und Metadaten beschreibend für eine Weise, in der der erste Datensatz organisiert ist. Der erste Datensatz kann innerhalb einer oder mehreren Speichervorrichtungen gespeichert werden; der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich Abrufen der Metadaten aus der einen oder den mehreren Speichervorrichtungen; die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen, die erste Partition von der einen oder den mehreren Speichervorrichtungen abzurufen; und die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, die zweite Partition von der einen oder den mehreren Speichervorrichtungen abzurufen.The processor may be caused to perform operations, including: determining a number of node devices of the plurality of node devices that are available to perform the first task; and deriving a division of the first record into the plurality of partitions of the first record based on the number of node devices and metadata descriptive of a manner in which the first record is organized. The first record may be stored within one or more storage devices; the processor may be caused to perform operations, including retrieving the metadata from the one or more storage devices; transmitting the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to retrieve the first partition from the one or more memory devices; and transmitting the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to retrieve the second partition from the one or more storage devices.

Die Vorrichtung kann wenigstens eine flüchtige Speicherkomponente umfassen, die mit dem Prozessor gekoppelt ist, und der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich Zuweisen an den Prozessor der Durchführung der ersten Aufgabe mit einer dritten Partition der Mehrzahl von Partitionen des ersten Datensatzes; Speichern von wenigstens einem Teil der dritten Partition innerhalb der wenigstens einen flüchtigen Speicherkomponente; und Durchführen der ersten Aufgabe mit der dritten Partition.The apparatus may include at least one volatile memory component coupled to the processor and the processor may be caused to perform operations, including assigning to the processor the performance of the first task with a third partition of the plurality of partitions of the first data set; Storing at least a portion of the third partition within the at least one volatile memory component; and performing the first task with the third partition.

Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich, für jede Knotenvorrichtung einer Teilmenge der Mehrzahl von Knotenvorrichtungen, Ableiten einer Zuweisung, um eine der Mehrzahl von Partitionen des ersten Datensatzes aus einer oder mehreren Speichervorrichtungen abzurufen und zu speichern, um die Verwendung jeder Knotenvorrichtung der Teilmenge als eine Sicherungsknotenvorrichtung zu ermöglichen, um auf einen Ausfall von einer der Knotenvorrichtungen der Mehrzahl von Knotenvorrichtungen zu reagieren, wobei: eine dritte Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer dritten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen; und der dritte Knoten zugewiesen ist, um die zweite Partition von der einen oder den mehreren Speichervorrichtungen abzurufen und zu speichern, um die Verwendung der dritten Knotenvorrichtung als eine Sicherungsknotenvorrichtung zu ermöglichen, um auf einen Ausfall der zweiten Knotenvorrichtung zu reagieren. Der Prozessor kann veranlasst werden, während der vorbestimmten Zeitperiode eine Anzeige von der dritten Knotenvorrichtung der Beendigung der Durchführung der ersten Aufgabe mit der dritten Partition durch die dritte Knotenvorrichtung zu empfangen, so dass die dritte Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen. In Reaktion auf den Empfang der Anzeige der Beendigung der ersten Aufgabe mit der dritten Partition durch die dritte Knotenvorrichtung während der vorbestimmten Zeitperiode und in Reaktion auf einen fehlenden Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode kann der Prozessor veranlasst werden zum Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die dritte Knotenvorrichtung; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die dritte Knotenvorrichtung.The processor may be caused to perform operations, including, for each node device of a subset of the plurality of node devices, deriving an assignment to retrieve and store one of the plurality of partitions of the first data set from one or more memory devices to determine the use of each node device Enabling subset as a backup node device to respond to a failure of one of the node devices of the plurality of node devices, wherein: a third node device is assigned to the plurality of node devices to perform the first task with a third partition of the plurality of partitions of the first data set ; and the third node is assigned to retrieve and store the second partition from the one or more storage devices to enable use of the third node device as a backup node device to respond to a failure of the second node device. The processor may be caused to receive an indication from the third node device of the termination of performing the first task with the third partition by the third node device during the predetermined time period such that the third node device is available to assign the performance to another task. In response to receiving the indication of completion of the first task with the third partition by the third node device during the predetermined time period and in response to failure to receive the indication of completion of the first task with the second partition by the second node device within the predetermined time period For example, the processor may be caused to assign execution of the second task on the second Partition to the third node device; and transmitting to the third node device an indication of the assignment of performing the second task on the second partition.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können die Verwendung der ersten und zweiten Partitionen als Eingaben für Durchführungen der ersten Aufgabe umfassen, um entsprechende Partitionen eines zweiten Datensatzes zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition kann die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe umfassen, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Abrufen der ersten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der ersten Partition, die innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Abrufen der zweiten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der zweiten Partition, die innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition, während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nicht-flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include using the first and second partitions as inputs to implement the first task to create corresponding partitions of a second data set; and performing the second task on the second partition may include using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: retrieve the first partition from one or more storage devices; Using at least a portion of the first partition stored within the volatile memory of the first node device as an input for performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: retrieve the second partition from one or more storage devices; Using at least a portion of the second partition stored within the volatile memory of the second node device as an input for performing the first task by the second node device; and transmitting the indication of completion of performing the first task with the second partition while leaving at least a portion of the second partition stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können Durchführungen der ersten Aufgabe umfassen, um die ersten und zweiten Partitionen als Ausgaben der ersten Aufgabe unter Verwendung entsprechender Partitionen eines zweiten Datensatzes als Eingaben zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition kann die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe umfassen, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Erzeugen der ersten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Erzeugen der zweiten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition; während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nicht-flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include implementations of the first task to generate the first and second partitions as outputs of the first task using corresponding partitions of a second data set as inputs; and performing the second task on the second partition may include using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: generate the first partition as an output of performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: generate the second partition as an output of performing the first task by the second node device; and transmitting the indication of termination of performance of the first task with the second partition; while at least a portion of the second partition remains stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Ein Computerprogrammprodukt, das in einem nicht-transitorischen maschinenlesbaren Speichermedium konkret ausgeführt ist, wobei das Computerprogrammprodukt Anweisungen umfasst, die betriebsfähig sind, um zu veranlassen, dass ein Prozessor Operationen durchführt, einschließlich, für jede Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, Ableiten einer Zuweisung der Durchführung einer ersten Aufgabe mit einem ersten Datensatz, wobei: der erste Datensatz in eine Mehrzahl von Partitionen aufteilbar ist; eine erste Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer ersten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen; und eine zweite Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer zweiten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen. Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich: Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung zu veranlassen; Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu veranlassen; Empfangen von einer Anzeige von der ersten Knotenvorrichtung der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung, so dass die erste Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen; Verzögern der Zuweisung der Durchführung einer zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung nach Empfangen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung bis zu einer vorbestimmten Zeitperiode, trotz Bereitschaft der zweiten Aufgabe, die auf der zweiten Partition durchgeführt werden soll, und trotz Verfügbarkeit des ersten Knotens als Ergebnis der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition; und Bestimmen, ob eine Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung, so dass die zweite Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen, von der zweiten Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode empfangen wird. In Reaktion auf den Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode kann der Prozessor veranlasst werden zum Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um Zugriffe auf wenigstens einen Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu ermöglichen; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu vermeiden. In Reaktion auf einen fehlenden Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode kann der Prozessor veranlasst werden zum Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu veranlassen.A computer program product concretely embodied in a non-transitory machine-readable storage medium, the computer program product comprising instructions operable to cause a processor to perform operations including, for each node device of a plurality of node devices, deriving an assignment of the execution a first task having a first record, wherein: the first record is divisible into a plurality of partitions; a first node device is assigned to the plurality of node devices to perform the first task with a first partition of the plurality of partitions of the first data set; and a second node device is assigned to the plurality of node devices to perform the first task with a second partition of the plurality of partitions of the first data set. The processor can to perform operations, including: transmitting to the first node device an indication of the assignment of performing the first task with the first partition to cause the first task to perform the first task by the first node device and to store at least one of the first task Cause part of the first partition within the volatile memory of the first node device; Transmitting an indication of the assignment of performing the first task with the second partition to the second node device to cause the second task to perform the first task with the second partition, and storing at least a portion of the second partition within the volatile memory to cause the second node device; Receiving, by the first node device, an indication from the first node device of completion of performing the first task with the first partition, such that the first node device is available to assign the performance to another task; Delaying the assignment of the performance of a second task on the second partition to the first node device upon receiving the indication of the completion of the performance of the first task with the first partition by the first node device for a predetermined period of time, despite the second task being performed on the second partition second partition is to be performed, and despite availability of the first node as a result of the completion of the execution of the first task with the first partition; and determining whether an indication of the completion of performing the first task with the second partition by the second node device so that the second node device is available to assign the performance of another task is received by the second node device within the predetermined time period. In response to receiving the indication of completion of the first task with the second partition by the second node device within the predetermined time period, the processor may be caused to allocate the second task on the second partition to the second node device for accessing at least one of the second task Allow part of the second partition within the volatile memory of the second node device; and transmitting to the second node device an indication of the assignment of performing the second task on the second partition to avoid fetching the second partition by the first node device. In response to a failure of the second task to terminate the first task with the second partition by the second node device within the predetermined period of time, the processor may be caused to allocate the second task on the second partition to the first node device; and transmitting to the first node device an indication of the assignment of performing the second task on the second partition to cause the second partition to fetch the second partition.

Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich Ableiten der vorbestimmten Zeitperiode von wenigstens einer Messung einer Zeitdauer zwischen der Übertragung einer Zuweisung der Durchführung der ersten Aufgabe an eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen und dem Empfang einer Anzeige der Beendigung der Durchführung der ersten Aufgabe von der Knotenvorrichtung.The processor may be caused to perform operations including deriving the predetermined period of time from at least one measurement of a time period between the transmission of an assignment of performing the first task to a node device of the plurality of node devices and receiving an indication of completion of performing the first task of the node device.

Der Prozessor wird veranlasst, Operationen durchzuführen, einschließlich: Bestimmen einer Anzahl von Knotenvorrichtungen der Mehrzahl von Knotenvorrichtungen, die verfügbar sind, um die erste Aufgabe durchzuführen; und Ableiten einer Aufteilung des ersten Datensatzes in die Mehrzahl von Partitionen des ersten Datensatzes basierend auf der Anzahl von Knotenvorrichtungen und Metadaten beschreibend für eine Weise, in der der erste Datensatz organisiert ist. Der erste Datensatz kann innerhalb einer oder mehreren Speichervorrichtungen gespeichert werden; der Prozessor kann veranlasst werden, Operationen durchzuführen, umfassend Abrufen der Metadaten aus der einen oder den mehreren Speichervorrichtungen; die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen, die erste Partition von der einen oder den mehreren Speichervorrichtungen abzurufen; und die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, die zweite Partition von der einen oder den mehreren Speichervorrichtungen abzurufen.The processor is caused to perform operations, including: determining a number of node devices of the plurality of node devices that are available to perform the first task; and deriving a division of the first record into the plurality of partitions of the first record based on the number of node devices and metadata descriptive of a manner in which the first record is organized. The first record may be stored within one or more storage devices; the processor may be caused to perform operations comprising retrieving the metadata from the one or more storage devices; transmitting the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to retrieve the first partition from the one or more memory devices; and transmitting the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to retrieve the second partition from the one or more storage devices.

Der Prozessor wird veranlasst, Operationen durchzuführen, einschließlich Zuweisen an den Prozessor der Durchführung der ersten Aufgabe mit einer dritten Partition der Mehrzahl von Partitionen des ersten Datensatzes; Speichern von wenigstens einem Teil der dritten Partition innerhalb wenigstens einer flüchtigen Speicherkomponente, die mit dem Prozessor gekoppelt ist; und Durchführen der ersten Aufgabe mit der dritten Partition.The processor is caused to perform operations, including assigning to the processor the performance of the first task with a third partition of the plurality of partitions of the first set of data; Storing at least a portion of the third partition within at least one volatile memory component coupled to the processor; and performing the first task with the third partition.

Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich, für jede Knotenvorrichtung einer Teilmenge der Mehrzahl von Knotenvorrichtungen, Ableiten einer Zuweisung, um eine der Mehrzahl von Partitionen des ersten Datensatzes aus einer oder mehreren Speichervorrichtungen abzurufen und zu speichern, um die Verwendung jeder Knotenvorrichtung der Teilmenge als eine Sicherungsknotenvorrichtung zu ermöglichen, um auf einen Ausfall von einer der Knotenvorrichtungen der Mehrzahl von Knotenvorrichtungen zu reagieren, wobei: eine dritte Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zugewiesen ist, um die erste Aufgabe mit einer dritten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen; und der dritte Knoten zugewiesen ist, um die zweite Partition von der einen oder den mehreren Speichervorrichtungen abzurufen und zu speichern, um die Verwendung der dritten Knotenvorrichtung als eine Sicherungsknotenvorrichtung zu ermöglichen, um auf einen Ausfall der zweiten Knotenvorrichtung zu reagieren. Der Prozessor kann veranlasst werden, während der vorbestimmten Zeitperiode eine Anzeige von der dritten Knotenvorrichtung der Beendigung der Durchführung der ersten Aufgabe mit der dritten Partition durch die dritte Knotenvorrichtung zu empfangen, so dass die dritte Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen. Der Prozessor kann, in Reaktion auf den Empfang der Anzeige der Beendigung der ersten Aufgabe mit der dritten Partition durch die dritte Knotenvorrichtung während der vorbestimmten Zeitperiode und in Reaktion auf einen fehlenden Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode, veranlasst werden zum: Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die dritte Knotenvorrichtung; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die dritte Knotenvorrichtung.The processor may be caused to perform operations including, for each node device of a subset of the plurality of node devices, deriving an assignment to retrieve one of the plurality of partitions of the first data set from one or more memory devices and store to allow the use of each node device of the subset as a backup node device to respond to a failure of one of the node devices of the plurality of node devices, wherein: a third node device is assigned to the plurality of node devices to perform the first task perform third partition of the plurality of partitions of the first record; and the third node is assigned to retrieve and store the second partition from the one or more storage devices to enable use of the third node device as a backup node device to respond to a failure of the second node device. The processor may be caused to receive an indication from the third node device of the termination of performing the first task with the third partition by the third node device during the predetermined time period such that the third node device is available to assign the performance to another task. The processor may, in response to receipt of the indication of completion of the first task with the third partition, by the third node device during the predetermined time period and in response to a lack of receipt of the indication of termination of the first task with the second partition by the second node device within the predetermined period of time, are arranged to: assign execution of the second task on the second partition to the third node device; and transmitting to the third node device an indication of the assignment of performing the second task on the second partition.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können die Verwendung der ersten und zweiten Partitionen als Eingaben für Durchführungen der ersten Aufgabe umfassen, um entsprechende Partitionen eines zweiten Datensatzes zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition kann die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe umfassen, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Abrufen der ersten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der ersten Partition, die innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Abrufen der zweiten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der zweiten Partition, die innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition, während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nicht-flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include using the first and second partitions as inputs to implement the first task to create corresponding partitions of a second data set; and the Performing the second task on the second partition may include using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: retrieve the first partition from one or more storage devices; Using at least a portion of the first partition stored within the volatile memory of the first node device as an input for performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: retrieve the second partition from one or more storage devices; Using at least a portion of the second partition stored within the volatile memory of the second node device as an input for performing the first task by the second node device; and transmitting the indication of completion of performing the first task with the second partition while leaving at least a portion of the second partition stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können Durchführungen der ersten Aufgabe umfassen, um die ersten und zweiten Partitionen als Ausgaben der ersten Aufgabe unter Verwendung entsprechender Partitionen eines zweiten Datensatzes als Eingaben zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition kann die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe umfassen, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Erzeugen der ersten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Erzeugen der zweiten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition, während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nichtflüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include implementations of the first task to generate the first and second partitions as outputs of the first task using corresponding partitions of a second data set as inputs; and performing the second task on the second partition may include using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: generate the first partition as an output of performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: generate the second partition as an output of performing the first task by the second node device; and transmitting the indication of completion of performing the first task with the second partition while leaving at least a portion of the second partition stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Ein computerimplementiertes Verfahren kann, für jede Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, Ableiten an einer Koordinierungsvorrichtung von einer Zuweisung der Durchführung einer ersten Aufgabe mit einem ersten Datensatz umfassen, wobei der erste Datensatz in eine Mehrzahl von Partitionen aufteilbar ist, und das Ableiten kann umfassen: Ableiten einer ersten Zuweisung einer ersten Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen, um die erste Aufgabe mit einer ersten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen; und Ableiten einer zweiten Zuweisung einer zweiten Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen, um die erste Aufgabe mit einer zweiten Partition der Mehrzahl von Partitionen des ersten Datensatzes durchzuführen. Das Verfahren kann das Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung zu veranlassen, umfassen; Übertragen von einer Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung zu veranlassen und eine Speicherung von wenigstens einem Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu veranlassen; Empfangen, an der Koordinierungsvorrichtung, von einer Anzeige von der ersten Knotenvorrichtung der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung, so dass die erste Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen; Verzögern der Zuweisung der Durchführung einer zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung nach Empfangen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition durch die erste Knotenvorrichtung bis zu einer vorbestimmten Zeitperiode, trotz Bereitschaft der zweiten Aufgabe, die auf der zweiten Partition durchgeführt werden soll, und trotz Verfügbarkeit des ersten Knotens als Ergebnis der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition; und Bestimmen, an der Koordinierungsvorrichtung, ob eine Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung, so dass die zweite Knotenvorrichtung verfügbar ist, um die Durchführung einer anderen Aufgabe zuzuweisen, von der zweiten Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode empfangen wird. Das Verfahren kann in Reaktion auf den Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode umfassen: Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um Zugriffe auf wenigstens einen Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung zu ermöglichen; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu vermeiden.A computer-implemented method may, for each node device of a plurality of node devices, derive at a coordinator from an assignment of performing a first task to a first set, the first set being divisible into a plurality of partitions, and the deriving may include: deriving a first assignment of a first node device of the plurality of node devices to perform the first task with a first partition of the plurality of partitions of the first data set; and deriving a second assignment of a second node device of the plurality of node devices to perform the first task with a second partition of the plurality of partitions of the first data set. The method may include transmitting an indication of the assignment of performing the first task with the first partition to the first node device to cause the first task to perform the first task by the first node device and storing at least a portion of the first partition within the volatile memory of the first node device; Transmitting an indication of the assignment of performing the first task with the second partition to the second node device to cause the second task to perform the first task with the second partition, and storing at least a portion of the second partition within the volatile memory to cause the second node device; Receiving, at the coordinator, an indication from the first node device of the completion of the first task's execution of the first partition by the first node device, such that the first node device is available to assign the performance of another task; Delaying the assignment of the performance of a second task on the second partition to the first node device upon receiving the indication of the completion of the performance of the first task with the first partition by the first node device for a predetermined period of time, despite the second task being performed on the second partition second partition is to be performed, and despite availability of the first node as a result of the completion of the execution of the first task with the first partition; and determining, at the coordinating device, whether an indication of the completion of the performance of the first task with the second partition by the second node device so that the second node device is available to assign the performance of another task, from the second node device within the predetermined time period Will be received. The method may include, in response to receiving the indication of completion of the first task with the second partition by the second node device within the predetermined time period: assigning the second task on the second partition to the second node device to access at least a portion enable the second partition within the volatile memory of the second node device; and transmitting to the second node device an indication of the assignment of performing the second task on the second partition to avoid fetching the second partition by the first node device.

Das Verfahren kann, an der Koordinierungsvorrichtung, das Ableiten der vorbestimmten Zeitperiode von wenigstens einer Messung einer Zeitdauer zwischen der Übertragung einer Zuweisung der Durchführung der ersten Aufgabe an eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen und dem Empfang einer Anzeige der Beendigung der Durchführung der ersten Aufgabe von der Knotenvorrichtung umfassen.The method may include, at the coordinating device, deriving the predetermined period of time from at least one measurement of a time period between the transmission of an assignment of performing the first task to a node device of the plurality of node devices and receiving an indication of completion of the first task Include node device.

Das Verfahren kann das Bestimmen, an der Koordinierungsvorrichtung, einer Anzahl von Knotenvorrichtungen der Mehrzahl von Knotenvorrichtungen, die verfügbar sind, um die erste Aufgabe durchzuführen, umfassen; und Ableiten, an der Koordinierungsvorrichtung, einer Aufteilung des ersten Datensatzes in die Mehrzahl von Partitionen des ersten Datensatzes basierend auf der Anzahl von Knotenvorrichtungen und Metadaten beschreibend für eine Weise, in der der erste Datensatz organisiert ist. Der erste Datensatz wird innerhalb einer oder mehreren Speichervorrichtungen gespeichert; das Verfahren kann das Abrufen der Metadaten, durch die Koordinierungsvorrichtung, von der einen oder den mehreren Speichervorrichtungen umfassen; die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen, die erste Partition von der einen oder den mehreren Speichervorrichtungen abzurufen; und die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, die zweite Partition von der einen oder den mehreren Speichervorrichtungen abzurufen.The method may include determining, at the coordinating device, a number of node devices of the plurality of node devices that are available to perform the first task; and deriving, at the coordinating device, a distribution of the first record into the plurality of partitions of the first record based on the number of node devices and metadata descriptive of a manner in which the first record is organized. The first record is stored within one or more storage devices; the method may include retrieving the metadata, by the coordinating device, from the one or more storage devices; transmitting the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to retrieve the first partition from the one or more memory devices; and transmitting the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to retrieve the second partition from the one or more storage devices.

Das Verfahren kann das Zuweisen, an die Koordinierungsvorrichtung, der Durchführung der ersten Aufgabe mit einer dritten Partition der Mehrzahl von Partitionen des ersten Datensatzes umfassen; Speichern von wenigstens einem Teil der dritten Partition innerhalb wenigstens einer flüchtigen Speicherkomponente der Koordinierungsvorrichtung; und Durchführen, an der Koordinierungsvorrichtung, der ersten Aufgabe mit der dritten Partition. Das Verfahren kann in Reaktion auf einen fehlenden Empfang der Anzeige der Beendigung der ersten Aufgabe mit der zweiten Partition durch die zweite Knotenvorrichtung innerhalb der vorbestimmten Zeitperiode umfassen: Zuweisen der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung; und Übertragen von einer Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die erste Knotenvorrichtung, um ein Abrufen der zweiten Partition durch die erste Knotenvorrichtung zu veranlassen. The method may include assigning, to the coordinator, the performance of the first task with a third partition of the plurality of partitions of the first set of data; Storing at least a portion of the third partition within at least one volatile memory component of the coordinator; and performing, at the coordinator, the first task with the third partition. The method may include, in response to a failure to receive the indication of completion of the first task with the second partition by the second node device within the predetermined time period: assigning the second task on the second partition to the first node device; and transmitting to the first node device an indication of the assignment of performing the second task on the second partition to cause the second partition to fetch the second partition.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können die Verwendung der ersten und zweiten Partitionen als Eingaben für Durchführungen der ersten Aufgabe umfassen, um entsprechende Partitionen eines zweiten Datensatzes zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition kann die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe umfassen, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Abrufen der ersten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der ersten Partition, die innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Abrufen der zweiten Partition aus einer oder mehreren Speichervorrichtungen; Verwenden von wenigstens einem Teil der zweiten Partition, die innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, als eine Eingabe für die Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition, während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nicht-flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include using the first and second partitions as inputs to implement the first task to create corresponding partitions of a second data set; and performing the second task on the second partition may include using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: retrieve the first partition from one or more storage devices; Using at least a portion of the first partition stored within the volatile memory of the first node device as an input for performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: retrieve the second partition from one or more storage devices; Using at least a portion of the second partition stored within the volatile memory of the second node device as an input for performing the first task by the second node device; and transmitting the indication of completion of performing the first task with the second partition while leaving at least a portion of the second partition stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Die Durchführungen der ersten Aufgabe mit den ersten und zweiten Partitionen können Durchführungen der ersten Aufgabe umfassen, um die ersten und zweiten Partitionen als Ausgaben der ersten Aufgabe unter Verwendung entsprechender Partitionen eines zweiten Datensatzes als Eingaben zu erzeugen; und die Durchführung der zweiten Aufgabe auf der zweiten Partition umfasst die Verwendung der zweiten Partition als eine Eingabe für eine Durchführung der zweiten Aufgabe, um eine entsprechende Partition eines dritten Datensatzes zu erzeugen. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der ersten Partition an die erste Knotenvorrichtung kann die erste Knotenvorrichtung veranlassen zum: Erzeugen der ersten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die erste Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der ersten Partition, während wenigstens ein Teil der ersten Partition innerhalb des flüchtigen Speichers der ersten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der ersten Aufgabe mit der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen zum: Erzeugen der zweiten Partition als eine Ausgabe der Durchführung der ersten Aufgabe durch die zweite Knotenvorrichtung; und Übertragen der Anzeige der Beendigung der Durchführung der ersten Aufgabe mit der zweiten Partition, während wenigstens ein Teil der zweiten Partition innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert bleibt. Die Übertragung der Anzeige der Zuweisung der Durchführung der zweiten Aufgabe auf der zweiten Partition an die zweite Knotenvorrichtung kann die zweite Knotenvorrichtung veranlassen, wenigstens einen Teil der zweiten Partition zu verwenden, die noch innerhalb des flüchtigen Speichers der zweiten Knotenvorrichtung als eine Eingabe für die Durchführung der zweiten Aufgabe durch die zweite Knotenvorrichtung gespeichert ist, um Zugriffe auf die zweite Partition, die innerhalb des nicht-flüchtigen Speichers der zweiten Knotenvorrichtung gespeichert ist, zu minimieren.The implementations of the first task with the first and second partitions may include implementations of the first task to generate the first and second partitions as outputs of the first task using corresponding partitions of a second data set as inputs; and performing the second task on the second partition comprises using the second partition as an input to perform the second task to generate a corresponding partition of a third data set. The transmission of the indication of assignment of performing the first task with the first partition to the first node device may cause the first node device to: generate the first partition as an output of performing the first task by the first node device; and transmitting the indication of completion of performing the first task with the first partition while leaving at least a portion of the first partition stored within the volatile memory of the first node device. The transmission of the indication of assignment of performing the first task with the second partition to the second node device may cause the second node device to: generate the second partition as an output of performing the first task by the second node device; and transmitting the indication of completion of performing the first task with the second partition while leaving at least a portion of the second partition stored within the volatile memory of the second node device. The transmission of the indication of assignment of the second job on the second partition to the second node device may cause the second node device to use at least a portion of the second partition remaining within the volatile memory of the second node device as an input to perform the second second task is stored by the second node device to minimize accesses to the second partition stored within the non-volatile memory of the second node device.

Eine Vorrichtung kann einen Prozessor und einen Speicher umfassen, um Anweisungen zu speichern, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor veranlassen, Operationen durchzuführen, einschließlich: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben von Analyseroutinen wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden. In Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, kann der Prozessor Operationen durchführen, einschließlich: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst. In Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, kann der Prozessor Operationen durchführen, einschließlich: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen. An apparatus may include a processor and memory for storing instructions that, when executed by the processor, cause the processor to perform operations including: analyzing a current status of resources of at least one node device of a plurality of node devices to determine availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned to perform a first task of an analysis routine, wherein: the operation of the plurality of node devices is coordinated to at least partially perform tasks of analysis routines perform in parallel; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device. In response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine, the processor may perform operations including: analyzing a first task routine of the analysis routine to determine if the first task routine is compiling may be to generate a GPU task routine for execution by the at least one GPU to cause the at least one GPU to at least partially parse multiple instances of the first task of the parsing routine without a dependency between inputs and outputs of the multiple instances of the first task wherein: the first task routine is generated for execution by the at least one CPU to perform the first task of the analysis routine; and determining whether the first task routine can be compiled to generate the GPU task routine, determining whether the first task routine includes an instruction that prohibits compilation to generate the GPU task routine, and a determination of whether inputs and outputs of the first task routine are defined so as not to require dependency. In response to a determination that the first task routine can be compiled to generate the GPU task routine, the processor may perform operations including: assigning a record partition of a plurality of record partitions of a record to the at least one node device to access the record partition to allow the at least one GPU; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the plurality of instances of the first task with the record partition by the at least one GPU.

Um zu bestimmen, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, kann der Prozessor veranlasst werden zum: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann. Um die wenigstens eine Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln, kann der Prozessor veranlasst werden, die wenigstens eine Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umzuwandeln. Der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung kann einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist, umfassen; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, kann umfassen, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, kann der Prozessor veranlasst werden, Operationen durchzuführen, einschließlich: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.To determine whether the first task routine includes an instruction that prevents compilation to generate the GPU task routine, the processor may be caused to: determine whether the instruction of the first task routine is included in a set of instructions that are not can be converted into at least one instruction that can be executed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is used in a manner that prevents conversion to at least one of the instructions the at least one GPU can be executed. To convert the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine, the processor may be caused to change the at least one instruction of the first task routine from a first programming language to the at least one corresponding instruction in a second programming language according to the conversion rule convert. The at least one memory of the at least one node device may include a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU may include causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the processor may be caused to perform operations including: omitting the analysis of the first task routine to determine whether the first task routine can be compiled to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and assigning the performing the first task of the analysis routine with the record partition to the at least one node device to enable the first task with the record partition to be performed by the at least one CPU.

Die Vorrichtung kann eine Koordinierungsvorrichtung umfassen, die den Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert; der Prozessor kann veranlasst werden, wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu empfangen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann der Prozessor veranlasst werden, eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu identifizieren, die eine GPU integriert, die durch den aktuellen Status als verfügbar angezeigt wird. Um die Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung zuzuweisen, kann der Prozessor veranlasst werden, Operationen durchzuführen, einschließlich: Analysieren von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung. Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen. The apparatus may include a coordinator that coordinates the operation of the plurality of node devices; the processor may be caused to periodically receive updates to the current status of each node device of the plurality of node devices; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the processor may be caused to identify a node device of the plurality of node devices that integrates a GPU indicated by the current status as available becomes. To assign the record partition of the record to the at least one node device, the processor may be caused to perform operations including: analyzing metadata indicative of structural features of the record to identify a constraint in a manner that the record in the plurality of data set partitions may be partitioned, wherein the restriction is selected from a group consisting of a display of a minimum atomic unit of data within the data set and a specification of a partitioning scheme; and deriving a division of the record into the plurality of record partitions based at least in part on the constraint. The processor may be caused to perform operations, including: retrieving the metadata from at least one storage device in which the record is stored; and transmitting an indication of the assignment of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device.

Die Vorrichtung kann eine Knotenvorrichtung der wenigstens einen Knotenvorrichtung umfassen; die Knotenvorrichtung kann eine GPU der wenigstens einen GPU umfassen; der Prozessor kann eine CPU der wenigstens einen CPU umfassen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann die CPU veranlasst werden, zu bestimmen, ob die GPU der Knotenvorrichtung durch den aktuellen Status als verfügbar angezeigt wird. Der Prozessor wird veranlasst, Operationen durchzuführen, einschließlich Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen. In Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen, kann der Prozessor Operationen durchführen, einschließlich: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.The apparatus may include a node device of the at least one node device; the node device may comprise a GPU of the at least one GPU; the processor may include a CPU of the at least one CPU; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the CPU may be made to determine whether the GPU of the node device is indicated as being available by the current status. The processor is caused to perform operations including analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU to cause the second task routine to execute at least one GPU executes at least partially in parallel multiple instances of the second task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the second task, the second task routine being generated for execution by the at least one CPU to perform a second task of the analysis routine. In response to a determination that the second task routine can not be compiled to generate the other GPU task routine, the processor may perform operations including: compiling the second task routine for execution by the at least one CPU; and assigning the second task of the analysis routine with the record partition to the at least one node device to enable the second task with the record partition to be performed by the at least one CPU.

Die Umwandlungsregel kann aus einer Gruppe ausgewählt werden, bestehend aus: einer Spezifikation eines Satzes von Anweisungen, von denen jede die Kompilierung der ersten Taskroutine verhindert, um die GPU-Taskroutine zu erzeugen, falls sie innerhalb der ersten Taskroutine vorhanden ist; einer Spezifikation eines Satzes von Anweisungen, von denen jede die Kompilierung der ersten Taskroutine nicht verhindern würde, um die GPU-Taskroutine zu erzeugen, falls sie innerhalb der ersten Taskroutine vorhanden ist; einer Spezifikation einer Weise der Verwendung einer Anweisung, die die Kompilierung der ersten Taskroutine verhindert, um die GPU-Taskroutine zu erzeugen, falls die Weise der Verwendung der Anweisung innerhalb der ersten Taskroutine auftritt, wobei das Vorhandensein der Anweisung innerhalb der ersten Taskroutine ansonsten nicht die Kompilierung der ersten Taskroutine zur Erzeugung der GPU-Taskroutine verhindert; einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die in einer Schleife durch die wenigstens eine CPU ausgeführt werden sollen, in entsprechende Anweisungen der GPU-Taskroutine, die parallel durch die wenigstens eine GPU in einer entsprechenden Schleife mit weniger Iterationen als die Schleife ausgeführt werden sollen; einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die in einer Schleife durch die wenigstens eine CPU ausgeführt werden sollen, in entsprechende Anweisungen der GPU-Taskroutine, die parallel durch die wenigstens eine GPU und nicht in einer Schleife ausgeführt werden sollen; und einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die eine Datenstruktur definieren, umfassend Einträge, auf die sequentiell während der Ausführung der ersten Taskroutine durch die wenigstens eine CPU zugegriffen werden soll, in entsprechende Anweisungen der GPU-Taskroutine, die eine entsprechende Datenstruktur definieren, umfassend Einträge, auf die während der Ausführung der GPU-Taskroutine durch die wenigstens eine GPU parallel zugegriffen werden soll.The conversion rule may be selected from a group consisting of: a specification of a set of instructions, each of which prevents the compilation of the first task routine to generate the GPU task routine, if present within the first task routine; a specification of a set of instructions, each of which would not prevent the compilation of the first task routine to generate the GPU task routine, if present within the first task routine; specifying a way of using an instruction that prevents compilation of the first task routine to generate the GPU task routine if the manner of using the instruction occurs within the first task routine, otherwise the presence of the instruction within the first task routine does not Prevents compilation of the first task routine for generating the GPU task routine; a specification of a procedure for converting instructions in the first task routine to be looped by the at least one CPU into corresponding instructions of the GPU task routine executed in parallel by the at least one GPU in a corresponding loop with fewer iterations than the one Loop to be executed; a specification of a procedure for converting instructions in the first task routine to be looped by the at least one CPU into corresponding instructions of the GPU task routine to be executed in parallel by the at least one GPU and not in a loop; and a specification of a procedure for transforming instructions in the first task routine defining a data structure comprising entries to be sequentially accessed by the at least one CPU during execution of the first task routine, into corresponding instructions of the GPU task routine containing a define corresponding data structure comprising entries to be accessed in parallel during execution of the GPU task routine by the at least one GPU.

Ein Computerprogrammprodukt, das in einem nicht-transitorischen maschinenlesbaren Speichermedium konkret ausgeführt ist, wobei das Computerprogrammprodukt Anweisungen umfasst, die betriebsfähig sind, um zu veranlassen, dass ein Prozessor Operationen durchführt, einschließlich: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben der Analyseroutine wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden. In Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, kann der Prozessor veranlasst werden, Operationen durchzuführen, einschließlich: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst. In Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, kann der Prozessor veranlasst werden, Operationen durchführen, einschließlich: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen. A computer program product concretely embodied in a non-transitory machine-readable storage medium, the computer program product comprising instructions operable to cause a processor to perform operations including: analyzing a current status of resources of at least one node device of a plurality of Node devices for determining availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned to perform a first task of an analysis routine, wherein: the operation of the plurality of node devices is coordinated to perform tasks of the Perform analysis routine at least partially in parallel; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device. In response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine, the processor may be caused to perform operations including: analyzing a first task routine of the analysis routine to determine if the The first task routine may be compiled to generate a GPU task routine for execution by the at least one GPU to cause the at least one GPU to at least partially parse multiple instances of the first task of the parsing routine without a dependency between inputs and outputs of the multiple instances performing the first task, wherein: the first task routine is generated for execution by the at least one CPU to perform the first task of the analysis routine; and determining whether the first task routine can be compiled to generate the GPU task routine, determining whether the first task routine includes an instruction that prohibits compilation to generate the GPU task routine, and a determination of whether inputs and outputs of the first task routine are defined so as not to require dependency. In response to a determination that the first task routine can be compiled to generate the GPU task routine, the processor may be caused to perform operations including: assigning a record partition of a plurality of record partitions of a record to the at least one node device for access to enable the record partition by the at least one GPU; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the plurality of instances of the first task with the record partition by the at least one GPU.

Um zu bestimmen, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, kann der Prozessor veranlasst werden zum: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann. Um die wenigstens eine Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln, kann der Prozessor veranlasst werden, die wenigstens eine Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umzuwandeln. Der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung umfasst einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, kann umfassen, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, wird der Prozessor veranlasst, Operationen durchzuführen, einschließlich: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.To determine whether the first task routine includes an instruction that prevents compilation to generate the GPU task routine, the processor may be caused to: determine whether the instruction of the first task routine is included in a set of instructions that are not can be converted into at least one instruction that can be executed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is used in a manner that prevents conversion to at least one of the instructions the at least one GPU can be executed. To convert the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine, the processor may be caused to change the at least one instruction of the first task routine from a first programming language to the at least one corresponding instruction in a second programming language according to the conversion rule convert. The at least one memory of the at least one node device comprises a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU may include causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the processor is caused to perform operations, including: omitting the analysis of the first task routine to determine whether the first task routine can be compiled to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and assigning the performing the first task of the analysis routine with the record partition to the at least one node device to enable the first task with the record partition to be performed by the at least one CPU.

Der Prozessor kann eine Komponente einer Koordinierungsvorrichtung sein, die den Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert; der Prozessor kann veranlasst werden, wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu empfangen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann der Prozessor veranlasst werden, eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu identifizieren, die eine GPU integriert, die im aktuellen Status als verfügbar angezeigt wird. Um die Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung zuzuweisen, wird der Prozessor veranlasst, Operationen durchzuführen, einschließlich: Analysieren von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung. Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen. The processor may be a component of a coordinator that coordinates the operation of the plurality of node devices; the processor may be caused to periodically receive updates to the current status of each node device of the plurality of node devices; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the processor may be caused to identify a node device of the plurality of node devices that integrates a GPU that is displayed as available in the current state , In order to assign the record partition of the record to the at least one node device, the processor is caused to perform operations including: analyzing metadata indicative of structural features of the record to identify a constraint in a manner that the record falls within A plurality of data set partitions, wherein the restriction is selected from a group consisting of a display of a minimum atomic unit of data within the data set and a specification of a partitioning scheme; and deriving a division of the record into the plurality of record partitions based at least in part on the constraint. The processor may be caused to perform operations, including: retrieving the metadata from at least one storage device in which the record is stored; and transmitting an indication of the assignment of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device.

Der Prozessor kann eine CPU der wenigstens einen CPU umfassen; die CPU kann eine Komponente einer Knotenvorrichtung der wenigstens einen Knotenvorrichtung sein; die Knotenvorrichtung kann eine GPU der wenigstens einen GPU umfassen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann die CPU veranlasst werden, zu bestimmen, ob die GPU der Knotenvorrichtung durch den aktuellen Status als verfügbar angezeigt wird. Der Prozessor kann veranlasst werden, Operationen durchzuführen, einschließlich: Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen. In Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen, kann der Prozessor veranlasst werden zum: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen. Die wenigstens eine GPU kann die Ausführung der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine parallel über wenigstens eintausend Threads der Ausführung unterstützen.The processor may include a CPU of the at least one CPU; the CPU may be a component of a node device of the at least one node device; the node device may comprise a GPU of the at least one GPU; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the CPU may be made to determine whether the GPU of the node device is indicated as being available by the current status. The processor may be caused to perform operations including: analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU to cause that the at least one GPU performs at least partially in parallel multiple instances of the second task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the second task, the second task routine being executed for execution by the at least one CPU to perform a second task of the analysis routine perform. In response to a determination that the second task routine can not be compiled to generate the other GPU task routine, the processor may be caused to: compile the second task routine for execution by the at least one CPU; and assigning the second task of the analysis routine with the record partition to the at least one node device to enable the second task with the record partition to be performed by the at least one CPU. The at least one GPU may support the execution of the at least one corresponding instruction of the GPU task routine in parallel over at least one thousand threads of execution.

Ein computerimplementiertes Verfahren kann umfassen: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben von Analyseroutinen wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden. Das Verfahren kann in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, umfassen: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst. Das Verfahren kann in Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, umfassen: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen.A computer-implemented method may include: analyzing a current status of resources of at least one node device of a plurality of node devices to determine availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned a first one Perform an analysis routine, wherein: the operation of the plurality of node devices is coordinated to perform at least partially parallel analysis task tasks; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device. The method, in response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine, comprises: analyzing a first task routine of the analysis routine to determine if the first task routine can be compiled; to generate a GPU task routine for execution by the at least one GPU to cause the at least one GPU to perform at least partially in parallel multiple instances of the first task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the first task the first task routine for execution is generated by the at least one CPU to perform the first task of the analysis routine; and determining whether the first task routine can be compiled to generate the GPU task routine, determining whether the first task routine includes an instruction that prohibits compilation to generate the GPU task routine, and a determination of whether inputs and outputs of the first task routine are defined so as not to require dependency. The process can be in response to a determination that the first task routine may be compiled to generate the GPU task routine comprises: assigning a record partition of a plurality of record partitions of a record to the at least one node device to allow access to the record partition by the at least one GPU; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the plurality of instances of the first task with the record partition by the at least one GPU.

Die Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, kann umfassen: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann. Das Umwandeln der wenigstens einen Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine kann das Umwandeln der wenigstens einen Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umfassen.The determination of whether the first task routine includes an instruction that prevents compilation to produce the GPU task routine may include: determining whether the instruction of the first task routine is included in a set of instructions that are not converted into at least one instruction can be performed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is used in a manner that prevents conversion to at least one of the instructions the at least one GPU can be executed. The converting the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine may comprise converting the at least one instruction of the first task routine from a first programming language into the at least one corresponding instruction in a second programming language according to the conversion rule.

Der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung kann einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist, umfassen; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, kann umfassen, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, kann das Verfahren umfassen: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.The at least one memory of the at least one node device may include a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU may include causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the method may include: omitting the analysis of the first task routine to determine if the first task routine is being compiled can to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and assigning the performing the first task of the analysis routine with the record partition to the at least one node device to enable the first task with the record partition to be performed by the at least one CPU.

Eine Koordinierungsvorrichtung kann den Betrieb der Mehrzahl von Knotenvorrichtungen koordinieren; die Koordinierungsvorrichtung kann wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen empfangen; und das Analysieren des aktuellen Status, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann das Identifizieren an der Koordinierungsvorrichtung einer Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen, die eine GPU integriert, die im aktuellen Status als verfügbar angezeigt wird, umfassen. Das Zuweisen der Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung kann umfassen: Analysieren, an der Koordinierungsvorrichtung, von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung. Das Verfahren kann umfassen: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen.A coordinator may coordinate the operation of the plurality of node devices; the coordinator may periodically receive updates to the current status of each node device of the plurality of node devices; and analyzing the current status to determine the availability of the at least one GPU of the at least one node device may include identifying at the coordinating device a node device of the plurality of node devices that integrates a GPU that is displayed as available in the current state. Assigning the record partition of the record to the at least one node device may comprise: analyzing, at the coordinator, metadata indicative of structural features of the record to identify a constraint in a manner in which the record into the plurality of record partitions wherein the constraint is selected from a group consisting of a display of a minimum atomic unit of data within the record and a specification of a partitioning scheme; and deriving a division of the record into the plurality of record partitions based at least in part on the constraint. The method may include: retrieving the metadata from at least one storage device in which the record is stored; and transmitting an indication of the assignment of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device.

Das Analysieren des akuellen Zustands, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, kann das Analysieren eines aktuellen Status der Knotenvorrichtung durch eine CPU einer Knotenvorrichtung umfassen, ob eine GPU der Knotenvorrichtung aktuell verfügbar ist, wobei: die wenigstens eine CPU die CPU umfassen kann; die wenigstens eine Knotenvorrichtung die Knotenvorrichtung umfassen kann; und die wenigstens eine GPU die GPU umfassen kann.Analyzing the current state to determine the availability of the at least one GPU of the at least one node device may include analyzing a current status of the node device by a CPU of a node device, whether a GPU of the node device is up-to-date wherein: the at least one CPU may comprise the CPU; the at least one node device may comprise the node device; and the at least one GPU may include the GPU.

Das Verfahren nach Anspruch 21 kann umfassen: Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen. Das Verfahren kann in Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen, umfassen: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit den Datensatzpartitionen durch die wenigstens eine CPU zu ermöglichen. Das Verfahren kann das Analysieren der Analyseroutine umfassen, um eine Reihenfolge von Aufgaben der Analyseroutine zu bestimmen, wobei die Reihenfolge der Aufgaben eine relative Reihenfolge der ersten und zweiten Aufgaben umfasst.The method of claim 21, comprising: analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU to cause the at least one GPU task routine to execute a GPU executes at least partially in parallel a plurality of instances of the second task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the second task, the second task routine being generated for execution by the at least one CPU to perform a second task of the analysis routine. The method may include, in response to a determination that the second task routine can not be compiled to generate the other GPU task routine: compile the second task routine for execution by the at least one CPU; and assigning execution of the second task of the analysis routine with the record partition to the at least one node device to enable the second task with the data set partitions to be performed by the at least one CPU. The method may include analyzing the analysis routine to determine a sequence of tasks of the analysis routine, the order of the tasks comprising a relative order of the first and second tasks.

Das Vorstehende wird zusammen mit anderen Merkmalen und Ausführungsformen unter Bezugnahme auf die nachfolgende Beschreibung, Ansprüche und beigefügten Zeichnungen deutlicher.The foregoing will become more apparent together with other features and embodiments with reference to the following description, claims and appended drawings.

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die vorliegende Offenbarung wird in Verbindung mit den beigefügten Figuren beschrieben:The present disclosure will be described in conjunction with the accompanying drawings:

1 veranschaulicht ein Blockschaltbild, das eine Veranschaulichung der Hardwarekomponenten eines Rechensystems bereitstellt, gemäß einigen Ausführungsformen der vorliegenden Technologie. 1 FIG. 12 illustrates a block diagram that provides an illustration of the hardware components of a computing system, in accordance with some embodiments of the present technology.

2 veranschaulicht ein beispielhaftes Netz, das einen beispielhaften Satz von Vorrichtungen umfasst, die miteinander über ein Austauschsystem und über ein Netz kommunizieren, gemäß einigen Ausführungsformen der vorliegenden Technologie. 2 FIG. 3 illustrates an example network that includes an example set of devices that communicate with each other through an exchange system and over a network, in accordance with some embodiments of the present technology.

3 veranschaulicht eine Darstellung eines Konzeptmodells eines Kommunikationsprotokollsystems gemäß einigen Ausführungsformen der vorliegenden Technologie. 3 FIG. 12 illustrates an illustration of a conceptual model of a communication protocol system according to some embodiments of the present technology. FIG.

4 veranschaulicht ein Kommunikationsgitter-Rechensystem, das eine Vielzahl von Steuer- und Arbeiterknoten umfasst, gemäß einigen Ausführungsformen der vorliegenden Technologie. 4 FIG. 12 illustrates a communication grid computing system including a plurality of control and worker nodes, in accordance with some embodiments of the present technology.

5 veranschaulicht ein Flussdiagramm, das einen beispielhaften Prozess zum Anpassen eines Kommunikationsgitters oder eines Arbeitsprojekts in einem Kommunikationsgitter nach einem Ausfall eines Knotens zeigt, gemäß einigen Ausführungsformen der vorliegenden Technologie. 5 FIG. 12 illustrates a flowchart depicting an example process for adjusting a communication grid or work project in a communication grid after a node has failed according to some embodiments of the present technology.

6 veranschaulicht einen Teil eines Kommunikationsgitter-Rechensystems, das einen Steuerknoten und einen Arbeiterknoten umfasst, gemäß einigen Ausführungsformen der vorliegenden Technologie. 6 Figure 12 illustrates a portion of a communication grid computing system including a control node and a worker node, in accordance with some embodiments of the present technology.

7 veranschaulicht ein Flussdiagramm, das einen beispielhaften Prozess zum Ausführen eines Datenanalyse- oder Verarbeitungsprojekts zeigt, gemäß einigen Ausführungsformen der vorliegenden Technologie. 7 FIG. 12 illustrates a flowchart illustrating an example process for performing a data analysis or processing project, in accordance with some embodiments of the present technology.

8 veranschaulicht ein Blockschaltbild, das Komponenten einer Ereignisstromverarbeitungs-Engine (Event Stream Processing Engine, ESPE) umfasst, gemäß Ausführungsformen der vorliegenden Technologie. 8th FIG. 12 illustrates a block diagram including components of an Event Stream Processing Engine (ESPE) according to embodiments of the present technology.

9 veranschaulicht ein Flussdiagramm, das einen beispielhaften Prozess einschließlich Operationen, die durch eine Ereignisstromverarbeitungs-Engine durchgeführt werden, zeigt, gemäß einigen Ausführungsformen der vorliegenden Technologie. 9 FIG. 12 illustrates a flowchart depicting an example process including operations performed by an event stream processing engine, in accordance with some embodiments of the present technology.

10 veranschaulicht ein ESP-System, das über eine Schnittstelle zwischen einer Publishing-Vorrichtung und mehreren Ereignis-Subscribing-Vorrichtungen verbunden ist, gemäß Ausführungsformen der vorliegenden Technologie. 10 FIG. 12 illustrates an ESP system connected via an interface between a publishing device and multiple event subscribing devices in accordance with embodiments of the present technology. FIG.

11A und 11B veranschaulichen jeweils ein Ausführungsbeispiel eines verteilten Verarbeitungssystems. 11A and 11B each illustrate an embodiment of a distributed processing system.

12 veranschaulicht ein Ausführungsbeispiel eines Seitenaustauschs. 12 illustrates an embodiment of a page exchange.

13A und 13B veranschaulichen jeweils ein Ausführungsbeispiel der Zuweisung der Durchführung von Aufgaben einer Analyseroutine an Knotenvorrichtungen eines verteilten Verarbeitungssystems. 13A and 13B each illustrate an embodiment of assigning performance of tasks of an analysis routine to node devices of a distributed processing system.

14A, 14B und 14C veranschaulichen zusammen ein Ausführungsbeispiel einer Zuweisung von Datensatzpartitionen und Aufgaben. 14A . 14B and 14C together illustrate an embodiment of assigning record partitions and tasks.

15A und 15B veranschaulichen zusammen ein Beispiel einer Durchführung einer zugewiesenen Aufgabe durch ein Ausführungsbeispiel einer Knotenvorrichtung. 15A and 15B together illustrate an example of performance of an assigned task by an embodiment of a node device.

16 veranschaulicht ein weiteres Ausführungsbeispiel einer Zuweisung von Datensatzpartitionen und Aufgaben. 16 illustrates another embodiment of assigning record partitions and tasks.

17A, 17B und 17C veranschaulichen zusammen ein Ausführungsbeispiel einer Verzögerung der Zuweisung einer Datensatzpartition und einer Aufgabe. 17A . 17B and 17C together illustrate an embodiment of delaying the allocation of a record partition and a task.

18A, 18B und 18C veranschaulichen zusammen ein weiteres Ausführungsbeispiel einer Verzögerung der Zuweisung einer Datensatzpartition und einer Aufgabe. 18A . 18B and 18C together illustrate another embodiment of delaying the allocation of a record partition and a task.

19 veranschaulicht noch ein Ausführungsbeispiel einer Analyse von Taskroutinen und Zuweisung von Aufgaben durch eine Koordinierungsvorrichtung. 19 illustrates yet another embodiment of an analysis of task routines and assignment of tasks by a coordinator.

20 veranschaulicht noch ein Ausführungsbeispiel einer Analyse und Kompilierung einer Taskroutine durch eine Knotenvorrichtung. 20 illustrates yet another embodiment of an analysis and compilation of a task routine by a node device.

21 veranschaulicht noch ein Ausführungsbeispiel von anfänglichen und nachfolgenden Zuweisungen von Aufgaben durch eine Koordinierungsvorrichtung. 21 illustrates yet another embodiment of initial and subsequent assignments of tasks by a coordinator.

22 veranschaulicht noch ein Ausführungsbeispiel einer Ableitung einer Zeitperiode einer Verzögerung zur Verwendung bei einer nachfolgenden Zuweisung einer Aufgabe. 22 Figure 12 illustrates yet another embodiment of deriving a time period of a delay for use in a subsequent assignment of a task.

23 veranschaulicht noch ein Ausführungsbeispiel einer verzögerten Zuweisung einer Aufgabe durch eine Koordinierungsvorrichtung. 23 illustrates yet another embodiment of a delayed assignment of a task by a coordinator.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Verschiedene hierin beschriebene Ausführungsformen sind allgemein auf Techniken gerichtet, um die effektive Verwendung von Verarbeitungs-, Speicher- und Netzbandbreitenressourcen innerhalb eines Gitters von Knotenvorrichtungen zu verbessern, um zu ermöglichen, dass einzelne Analyseroutinen in kürzerer Zeit abgeschlossen werden. Verschiedene Ausführungsformen sind auch allgemein auf Techniken zur Verbesserung der Leichtigkeit der Verwendung von Multithreading-Unterstützung gerichtet, die von wenigstens einigen Prozessoren eines Gitters bereitgestellt wird. Jede Knotenvorrichtung eines Gitters von Knotenvorrichtungen kann sowohl flüchtigen Speicher, der einen schnelleren Zugriff auf Daten und Routinen bereitstellt, als auch nicht-flüchtigen Speicher, der eine höhere Speicherkapazität bereitstellt, jedoch mit einem langsameren Zugriff als der flüchtige Speicher, umfassen. Außerdem kann jeder Knoten des Gitters eine oder mehrere zentrale Verarbeitungseinheiten (Central Processing Units, CPUs) umfassen oder kann eine Kombination aus einer oder mehreren CPUs und einer oder mehreren Grafikverarbeitungseinheiten (Graphics Processing Units, GPUs) umfassen, von denen jede besser geeignet sein kann, um verschiedene Typen von Aufgaben einer Analyseroutine durchzuführen. Die anfänglichen Zuweisungen von Datensatzpartitionen und Aufgabe(n) einer Analyseroutine an Knotenvorrichtungen können auf der Verrfügbarkeit von Ressourcen innerhalb der Knotenvorrichtungen und/oder auf einer automatisierten Analyse der Taskroutinen innerhalb der Analyseroutine basieren, um Taskroutinen zu identifizieren, die zur Ausführung von GPUs anstelle von CPUs umgewandelt und kompiliert werden können. Eine derartige Analyse kann entweder in Verbindung mit dem Ableiten der anfänglichen Zuweisungen oder als Teil des Kompilierens jeder der Taskroutinen zur Ausführung durch CPUs und/oder durch GPUs durchgeführt werden. Anschließend kann während der Ausführung von Taskroutinen der Analyseroutine, wenn eine Knotenvorrichtung verfügbar wird, so dass sie einer nächsten Aufgabe zur Durchführung mit einer bestimmten Datensatzpartition zugewiesen werden könnte, eine derartige Zuweisung an die eine Knotenvorrichtung um eine vorbestimmte Zeitperiode verzögert werden, um einer anderen Knotenvorrichtung, die immer noch eine vorangehende Aufgabe mit dieser bestimmten Datensatzpartition durchführt, eine Möglichkeit zu geben, verfügbar zu werden und zugewiesen zu werden, diese nächste Aufgabe mit dieser bestimmten Datensatzpartition durchzuführen. Eine derartige Verzögerung der Zuweisung kann es ermöglichen, die zeitlich begrenzte Speicherung der bestimmten Datensatzpartition innerhalb des flüchtigen Speichers der anderen Knotenvorrichtung zu nutzen, um dadurch die Durchführung der nächsten Aufgabe mit der bestimmten Datensatzpartition schneller zu ermöglichen. Eine derartige Verzögerung bei der Zuweisung kann auch das Auftreten einer potentiell größeren Verzögerung vermeiden, die mit der Übertragung der bestimmten Datensatzpartition an die eine Knotenvorrichtung assoziiert ist.Various embodiments described herein are generally directed to techniques to improve the effective use of processing, memory and network bandwidth resources within a grid of node devices to enable individual analysis routines to be completed in less time. Various embodiments are also generally directed to techniques for improving the ease of using multithreading support provided by at least some processors of a grid. Each node device of a grid of node devices may include both volatile memory that provides faster access to data and routines, and non-volatile memory that provides higher storage capacity but slower access than the volatile memory. In addition, each node of the grid may include one or more central processing units (CPUs), or may comprise a combination of one or more CPUs and one or more graphics processing units (GPUs), each of which may be more appropriate. to perform different types of tasks of an analysis routine. The initial assignments of data set partitions and task (s) of an analysis routine to node devices may be based on the availability of resources within the node devices and / or automated analysis of the task routines within the analysis routine to identify task routines that are used to execute GPUs instead of CPUs can be converted and compiled. Such an analysis may be performed either in connection with deriving the initial assignments or as part of compiling each of the task routines for execution by CPUs and / or by GPUs. Then, during the execution of task routines of the analysis routine, when a node device becomes available, it may become a next task for Assignment to a particular record partition, such assignment to the one node device is delayed by a predetermined period of time to give another node device, which still performs a previous task with that particular record partition, a chance to become available and assigned to perform this next task with this particular record partition. Such a delay in the assignment may allow the time-limited storage of the particular record partition within the volatile memory of the other node device to be used to thereby more quickly enable the execution of the next task with the particular record partition. Such a delay in assignment may also avoid the occurrence of a potentially larger delay associated with the transmission of the particular record partition to the one node device.

Eine Koordinierungsvorrichtung eines Gitters von Knotenvorrichtungen kann wiederkehrend Knotendaten von jedem der Knoten des Knotenvorrichtungsgitters empfangen, wobei wiederkehrend aktualisierte Anzeigen des Umfangs der Verfügbarkeit verschiedener Verarbeitungs-, Speicher- und/oder Netzzugriffsressourcen in jedem bereitgestellt werden. Die Koordinierungsvorrichtung kann auch eine Analyseroutine empfangen, die ausführbare Anweisungen für mehrere Taskroutinen für mehrere Aufgaben umfasst, die mit wenigstens einem Datensatz durchgeführt werden sollen, und eine Reihenfolge, in der die Aufgaben durchgeführt werden sollen, spezifiziert. Die Koordinierungsvorrichtung kann ferner Metadaten empfangen, die indikativ für verschiedene strukturelle Merkmale von wenigstens dem einen Datensatz sind. Aus den Knotendaten, den Metadaten und/oder der Analyseroutine kann die Koordinierungsvorrichtung anfängliche Zuweisungen von Datensatzpartitionen des wenigstens einen Datensatzes an ausgewählte der Knotenvorrichtungen und anfängliche Zuweisungen der Aufgabe(n) ableiten, die durch die ausgewählten Knotenvorrichtungen durchgeführt werden soll(en). Die Koordinierungsvorrichtung kann dann Anzeigen der anfänglichen Zuweisungen an die ausgewählten Knotenvorrichtungen übertragen. Als Teil derartiger anfänglicher Zuweisungen können mehrere Datensatzpartitionen von wenigstens dem einen Datensatz auf die ausgewählten Knotenvorrichtungen verteilt werden, um den ausgewählten Knotenvorrichtungen zu ermöglichen, die gleichen Aufgaben wenigstens teilweise parallel zu ihren entsprechenden Datensatzpartitionen durchzuführen. Die Koordinierungsvorrichtung kann zusätzlich entweder an eine einzelne Speichervorrichtung oder ein Gitter von Speichervorrichtungen, die bzw. das den Datensatz speichert, Anzeigen der Verteilung von Datensatzpartitionen übertragen, die an die ausgewählten Knotenvorrichtungen als Teil der anfänglichen Zuweisungen vorgenommen werden soll, um zu ermöglichen, dass die Durchführungen der anfänglichen Aufgabe(n) beginnen. In einigen Ausführungsformen kann jede der ausgewählten Knotenvorrichtungen einen oder mehrere der Datensatzpartitionen von der einen oder den mehreren der Speichervorrichtungen abrufen. In anderen Ausführungsformen können eine oder mehrere der Datensatzpartitionen an jede der ausgewählten Knotenvorrichtungen durch die eine oder mehreren der Speichervorrichtungen übertragen werden.A grid device coordinator of node devices may periodically receive node data from each of the nodes of the node device grid, with periodically updated indications of the amount of availability of various processing, storage, and / or network access resources being provided in each one. The coordinator may also receive an analysis routine comprising executable instructions for a plurality of task tasks to be performed on at least one record and an order in which the tasks are to be performed. The coordinator may further receive metadata indicative of various structural features of at least the one record. From the node data, the metadata and / or the analysis routine, the coordinator may derive initial assignments of record partitions of the at least one record to selected ones of the node devices and initial assignments of the task (s) to be performed by the selected node devices. The coordinator may then transmit indications of the initial assignments to the selected node devices. As part of such initial assignments, multiple record partitions of at least the one record may be distributed among the selected node devices to allow the selected node devices to perform the same tasks at least partially in parallel with their respective record partitions. In addition, the coordinator may transmit to either a single storage device or a grid of storage devices that stores the data set displaying the distribution of data set partitions to be made to the selected node devices as part of the initial allocations to enable the distribution device Start executions of the initial task (s). In some embodiments, each of the selected node devices may retrieve one or more of the record partitions from the one or more of the storage devices. In other embodiments, one or more of the record partitions may be transmitted to each of the selected node devices through the one or more of the storage devices.

In Bezug auf die Verarbeitungsressourcen, über die die Koordinierungsvorrichtung wiederkehrend Knotendaten empfangen kann, kann jede der Knotenvorrichtungen eine oder mehrere GPUs zusätzlich zur oder anstelle der Integration einer oder mehrerer CPUs integrieren. Die eine oder mehreren CPUs können eine interne Verarbeitungsarchitektur verwenden, die als gut geeignet für die serielle Verarbeitung von Taskroutinen befunden wird, die verschiedene Eingabe-/Ausgabeoperationen und/oder Verzweigungsoperationen einschließen, die die Ausführung verschiedener Sätze von Anweisungen auf den Ergebnissen von verschiedenen Bestimmungen bedingen. Die eine oder mehreren CPUs können jeweils einen oder mehrere Verarbeitungskerne umfassen, die jeweils einen relativ begrenzten Grad an paralleler Ausführung von Anweisungen auf einer relativ begrenzten Anzahl von Threads der Ausführung unterstützen können. Im Gegensatz dazu können die eine oder mehreren GPUs eine interne Verarbeitungsarchitektur verwenden, die als gut geeignet für die parallele Verarbeitung von Taskroutinen befunden wird, die eine relativ begrenzte Vielfalt von Berechnungen und/oder bitweisen Operationen umfassen. In einigen Ausführungsformen können die eine oder mehreren GPUs in der Lage sein, die parallele Verarbeitung einer relativ großen Menge von Instanzen einer Aufgabe über eine relativ große Anzahl von Threads der Ausführung zu unterstützen, wenn keine Abhängigkeiten zwischen den Instanzen der Aufgabe vorhanden sind (manchmal als „peinlich parallel” bezeichnet). In der Tat kann für eine relativ begrenzte Vielfalt von Aufgaben eine einzelne GPU innerhalb einer einzelnen Knotenvorrichtung in der Lage sein, die gleiche Arbeit wie die CPUs von zahlreichen separaten Knotenvorrichtungen durchzuführen, aber schneller und kostengünstiger. Somit kann es vorteilhaft sein, dass wenigstens eine Teilmenge der Knotenvorrichtungen vorhanden ist, die eine oder mehrere GPUs integrieren, die in der Lage sind, eine solche begrenzte Vielzahl von Aufgaben mit einer derartigen Geschwindigkeitszunahme durchzuführen, und es kann vorteilhaft sein, in der Lage zu sein, Aufgaben in Analyseroutinen automatisch zu identifizieren, die von einer solchen begrenzten Vielzahl sind.With respect to the processing resources over which the coordinator can periodically receive node data, each of the node devices may integrate one or more GPUs in addition to or instead of integrating one or more CPUs. The one or more CPUs may use an internal processing architecture that is found to be well suited for serial processing of task routines involving various input / output operations and / or branch operations that require the execution of different sets of instructions on the results of different determinations , The one or more CPUs may each include one or more processing cores, each of which may support a relatively limited degree of parallel execution of instructions on a relatively limited number of execution threads. In contrast, the one or more GPUs may use an internal processing architecture that is found to be well-suited for the parallel processing of task routines that involve a relatively limited variety of computations and / or bitwise operations. In some embodiments, the one or more GPUs may be capable of supporting the parallel processing of a relatively large set of instances of a task over a relatively large number of threads of execution if there are no dependencies between the instances of the task (sometimes referred to as "Embarrassingly parallel"). In fact, for a relatively limited variety of tasks, a single GPU within a single node device may be able to perform the same work as the CPUs of numerous separate node devices, but faster and more cost effectively. Thus, it may be advantageous to have at least a subset of the node devices that integrate one or more GPUs capable of performing such a limited variety of tasks with such an increase in speed, and it may be advantageous to do so be to automatically identify tasks in analysis routines that are of such a limited variety.

In Ausführungsformen eines Knotenvorrichtungsgitters, in dem einige, aber nicht alle der Knotenvorrichtungen derartige GPUs integrieren, kann, ob eine Analyseroutine Taskroutinen für eine oder mehrere Aufgaben umfasst, die dafür zugänglich sind, von GPUs als peinlich parallele Aufgaben schneller als von CPUs ausgeführt zu werden, die Koordinierungsvorrichtung die Bestimmung veranlassen, ob Priorität der Zuweisung von Knotenvorrichtungen, die GPUs integrieren, oder Knotenvorrichtungen, die GPUs nicht integrieren, gegeben wird, um die Aufgaben der Analyseroutine durchzuführen. Die Koordinierungsvorrichtung kann die Taskroutinen einer Analyseroutine analysieren, um Aufgaben zu identifizieren, die mit Anweisungen implementiert werden und die mit Daten in einer Weise arbeiten, die Abhängigkeiten vermeidet, die bewirken, dass diese Aufgaben dafür zugänglich sind, zur Ausführung als peinlich parallele Aufgaben über eine große Anzahl von Threads durch eine oder mehrere GPUs kompiliert zu werden. Falls keine derartige Taskroutine durch eine derartige Analyse gefunden wird, dann kann die Gesamtheit der Analyseroutine zur Ausführung ausschließlich durch CPUs kompiliert werden. Ebenso kann Priorität der Zuweisung von Aufgaben der Analyseroutine gegeben werden, die von Knotenvorrichtungen ausgeführt werden sollen, die keine GPUs integrieren und/oder die eine oder mehrere CPUs sowie eine oder mehrere GPUs integrieren. Eine derartige Priorisierung kann bewirkt werden, um so viele der Knoten, die eine oder mehrere GPUs integrieren, so verfügbar wie möglich zu lassen, um Aufgaben einer anderen Analyseroutine zugewiesen zu bekommen, in der die Anweisungen und/oder Interaktion mit Daten in einer oder mehreren Taskroutinen dafür zugänglich sind, zur Ausführung als peinlich parallele Aufgaben durch GPUs kompiliert zu werden. In embodiments of a node device grid in which some, but not all, of the node devices integrate such GPUs, whether an analysis routine includes task routines for one or more tasks accessible to be executed by GPUs as scrupulously parallel tasks faster than CPUs, the coordinator device will determine whether priority is given to the allocation of node devices that integrate GPUs or node devices that do not integrate GPUs to perform the tasks of the analysis routine. The coordinator may analyze the task routines of an analysis routine to identify tasks that are implemented with instructions and that operate on data in a manner that avoids dependencies that make those tasks accessible thereto, for execution as embarrassing parallel tasks over one large number of threads to be compiled by one or more GPUs. If no such task routine is found by such an analysis, then the set of analysis routines can be compiled for execution only by CPUs. Also, priority may be given to the assignment of tasks of the analysis routines to be performed by node devices that do not integrate GPUs and / or integrate the one or more CPUs and one or more GPUs. Such prioritization may be effected to leave as many of the nodes integrating one or more GPUs as available as possible to be assigned to tasks of another analysis routine, in which the instructions and / or interaction with data in one or more Task routines are available for execution as embarrassing parallel tasks to be compiled by GPUs.

Es sollte jedoch angemerkt werden, dass, obgleich die Ergebnisse der Analyse der Taskroutinen einer Analyseroutine einen gewissen Einfluss darauf ausüben können, welche Knotenvorrichtungen für die Zuweisung von Aufgaben ausgewählt werden, in einigen Ausführungsformen Anzeigen dafür, welche Verarbeitungsressourcen unter den verfügbaren Knotenvorrichtungen verfügbar sind, einen gewissen Einfluss darauf haben können, ob die Taskroutinen zur Ausführung durch GPUs analysiert und/oder kompiliert werden. Insbesondere in Ausführungsformen, in denen keine der Knotenvorrichtungen, die GPUs integrieren, aktuell verfügbar sind, um irgendeiner Aufgabe zugewiesen zu werden (z. B. sind alle Knotenvorrichtungen, die GPUs integrieren, zugewiesen, um Aufgaben einer anderen und gänzlich nicht verwandten Analyseroutine durchzuführen), kann die Koordinierungsvorrichtung möglicherweise davon absehen, irgendeine Analyse der Taskroutinen durchzuführen, um zu bestimmen, ob irgendwelche der Taskroutinen dafür zugänglich sind, zur Ausführung durch eine GPU kompiliert zu werden, da aktuell keine GPUs hierfür verfügbar sind.It should be noted, however, that although the results of the analysis of the task routines of an analysis routine may have some influence on which node devices are selected for the assignment of tasks, in some embodiments, indications of which processing resources are available among the available node devices is one may have some influence on whether the task routines are parsed and / or compiled for execution by GPUs. In particular, in embodiments where none of the node devices that integrate GPUs are currently available to be assigned to any task (eg, all node devices that integrate GPUs are assigned to perform tasks of a different and completely unrelated analysis routine). For example, the coordinator may refrain from performing any analysis of the task routines to determine if any of the task routines are accessible to compile for execution by a GPU, as currently no GPUs are available for this purpose.

Wenn eine Analyse der Anweisungen innerhalb Taskroutinen durchgeführt wird, kann eine derartige Analyse Vergleiche von Anweisungen für jede Taskroutine mit einer Liste von Anweisungen, die jeweils dafür bekannt sind, wenigstens nicht zu verhindern, dass ihre entsprechenden Aufgaben als peinlich parallele Aufgaben durch eine GPU durchgeführt werden, und/oder mit einer Liste von Anweisungen, von denen jeweils bekannt ist, dass sie eine Aufgabe wiedergeben, die unfähig ist, als eine peinlich parallele Aufgabe durch eine GPU durchgeführt zu werden, zur Folge haben. Zusätzlich, wenn eine Taskroutine keine Anweisungen umfasst, die ihre entsprechende Aufgabe als unfähig wiedergeben, als eine peinlich parallele Aufgabe durch eine GPU durchgeführt zu werden, kann die Weise, in der die Anweisungen innerhalb dieser Taskroutine verwendet werden, analysiert werden, um zu bestimmen, ob die Weise, in der irgendwelche Anweisungen verwendet werden, die entsprechende Aufgabe als unfähig wiedergibt, als eine peinlich parallele Aufgabe durch eine GPU durchgeführt zu werden. Beispielhaft, falls derartige Anweisungen verwendet werden, um Operationen auf Daten in einer Weise durchzuführen, die Abhängigkeiten zwischen Instanzen einer Taskroutine erzeugen würden, so dass diese Instanzen nicht wirklich parallel durchgeführt werden könnten, kann die Aufgabe der Taskroutine dann möglicherweise nicht dafür zugänglich sein, als eine peinlich parallele Aufgabe durchgeführt zu werden. Falls bestimmt wird, dass die Anweisungen einer Taskroutine und die Weise, in der diese Anweisungen verwendet werden, nicht verhindern, dass die entsprechende Aufgabe als eine peinlich parallele Aufgabe durch eine GPU durchgeführt wird, dann kann das Kompilieren der Anweisungen der Taskroutine für eine derartige Ausführung durch eine oder mehrere GPUs die standardmäßige Vorgehensweise sein. Wenn das Knotenvorrichtungsgitter Knotenvorrichtungen umfasst, die unterschiedliche GPUs integrieren, die keinen Anweisungssatz teilen, kann die Kompilierung der Taskroutine für eine derartige Ausführung durch eine oder mehrere GPUs mehrere Kompilierungen der Taskroutine zur Unterstützung von jeder der unterschiedlichen GPUs zur Folge haben.When performing an analysis of the instructions within task routines, such an analysis may at least not prevent comparisons of instructions for each task routine with a list of instructions that are each known to perform their respective tasks as scrupulously parallel tasks by a GPU , and / or with a list of instructions, each known to reflect a task incapable of being performed as a scrupulously parallel task by a GPU. In addition, if a task routine does not include instructions that render its corresponding task as unable to be performed as a scrupulously parallel task by a GPU, the manner in which the instructions within that task routine are used may be analyzed to determine whether the manner in which any instructions are used will render the corresponding task incapable of being performed as a scrupulously parallel task by a GPU. By way of example, if such instructions are used to perform operations on data in a manner that would create dependencies between instances of a task routine such that these instances could not actually be performed in parallel, then the task routine task may not be accessible to it an embarrassingly parallel task to be performed. If it is determined that the instructions of a task routine and the manner in which these instructions are used do not prevent the corresponding task from being performed as a scrupulously parallel task by a GPU, then compiling the instructions of the task routine may be for such execution be the standard procedure through one or more GPUs. If the node device grid includes node devices that integrate different GPUs that do not share an instruction set, compilation of the task routine for such execution by one or more GPUs may result in multiple compilations of the task routine to support each of the different GPUs.

In einigen Ausführungsformen kann das Kompilieren einer Taskroutine zur Durchführung einer Aufgabe, von der bestimmt wurde, dass sie dafür zugänglich ist, als eine peinlich parallele Aufgabe durch eine GPU durchgeführt zu werden, eine Umwandlung von Anweisungen der Taskroutine, die nicht erzeugt wurden, um eine derartige peinlich parallele Durchführung der Aufgabe durch eine GPU zu veranlassen, in Anweisungen, die erzeugt werden, um eine derartige Durchführung der Aufgabe zu veranlassen, zur Folge haben. Ein Compiler, um eine derartige Umwandlung durchzuführen, kann einen Satz von Kompilierregeln verwenden, die jeweils mit einer oder mehreren bestimmten Anweisungen assoziiert sind, die unter den Anweisungen der Taskroutine vorhanden sein können, und die die eine oder mehreren bestimmten Anweisungen veranlassen, in eine oder mehrere andere Anweisungen umgewandelt zu werden, die eine peinlich parallele Ausführung durch eine GPU bewirken. Unter derartigen Kompilierregeln können Regeln sein, die jeweils die Umwandlung eines bestimmten Typs von Schleife von Anweisungen in einen anderen Typ von Schleife veranlassen, die für eine peinlich parallele Ausführung durch eine GPU zugänglicher ist (z. B. eine Schleife mit einer reduzierten Anzahl von Iterationen), und/oder die den Ersatz eines bestimmten Typs von Schleife von Anweisungen mit einer oder mehreren anderen Anweisungen zur Ausführung durch eine GPU in einer peinlich parallelen Weise veranlassen, die nicht die Verwendung einer Schleife zur Folge hat. Es kann auch ein Satz von Kompilierregeln vorhanden sein, die jeweils mit einem bestimmten Typ von Datenstruktur assoziiert sind, die durch die Anweisungen der Taskroutine instanziiert oder anderweitig verwendet werden kann, und die veranlassen, dass die Datenstruktur in eine andere Datenstruktur umgewandelt wird, die für die Verwendung in einer peinlich parallelen Ausführung durch eine GPU zugänglicher ist.In some embodiments, compiling a task routine to perform a task that is determined to be operable as a scrupulously parallel task by a GPU may involve a conversion of instructions of the task routine that were not generated Such embarrassing parallel execution of the task by a GPU to result in instructions that are generated to cause such a performance of the task. A compiler to do such a transformation can use a set of compile rules, each associated with one or more particular instructions that may be present under the instructions of the task routine and that cause the one or more particular instructions to be converted to one or more other instructions that cause scrupulous parallel execution by a GPU , Among such compile rules may be rules that each cause the conversion of a particular type of loop from instructions to another type of loop that is more amenable to scrupulously parallel execution by a GPU (eg, a loop with a reduced number of iterations ), and / or which cause replacement of a particular type of loop of instructions with one or more other instructions for execution by a GPU in an embarrassingly parallel manner that does not result in the use of a loop. There may also be a set of compile rules, each associated with a particular type of data structure that can be instantiated or otherwise used by the instructions of the task routine, and that cause the data structure to be converted to another data structure used for the use in an embarrassingly parallel execution by a GPU is more accessible.

Durch die Verwendung derartiger Umwandlungen von Anweisungen einer oder mehrerer Taskroutinen kann dem Personal, das die Anweisungen der Taskroutinen einer Analyseroutine schreibt, die Möglichkeit gegeben werden, die peinlich parallelen Verarbeitungsfähigkeiten der einen oder mehreren GPUs zu nutzen, die in wenigstens einigen der Knotenvorrichtungen integriert sind, ohne die Notwendigkeit, die Anweisungen der Taskroutinen speziell für die peinlich parallele Ausführung durch GPUs zu schreiben. Anders ausgedrückt, kann diesem Personal die Notwendigkeit erspart bleiben, die Fähigkeiten zu erwerben, um die Anweisungen zu architektieren und zu schreiben, die die Aufgaben einer Analyseroutine in einer Weise implementieren, die für eine peinlich parallele Ausführung durch GPUs ausgelegt ist. Zusätzlich bleibt, wenn das Knotenvorrichtungsgitter Knotenvorrichtungen umfasst, die unterschiedliche GPUs integrieren, die keinen Anweisungssatz teilen, diesem Personal ferner die Notwendigkeit erspart, verschiedene Versionen der Anweisungen der Taskroutinen zu architektieren und zu schreiben, um die unterschiedlichen Eigenheiten der peinlich parallelen Ausführung durch jede der verschiedenen GPUs zu adressieren.By using such conversions of instructions of one or more task routines, personnel writing the instructions of the task routines of an analysis routine may be given the opportunity to utilize the embarrassingly parallel processing capabilities of the one or more GPUs integrated in at least some of the node devices. without the need to write the instructions of the task routines specifically for embarrassing parallel execution by GPUs. In other words, this staff may be spared the need to acquire the skills to architect and write the instructions that implement the tasks of an analysis routine in a manner designed for scrupulously parallel execution by GPUs. In addition, if the node gadget includes node devices that integrate different GPUs that do not share a set of instructions, then that staff will also be spared the need to architect and write different versions of the instructions of the task routines to handle the different characteristics of the embarrassingly parallel execution of each of the different ones To address GPUs.

In Bezug auf die Speicherressourcen, über die die Koordinierungsvorrichtung wiederkehrend Knotendaten empfangen kann, kann jede der Knotenvorrichtungen Speicherfähigkeiten integrieren, die als eine Kombination aus flüchtigem und nicht-flüchtigem Speicher implementiert sind. Der flüchtige Speicher kann mit einer oder mehreren Speicherkomponenten implementiert sein, die eine Speichertechnologie einsetzen, die einen relativ schnellen Zugriff auf Daten und/oder Routinen ermöglicht, aber nicht in der Lage ist, darin gespeicherte Daten und/oder Routinen ohne kontinuierliche Zufuhr von elektrischer Leistung zu behalten. Derartige Technologien schließen unter anderem beliebige einer Vielzahl von Typen von Direktzugriffsspeicher (Random Access Memory, RAM) ein. Der nicht-flüchtige Speicher kann mit einer oder mehreren Speicherkomponenten implementiert sein, die eine Speichertechnologie einsetzen, die in der Lage ist, darin gespeicherte Daten und/oder Routinen zu behalten, unabhängig davon, ob elektrische Leistung weiterhin bereitgestellt wird, die aber nicht in der Lage ist, Zugriff bereitzustellen, der so schnell wie der ist, der von verschiedenen flüchtigen Speichertechnologien bereitgestellt wird, auf denen der flüchtige Speicher basieren kann. Derartige Technologien für nicht-flüchtigen Speicher schließen unter anderem die Verwendung von einer beliebigen einer Vielzahl von ferromagnetischen und/oder optischen Speichermedien ein.With respect to the memory resources over which the coordinator can periodically receive node data, each of the node devices can integrate memory capabilities implemented as a combination of volatile and non-volatile memory. The volatile memory may be implemented with one or more memory components employing memory technology that provides relatively quick access to data and / or routines, but is unable to store data and / or routines stored therein without a continuous supply of electrical power to keep. Such technologies include, but are not limited to, any of a variety of types of Random Access Memory (RAM). The non-volatile memory may be implemented with one or more memory components employing memory technology capable of retaining data and / or routines stored therein, whether or not electrical power is still provided It is able to provide access as fast as that provided by various volatile storage technologies on which the volatile memory can be based. Such non-volatile memory technologies include the use of any of a variety of ferromagnetic and / or optical storage media.

Aufgrund des schnelleren Zugriffs, der durch den flüchtigen Speicher im Vergleich zum nicht-flüchtigen Speicher bereitgestellt wird, können Anweisungen, die gerade von der einen oder den mehreren CPUs und/oder der einen oder den mehreren GPUs ausgeführt werden, die in jede Knotenvorrichtung integriert sind, innerhalb flüchtigem Speicher gespeichert werden, wo sie schneller gelesen, geschrieben und/oder modifiziert werden können. Aufgrund der oft geringeren Kosten und/oder höheren Speicherdichten der nicht-flüchtigen Speicherkomponenten im Vergleich zu den flüchtigen Speicherkomponenten kann der nicht-flüchtige Speicher jedoch mit einer höheren Speicherkapazität als der flüchtige Speicher innerhalb jeder der Knotenvorrichtungen implementiert werden. Obwohl es möglicherweise Datensätze gibt, die ausreichend klein sind und/oder die auf eine ausreichend große Anzahl von Knotenvorrichtungen verteilt sind, um zu bewirken, dass jede Datensatzpartition des Datensatzes, die an eine Knotenvorrichtung verteilt wird, ausreichend klein ist, um vollständig innerhalb von flüchtigem Speicher speicherbar zu sein, ist vorgesehen, dass die Datensatzpartitionen der Mehrheit von Datensätzen jeweils eher zu groß sind, um dies zu tun.Because of the faster access provided by the volatile memory as compared to the non-volatile memory, instructions that are being executed by the one or more CPUs and / or the one or more GPUs integrated into each node device may be executed , stored within volatile memory, where they can be read, written and / or modified faster. However, because of the often lower cost and / or higher storage densities of the non-volatile memory components compared to the volatile memory components, the non-volatile memory may be implemented with a higher storage capacity than the volatile memory within each of the node devices. Although there may be records that are sufficiently small and / or that are distributed among a sufficient number of node devices to cause each record partition of the record that is distributed to a node device to be sufficiently small to be completely within volatile Memory to be stored, it is envisaged that the data set partitions of the majority of data sets are each rather too large to do so.

Infolgedessen können innerhalb jeder Knotenvorrichtung Seiten von Routinen, die ausgeführt werden, und/oder von Daten, auf die von der einen oder den mehreren CPUs und/oder der einen oder den mehreren GPUs zugegriffen wird, von nicht-flüchtigem Speicher in flüchtigen Speicher ausgetauscht werden. Wie Fachleuten auf dem Gebiet bekannt sein kann, kann jeder beliebige einer Vielzahl von Algorithmen verwendet werden, um Seiten von Routinen und/oder von Daten auszuwählen, die in flüchtigen Speicher ausgetauscht werden sollen, und/oder um Seiten auszuwählen, die innerhalb von flüchtigem Speicher gehalten werden sollen, während andere zurück zum nicht-flüchtigen Speicher ausgetauscht werden, einschließlich unter anderem beliebiger einer Vielzahl von nachfragebasierten und/oder prädiktiven Algorithmen. In einer oder mehreren Ausführungsformen können eine oder mehrere der Knotenvorrichtungen ein Betriebssystem (Operating System, OS) ausführen, das eine Paging-Komponente umfasst, die ein derartiges Austauschen von einheitlich großen Seiten von Routinen und/oder Daten durchführt. Abhängig von verschiedenen Faktoren, wie beispielsweise den Typen der durchgeführten Operationen, der Häufigkeit von Zugriffen auf verschiedene Seiten von Routinen und/oder von Daten und/oder der Anzahl von Routinen, die parallel ausgeführt werden, kann eine Seite einer Routine und/oder von Daten innerhalb eines flüchtigen Speichers für eine längere oder kürzere Zeitperiode behalten werden, bevor sie zurück zum nicht-flüchtigen Speicher ausgetauscht wird, um Platz innerhalb des flüchtigen Speichers für eine andere Seite einer Routine und/oder von Daten freizugeben. Somit kann die Speicherung von Seiten von Routinen und/oder von Daten innerhalb eines flüchtigen Speichers innerhalb jeder der Knotenvorrichtungen zeitlich begrenzt sein.As a result, within each node device, pages of routines being executed and / or data being accessed by the one or more CPUs and / or the one or more GPUs may be swapped from non-volatile memory to volatile memory , As may be known to those skilled in the art, any of a variety of algorithms can be used to select pages of routines and / or data that are swapped into volatile memory and / or to select pages to be held in volatile memory while others are swapped back to non-volatile memory, including, but not limited to, any of a variety of demand-based and / or predictive algorithms. In one or more embodiments, one or more of the node devices may execute an operating system (OS) that includes a paging component that performs such exchanging of uniformly sized pages of routines and / or data. Depending on various factors, such as the types of operations performed, the frequency of accesses to different pages of routines and / or data, and / or the number of routines executed in parallel, one page may be a routine and / or data within a volatile memory for a longer or shorter period of time before being swapped back to the non-volatile memory to free space within the volatile memory for another side of a routine and / or data. Thus, the storage of pages of routines and / or data within a volatile memory within each of the node devices may be time limited.

In Knotenvorrichtungen, die sowohl eine oder mehrere CPUs als auch eine oder mehrere GPUs integrieren, kann es einen flüchtigen Speicher für die eine oder mehreren CPUs und einen weiteren flüchtigen Speicher für die eine oder mehreren GPUs geben. Jedoch kann es einen einzelnen nicht-flüchtigen Speicher geben, und Seiten von Routinen und/oder von Daten können zwischen dem einzelnen nicht-flüchtigen Speicher und jedem der zwei flüchtigen Speicher ausgetauscht werden. In einigen Ausführungsformen kann der Betrieb der einen oder mehreren GPUs wenigstens teilweise durch die eine oder mehreren CPUs gesteuert werden, so dass die eine oder mehreren GPUs nicht vollständig autonom von der einen oder den mehreren CPUs betrieben werden können. In derartigen Ausführungsformen kann der flüchtige Speicher, der mit der einen oder den mehreren GPUs assoziiert ist, auch für die eine oder mehreren CPUs zugänglich sein, und eine Speicherseitenmanagementroutine, die von der einen oder den mehreren CPUs ausgeführt wird, um ein Austauschen von Seiten von Routinen und/oder Daten für die eine oder mehreren CPUs durchzuführen, kann auch ein derartiges Austauschen von Seiten von Routinen und/oder von Daten für die eine oder mehreren GPUs durchführen. Wie Fachleuten auf dem Gebiet bekannt sein kann, kann ein derartiges Austauschen durch die eine oder mehreren CPUs im Auftrag der einen oder mehreren GPUs aufgrund der Notwendigkeit auftreten, dass eine oder mehrere Treiberroutinen durch die eine oder mehreren CPUs ausgeführt werden sollen, um den Zugriff auf den nicht-flüchtigen Speicher zu ermöglichen und/oder ein Dateisystem zu nutzen, das beim Speichern von Daten und/oder Routinen als Dateien mit dem nicht-flüchtigen Speicher verwendet wird. Somit kann unabhängig von der genauen Weise, in der jede der ausgewählten Knotenvorrichtungen mit einer Datensatzpartition versehen ist, eine derartige empfangene Datensatzpartition anfänglich vollständig innerhalb des nicht-flüchtigen Speichers innerhalb jeder Knotenvorrichtung gespeichert werden. Nach einem derartigen Empfang und Speichern können dann Seiten der empfangenen Datensatzpartition nach Bedarf in den flüchtigen Speicher der einen oder mehreren CPUs und/oder der einen oder mehreren GPUs ausgetauscht werden, um die Durchführung einer oder mehrerer Aufgaben einer Analyseroutine mit der Datensatzpartition zu unterstützen.In node devices that integrate both one or more CPUs and one or more GPUs, there may be volatile memory for the one or more CPUs and another volatile memory for the one or more GPUs. However, there may be a single non-volatile memory, and pages of routines and / or data may be exchanged between the single non-volatile memory and each of the two volatile memories. In some embodiments, the operation of the one or more GPUs may be at least partially controlled by the one or more CPUs such that the one or more GPUs may not be fully autonomous from the one or more CPUs. In such embodiments, the volatile memory associated with the one or more GPUs may also be accessible to the one or more CPUs, and a memory page management routine executed by the one or more CPUs to swap pages from Routines and / or data for the one or more CPUs may also perform such swapping of pages of routines and / or data for the one or more GPUs. As those skilled in the art may appreciate, such replacement by the one or more CPUs on behalf of the one or more GPUs may occur due to the need for one or more driver routines to be executed by the one or more CPUs to access to allow the non-volatile memory and / or to use a file system used in storing data and / or routines as files with the non-volatile memory. Thus, regardless of the exact manner in which each of the selected node devices is provided with a record partition, such a received record partition may initially be completely stored within the non-volatile memory within each node device. After such receipt and storage, pages of the received record partition may then be swapped as needed into the volatile memory of the one or more CPUs and / or the one or more GPUs to assist in performing one or more tasks of an analysis routine with the record partition.

In Bezug auf die Netzzugriffsressourcen, über die die Koordinierungsvorrichtung wiederkehrend Knotendaten empfangen kann, kann jede der Knotenvorrichtungen eine Netzschnittstelle zu einem Netz integrieren, das vom Knotenvorrichtungsgitter verwendet wird, um die Knotenvorrichtungen kommunikativ miteinander, mit der Koordinierungsvorrichtung und/oder mit einer oder mehreren Speichervorrichtungen (z. B. einem Speichervorrichtungsgitter) zu koppeln. Die Taskroutinen, die von der/den CPU(s) und/oder der/den GPU(s) ausgeführt werden, um Aufgaben von Analyseroutinen auszuführen, können durch die Koordinierungsvorrichtung an Knotenvorrichtungen über das Netz verteilt werden. Auch können die Datensatzpartitionen, mit denen die Aufgaben durchgeführt werden, von der einen oder den mehreren Speichervorrichtungen an die Knotenvorrichtungen über das Netz übertragen werden, und Datensatzpartitionen, die innerhalb des Knotens abgeleitet werden, können zurück an die eine oder mehreren Speichervorrichtungen übertragen werden. Wie Fachleuten auf dem Gebiet bekannt sein kann, können in einigen Ausführungsformen die eine oder mehreren GPUs einer Knotenvorrichtung nicht in der Lage sein, die Netzschnittstelle der Knotenvorrichtung direkt zu betreiben, um einen Austausch von Routinen und/oder Daten zu bewirken, die mit einer Durchführung einer Aufgabe durch die eine oder mehreren GPUs assoziiert sind. Stattdessen können, in einer ähnlichen Weise wie das Austauschen von Seiten, die mit der einen oder den mehreren GPUs zwischen flüchtigem und nicht-flüchtigem Speicher assoziiert sind, die einen oder mehreren CPUs der Knotenvorrichtung so die Netzschnittstelle im Auftrag der einen oder mehreren GPUs betreiben. Wie bereits erwähnt, kann eine derartige Aktion im Auftrag der einen oder mehreren GPUs durch die eine oder mehreren CPUs durch die Notwendigkeit bedingt sein, dass eine oder mehrere Treiberroutinen durch die eine oder mehreren CPUs ausgeführt werden sollen, um Zugriff auf die Netzschnittstelle zu ermöglichen.With respect to the network access resources over which the coordinator can periodically receive node data, each of the node devices may integrate a network interface to a network used by the node device grid to communicate with the node devices communicatively with each other, with the coordinator, and / or with one or more memory devices ( eg a memory device grid). The task routines executed by the CPU (s) and / or the GPU (s) to perform analysis routine tasks may be distributed by the coordinator to node devices over the network. Also, the record partitions with which the tasks are performed may be transferred from the one or more storage devices to the node devices over the network, and record partitions derived within the node may be transmitted back to the one or more storage devices. As may be known to those skilled in the art, in some embodiments, the one or more GPUs of a node device may not be able to directly operate the network interface of the node device to effect an exchange of routines and / or data to be performed a task by which one or more GPUs are associated. Instead, in a similar manner as exchanging pages associated with the one or more GPUs between volatile and non-volatile memory, the one or more CPUs of the node device may operate the network interface on behalf of the one or more GPUs. As previously mentioned, such an action on behalf of the one or more GPUs may be due to the need of one or more CPU routines to be executed by the one or more CPUs to allow access to the network interface.

So wie der Zugriff auf Routinen und/oder Daten, die innerhalb eines nicht-flüchtigen Speichers einer Knotenvorrichtung gespeichert sind, beträchtlich langsamer sein kann als der Zugriff auf Routinen und/oder Daten, die innerhalb eines flüchtigen Speichers gespeichert sind, kann der Zugriff auf Routinen und/oder Daten, die innerhalb einer anderen Vorrichtung gespeichert sind, über ein Netz noch wesentlich langsamer sein. Zusätzlich kann in einigen Ausführungsformen der Zugriff auf Routinen und/oder Daten, die entweder innerhalb des nichtflüchtigen Speichers oder innerhalb einer anderen Vorrichtung gespeichert sind, über das Netz sogar langsamer sein für die eine oder mehreren GPUs aufgrund ihrer Abhängigkeit von der einen oder den mehreren CPUs der Knotenvorrichtung, um Maßnahmen zu ergreifen, um einen derartigen Zugriff im Auftrag der einen oder mehreren GPUs zu ermöglichen. Somit kann es als wünschenswert erachtet werden, warm immer möglich, Zugriffe, die auf Routinen und/oder Daten vorgenommen wurden, zu maximieren, während sie noch innerhalb eines flüchtigen Speichers gespeichert sind, der mit der/den CPU(s) und/oder GPU(s) verbunden ist, die diese Zugriffe vornehmen, und Zugriffe auf Routinen und/oder Daten zu minimieren, während sie in einem nicht-flüchtigen Speicher und/oder innerhalb anderer Vorrichtungen gespeichert sind, so dass der Zugriff über das Netz erfolgen muss. Dies kann zur Folge haben, dass einige Knotenvorrichtungen des Knotenvorrichtungsgitters für verschiedene Zeitperioden untätig werden, um die Verfügbarkeit bestimmter Knotenvorrichtungen zur Verwendung bei der Durchführung bestimmter Aufgaben mit bestimmten Datensatzpartitionen abzuwarten, anstatt sofort Aufgaben jedem Knoten zuzuweisen, der zur Verwendung bei der Durchführung einer Aufgabe verfügbar wird, unabhängig davon, welche Knotenvorrichtungen bereits bestimmte Datensatzpartitionen innerhalb ihrer Speicher aufweisen. Anders ausgedrückt, kann die Zuweisung einer nächsten Aufgabe eine Zeitperiode lang verzögert werden, um zu ermöglichen, dass eine bestimmte Knotenvorrichtung, in der eine bestimmte Datensatzpartition gespeichert ist, wieder verfügbar wird, um eine nächste Aufgabe zugewiesen zu bekommen, die die Verwendung der speziellen Datensatzpartition beinhaltet, anstatt sofort die nächste Aufgabe einer anderen Knotenvorrichtung zuzuweisen, an die die bestimmte Datensatzpartition übertragen werden müsste. Zusätzlich, wenn es mehrere Aufgaben gibt, die mit einer bestimmten Partition durchgeführt werden sollen, die unter Verwendung einer GPU durchgeführt werden können, kann das Verzögern der Zuweisung der nächsten dieser mehreren Aufgaben, um die Möglichkeit zu geben, diese nächste dieser Aufgaben einer Knotenvorrichtung zuzuweisen, die eine GPU integriert und die bereits die jeweilige Datensatzpartition speichert, eine Situation vermeiden, bei der die sofortige Zuweisung der nächsten Aufgabe an die nächste verfügbare Knotenvorrichtung zu einer Zuweisung an eine Knotenvorrichtung führen kann, die keine GPU integriert, was somit zu einer langsameren Durchführung der nächsten dieser Aufgaben führt. Just as accessing routines and / or data stored within a non-volatile memory of a node device may be considerably slower than accessing routines and / or data stored within a volatile memory, access to routines may be and / or data stored within another device may be much slower across a network. Additionally, in some embodiments, accessing routines and / or data stored either within nonvolatile memory or within another device may even be slower across the network for the one or more GPUs due to their dependency on the one or more CPUs the node device to take action to allow such access on behalf of the one or more GPUs. Thus, it may be considered desirable to always maximize accesses made to routines and / or data while still stored within a volatile memory associated with the CPU (s) and / or GPU (s) making these accesses and minimizing accesses to routines and / or data while stored in non-volatile memory and / or within other devices such that access must occur over the network. This may result in some node devices of the node device grid becoming idle for different time periods to await the availability of particular node devices for use in performing certain tasks with particular record partitions rather than immediately assigning tasks to each node available for use in performing a task regardless of which node devices already have specific record partitions within their memory. In other words, the assignment of a next task may be delayed for a period of time to allow a particular node device in which a particular record partition is stored to become available again to be assigned a next task involving the use of the particular record partition instead of immediately allocating the next task to another node device to which the particular record partition would need to be transferred. In addition, if there are multiple tasks to be performed on a particular partition that can be performed using a GPU, delaying the assignment of the next of these multiple tasks may allow for the ability to assign this next of these tasks to a node device , which integrates a GPU and already stores the respective record partition, avoid a situation where the immediate assignment of the next task to the next available node device may result in an allocation to a node device that does not integrate a GPU, thus resulting in slower performance the next of these tasks.

Somit, wenn beispielsweise eine erste Knotenvorrichtung, die mit der Durchführung einer ersten Aufgabe einer Analyse mit einer ersten Datensatzpartition eines Datensatzes beschäftigt war, ihre Durchführung der ersten Aufgabe mit der ersten Datensatzpartition abschließt und dadurch verfügbar wird, so dass sie zugewiesen werden könnte, um eine zweite Aufgabe der Analyse mit einer zweiten Datensatzpartition des Datensatzes durchzuführen, kann die Koordinierungsvorrichtung davon absehen, die erste Knotenvorrichtung zuzuweisen, um die zweite Aufgabe mit der zweiten Datensatzpartition für eine vorbestimmte Zeitperiode durchzuführen. Die vorbestimmte Zeitperiode kann ausgewählt werden, um eine Möglichkeit für eine zweite Knotenvorrichtung bereitzustellen, die immer noch mit der Durchführung der ersten Aufgabe mit der zweiten Datensatzpartition beschäftigt ist, um ihre Durchführung der ersten Aufgabe mit der zweiten Datensatzpartition abzuschließen, so dass die zweite Knotenvorrichtung in der Lage ist, die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen. Falls jedoch die zweite Knotenvorrichtung nicht verfügbar wird, zugewiesen zu werden, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen, dann kann einer anderen Knotenvorrichtung, in der die zweite Datensatzpartition nicht bereits gespeichert ist, diese Durchführung zugewiesen werden (z. B. der ersten Knotenvorrichtung). Alternativ kann in anderen Ausführungsformen, falls es noch eine andere Knotenvorrichtung gibt, in der die zweite Datensatzpartition auch in Vorbereitung für die Verwendung dieser anderen Knotenvorrichtung als ein Backup in Reaktion auf einen Ausfall einer Knotenvorrichtung gespeichert wurde, die eine Aufgabe mit der zweiten Datensatzpartition durchführt, und falls die zweite Knotenvorrichtung nicht verfügbar wird, um zugewiesen zu werden, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen, und falls eine derartige andere Knotenvorrichtung aktuell verfügbar ist, um zugewiesen zu werden, die derartige andere Knotenvorrichtung so zugewiesen werden.Thus, for example, if a first node device that was busy performing a first task of analysis with a first record partition of a record completes its execution of the first task with the first record partition and thereby becomes available so that it could be assigned a second task of the analysis with a second record partition of the record, the coordinator may refrain from assigning the first node device to perform the second task with the second record partition for a predetermined period of time. The predetermined time period may be selected to provide an opportunity for a second node device that is still busy performing the first task with the second record partition to complete its performance of the first task with the second record partition, such that the second node device in FIG is able to perform the second task with the second record partition. However, if the second node device becomes unavailable to be assigned to perform the second task with the second record partition, then that other execution device may be assigned to another node device in which the second record partition is not already stored (eg, the first one node device). Alternatively, in other embodiments, if there is another node device in which the second record partition has also been stored in preparation for using that other node device as a backup in response to a failure of a node device performing a task with the second record partition, and if the second node device becomes unavailable to be assigned to perform the second task with the second record partition, and if such other node device is currently available to be assigned, the other such node device is so assigned.

Auf diese Weise kann die Tatsache genutzt werden, dass die zweite Datensatzpartition bereits innerhalb der flüchtigen und/oder nicht-flüchtigen Speicher der zweiten Knotenvorrichtung gespeichert ist, so dass die zweite Datensatzpartition nicht zwischen Vorrichtungen ausgetauscht werden muss, um die Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition durch eine andere Knotenvorrichtung zu ermöglichen. Anders ausgedrückt, wäre die Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition der ersten Knotenvorrichtung zugewiesen worden, dann hätte die zweite Datensatzpartition entweder von der zweiten Knotenvorrichtung oder von der einen oder den mehreren Speichervorrichtungen an die erste Knotenvorrichtung übertragen werden müssen. Zusätzlich zum Verbrauch der verfügbaren Bandbreite des Netzes und der Netzschnittstelle von wenigstens der ersten Knotenvorrichtung würde die Durchführung durch die erste Knotenvorrichtung der zweiten Aufgabe mit der zweiten Datensatzpartition notwendigerweise verzögert werden, bis wenigstens ausreichend von der zweiten Datensatzpartition durch die erste Knotenvorrichtung empfangen würde, um zu ermöglichen, dass die Durchführung beginnt.In this way, the fact can be utilized that the second data set partition is already stored within the volatile and / or non-volatile memory of the second node device, so that the second data set partition does not have to be exchanged between devices in order to carry out the second task with the enable second record partition by another node device. In other words, if the second task with the second record partition had been assigned to the first node device, then the second record partition would have had to be transferred from the second node device or from the one or more storage devices to the first node device. In addition to consuming the available bandwidth of the network and the Network interface of at least the first node device, the execution by the first node device of the second task would necessarily be delayed with the second data set partition until at least enough of the second data set partition would be received by the first node device to allow execution to commence.

Als ein anderes Beispiel können jede einer ersten Knotenvorrichtung, die mit der Durchführung einer ersten Aufgabe einer Analyseroutine beschäftigt war, um eine erste Datensatzpartition eines Datensatzes zu erzeugen, und einer zweiten Knotenvorrichtung, die mit der Durchführung der ersten Aufgabe beschäftigt war, um eine zweite Datensatzpartition des Datensatzes zu erzeugen, beide ihre Durchführungen der ersten Aufgabe abschließen. Während jedoch die erste Knotenvorrichtung verfügbar sein kann, um einer anderen Aufgabe zugewiesen zu werden, kann die zweite Knotenvorrichtung (als Ergebnis der Freigabe von Knotenvorrichtungen unter mehreren nicht verwandten Analysen) mit der Durchführung einer Aufgabe einer nicht verwandten Analyseroutine beschäftigt sein, so dass die zweite Knotenvorrichtung noch nicht verfügbar sein kann, um zugewiesen zu werden, um eine zweite Aufgabe der Analyseroutine mit der zweiten Datensatzpartition durchzuführen, die die zweite Knotenvorrichtung selbst erzeugt hat. Wie bereits erwähnt, kann die Koordinierungsvorrichtung davon absehen, die erste Knotenvorrichtung zuzuweisen, um die zweite Aufgabe mit der zweiten Datensatzpartition für eine vorbestimmte Zeitperiode durchzuführen. Die vorbestimmte Zeitperiode kann ausgewählt werden, um eine Möglichkeit bereitzustellen, dass die zweite Knotenvorrichtung ihre Durchführung der Aufgabe der nicht verwandten Analyseroutine abschließt, so dass die zweite Knotenvorrichtung verfügbar wird, um zugewiesen zu werden, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen. Wie bereits erwähnt, kann auf diese Weise die Tatsache genutzt werden, dass die zweite Datensatzpartition bereits innerhalb der flüchtigen und/oder nicht-flüchtigen Speicher der zweiten Knotenvorrichtung gespeichert ist, so dass die zweite Datensatzpartition nicht zwischen Vorrichtungen ausgetauscht werden muss, um die Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition durch eine andere Knotenvorrichtung zu ermöglichen.As another example, each of a first node device that was busy performing a first task of an analysis routine to create a first record partition of a record and a second node device that was busy performing the first task may have a second record partition of the record, both complete their accomplishments of the first task. However, while the first node device may be available to be assigned to a different task, the second node device (as a result of the release of node devices among a plurality of unrelated analyzes) may be engaged in performing a task of an unrelated analysis routine, such that the second Node device may not yet be available to be assigned to perform a second task of the analysis routine with the second record partition that has generated the second node device itself. As previously noted, the coordinator may refrain from allocating the first node device to perform the second task with the second data set partition for a predetermined period of time. The predetermined time period may be selected to provide a way for the second node device to complete its execution of the unrelated analysis routine task so that the second node device becomes available to be assigned to perform the second task with the second data set partition. As already mentioned, the fact can be used in this way that the second data record partition is already stored within the volatile and / or non-volatile memory of the second node device, so that the second data record partition does not have to be exchanged between devices in order to carry out the second task with the second record partition by another node device.

Mit allgemeiner Bezugnahme auf hierin verwendete Notationen und Nomenklatur können Teile der nachfolgenden detaillierten Beschreibung in Form von Programmprozeduren dargestellt werden, die von einem Prozessor von einer Maschine oder von mehreren vernetzten Maschinen ausgeführt werden. Diese prozeduralen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet verwendet, um die Substanz ihrer Arbeit am wirksamsten an andere Fachleute zu übermitteln. Eine Prozedur ist hier und allgemein als eine selbstkonsistente Folge von Operationen konzipiert, die zu einem gewünschten Ergebnis führt. Diese Operationen sind diejenigen, die physische Manipulationen von physischen Größen erfordern. Gewöhnlich, wenn auch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen, magnetischen oder optischen Kommunikationen an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert zu werden. Es erweist sich manchmal als zweckmäßig, vor allem aus Gründen der üblichen Verwendung, auf das, was kommuniziert wird, als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu verweisen. Es ist jedoch anzumerken, dass alle diese und ähnliche Begriffe mit den entsprechenden physischen Größen assoziiert sind und lediglich zweckmäßige Kennzeichnungen sind, die auf diese Größen angewendet werden.With general reference to notations and nomenclature used herein, portions of the following detailed description may be presented in terms of program procedures executed by a processor of one or more networked machines. These procedural descriptions and representations are used by professionals in the field to most effectively convey the substance of their work to other professionals. A procedure is here and generally conceived as a self-consistent sequence of operations leading to a desired result. These operations are those that require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical communications capable of being stored, transferred, combined, compared and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to what is being communicated as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are associated with the corresponding physical quantities and are merely convenient labels applied to those quantities.

Ferner werden diese Manipulationen oft mit Begriffen, wie beispielsweise Hinzufügen oder Vergleichen, bezeichnet, die üblicherweise mit geistigen Operationen assoziiert sind, die von einem menschlichen Bediener durchgeführt werden. Jedoch ist keine derartige Fähigkeit eines menschlichen Bedieners in irgendeiner der hierin beschriebenen Operationen notwendig oder in den meisten Fällen wünschenswert, die einen Teil einer oder mehrerer Ausführungsformen bilden. Stattdessen sind diese Operationen Maschinenoperationen. Nützliche Maschinen zum Durchführen von Operationen von verschiedenen Ausführungsformen umfassen Maschinen, die selektiv durch eine Routine, die in dem gespeichert ist, das gemäß den hierin beschriebenen Lehren geschrieben ist, aktiviert oder konfiguriert werden, und/oder umfassen Vorrichtungen, die speziell für den erforderlichen Zweck konstruiert sind. Verschiedene Ausführungsformen beziehen sich auch auf Vorrichtungen oder Systeme zum Durchführen dieser Operationen. Diese Vorrichtungen können speziell für den erforderlichen Zweck konstruiert sein oder können einen Allzweckcomputer umfassen. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der angegebenen Beschreibung ersichtlich.Furthermore, these manipulations are often referred to by terms such as adding or comparing, usually associated with mental operations performed by a human operator. However, no such ability of a human operator in any of the operations described herein is necessary or desirable in most cases forming part of one or more embodiments. Instead, these operations are machine operations. Useful machines for performing operations of various embodiments include machines that are selectively activated or configured by a routine stored in the one written in accordance with the teachings described herein, and / or include apparatus specifically for the required purpose are constructed. Various embodiments also relate to devices or systems for performing these operations. These devices may be specially designed for the required purpose or may include a general purpose computer. The required structure for a variety of these machines will be apparent from the description given.

Es wird nun auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen verwendet werden, um sich durchweg auf gleiche Elemente zu beziehen. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezielle Details dargelegt, um ein gründliches Verständnis davon bereitzustellen. Es kann jedoch offensichtlich sein, dass die neuartigen Ausführungsformen ohne diese speziellen Details umgesetzt werden können. In anderen Fällen werden wohlbekannte Strukturen und Vorrichtungen in Blockschaltbildform gezeigt, um eine Beschreibung davon zu erleichtern. Die Absicht ist, alle Modifikationen, Äquivalente und Alternativen innerhalb des Schutzbereichs der Ansprüche abzudecken.Referring now to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. However, it may be obvious that the novel embodiments may be practiced without these specific details. In other instances, well-known structures and devices are disclosed in US Pat Block diagram shown to facilitate a description thereof. The intent is to cover all modifications, equivalents, and alternatives within the scope of the claims.

Die in einigen der Figuren dargestellten Systeme können in verschiedenen Konfigurationen bereitgestellt sein. In einigen Ausführungsformen können die Systeme als ein verteiltes System ausgelegt sein, bei dem eine oder mehrere Komponenten des Systems über ein oder mehrere Netze in einem Cloud-Computing-System und/oder einem Fog-Computing-System verteilt sind.The systems illustrated in some of the figures may be provided in various configurations. In some embodiments, the systems may be configured as a distributed system in which one or more components of the system are distributed over one or more networks in a cloud computing system and / or a fog computing system.

1 ist ein Blockschaltbild, das eine Veranschaulichung der Hardwarekomponenten eines Datenübertragungsnetzes 100 bereitstellt, gemäß Ausführungsformen der vorliegenden Technologie. Das Datenübertragungsnetz 100 ist ein spezialisiertes Computersystem, das zum Verarbeiten großer Datenmengen verwendet werden kann, bei denen eine große Anzahl von Computerverarbeitungszyklen erforderlich ist. 1 FIG. 4 is a block diagram illustrating an illustration of the hardware components of a communications network. FIG 100 according to embodiments of the present technology. The data transmission network 100 is a specialized computer system that can be used to process large amounts of data that requires a large number of computer processing cycles.

Das Datenübertragungsnetz 100 kann auch eine Rechenumgebung 114 umfassen. Die Rechenumgebung 114 kann ein spezialisierter Computer oder eine andere Maschine sein, der bzw. die die innerhalb des Datenübertragungsnetzes 100 empfangenen Daten verarbeitet. Das Datenübertragungsnetz 100 umfasst auch eine oder mehrere Netzvorrichtungen 102. Die Netzvorrichtungen 102 können Clientvorrichtungen umfassen, die versuchen, mit der Rechenumgebung 114 zu kommunizieren. Beispielsweise können die Netzvorrichtungen 102 unter anderem Daten an die zu verarbeitende Rechenumgebung 114 senden, Signale an die Rechenumgebung 114 senden, um verschiedene Aspekte der Rechenumgebung oder der Daten, die sie verarbeitet, zu steuern. Die Netzvorrichtungen 102 können mit der Rechenumgebung 114 mittels einer Anzahl von Weisen interagieren, wie beispielsweise über ein oder mehrere Netze 108. Wie in 1 gezeigt, kann die Rechenumgebung 114 ein oder mehrere andere Systeme umfassen. Beispielsweise kann die Rechenumgebung 114 ein Datenbanksystem 118 und/oder ein Kommunikationsgitter 120 umfassen.The data transmission network 100 can also be a computing environment 114 include. The computing environment 114 may be a specialized computer or other machine within the communications network 100 received data processed. The data transmission network 100 also includes one or more network devices 102 , The network devices 102 may include client devices trying to work with the computing environment 114 to communicate. For example, the network devices 102 including data to the computing environment to be processed 114 send signals to the computing environment 114 send to control various aspects of the computing environment or the data it processes. The network devices 102 can with the computing environment 114 interact through a number of ways, such as one or more networks 108 , As in 1 can be shown the computing environment 114 one or more other systems. For example, the computing environment 114 a database system 118 and / or a communication grid 120 include.

In anderen Ausführungsformen können Netzvorrichtungen eine große Menge an Daten, entweder alle auf einmal oder über eine Zeitperiode gestreamt (z. B. unter Verwendung von Ereignisstromverarbeitung (Event Stream Processing, ESP), die weiter unter Bezugnahme auf 810 beschrieben wird), an die Rechenumgebung 114 über die Netze 108 bereitstellen. Beispielsweise können Netzvorrichtungen 102 Netzcomputer, Sensoren, Datenbanken oder andere Vorrichtungen umfassen, die Daten an die Rechenumgebung 114 übertragen oder anderweitig bereitstellen können. Beispielsweise können Netzvorrichtungen lokale Netzvorrichtungen, wie beispielsweise Router, Hubs, Switches oder andere Computernetzvorrichtungen, umfassen. Diese Vorrichtungen können eine Vielzahl von gespeicherten oder erzeugten Daten bereitstellen, wie beispielsweise Netzdaten oder Daten, die für die Netzvorrichtungen selbst spezifisch sind. Netzvorrichtungen können auch Sensoren umfassen, die ihre Umgebung oder andere Vorrichtungen überwachen, um Daten bezüglich dieser Umgebung oder dieser Vorrichtungen zu sammeln, und derartige Netzvorrichtungen können Daten bereitstellen, die sie über die Zeit sammeln. Netzvorrichtungen können auch Vorrichtungen innerhalb des Internets der Dinge umfassen, wie beispielsweise Vorrichtungen innerhalb eines Heimautomationsnetzes. Einige dieser Vorrichtungen können als Kantenvorrichtungen bezeichnet werden und können Kantenberechnungsschaltungen beinhalten. Daten können von Netzvorrichtungen direkt an die Rechenumgebung 114 oder an am Netz angeschlossene Datenspeicher, wie beispielsweise die am Netz angeschlossenen Datenspeicher 110, zur Speicherung übertragen werden, so dass die Daten später von der Rechenumgebung 114 oder anderen Teilen des Datenübertragungsnetzes 100 abgerufen werden können.In other embodiments, network devices may be streaming a large amount of data, either all at once or over a period of time (eg, using event stream processing (ESP), further described with reference to FIG 8th - 10 is described), to the computing environment 114 over the nets 108 provide. For example, network devices 102 Network computers, sensors, databases, or other devices include the data to the computing environment 114 transmit or otherwise provide. For example, network devices may include local area network devices, such as routers, hubs, switches, or other computer network devices. These devices may provide a variety of stored or generated data, such as network data or data specific to the network devices themselves. Network devices may also include sensors that monitor their environment or other devices to collect data relating to that environment or devices, and such network devices may provide data that they collect over time. Network devices may also include devices within the Internet of Things, such as devices within a home automation network. Some of these devices may be referred to as edge devices and may include edge calculation circuits. Data can be sent from network devices directly to the computing environment 114 or to data storage connected to the network, such as the data storage connected to the network 110 , to be transferred to storage, so that the data later from the computing environment 114 or other parts of the data transmission network 100 can be retrieved.

Das Datenübertragungsnetz 100 kann auch einen oder mehrere am Netz angeschlossenen Datenspeicher 110 umfassen. Die am Netz angeschlossenen Datenspeicher 110 werden verwendet, um Daten, die von der Rechenumgebung 114 verarbeitet werden sollen, sowie alle Zwischen- oder Enddaten, die durch das Rechensystem im nicht-flüchtigen Speicher erzeugt werden, zu speichern. In bestimmten Ausführungsformen erlaubt die Konfiguration der Rechenumgebung 114 jedoch, dass ihre Operationen durchgeführt werden, so dass Zwischen- und Enddatenergebnisse ausschließlich im flüchtigen Speicher (z. B. RAM) gespeichert werden können, ohne dass Zwischen- oder Enddatenergebnisse in nicht-flüchtigen Typen von Speicher (z. B. Festplatte) gespeichert werden müssen. Dies kann in bestimmten Situationen nützlich sein, beispielsweise wenn die Rechenumgebung 114 Ad-hoc-Abfragen von einem Benutzer empfängt und wenn Antworten, die durch eine Verarbeitung großer Mengen an Daten erzeugt werden, on-the-fly erzeugt werden müssen. In dieser nicht einschränkenden Situation kann die Rechenumgebung 114 ausgelegt sein, so dass sie die verarbeiteten Informationen innerhalb des Speichers behält, so dass Antworten für den Benutzer auf verschiedenen Detailebenen erzeugt werden können und es einem Benutzer ermöglicht wird, diese Informationen interaktiv abzufragen.The data transmission network 100 can also have one or more data storage connected to the network 110 include. The data storage connected to the network 110 are used to transfer data from the computing environment 114 and any intermediate or final data generated by the computing system in non-volatile memory. In certain embodiments, the configuration allows the computing environment 114 however, their operations are performed so that intermediate and final data results can be stored only in volatile memory (eg, RAM) without storing intermediate or final data results in non-volatile types of memory (eg, hard disk) Need to become. This can be useful in certain situations, such as when the computing environment 114 Receives ad hoc queries from a user and when responses generated by processing large amounts of data must be generated on-the-fly. In this non-limiting situation, the computing environment can 114 be designed so that it retains the processed information within the memory, so that answers can be generated for the user at various levels of detail and a user is allowed to interrogate this information interactively.

Am Netz angeschlossene Datenspeicher können eine Vielzahl von verschiedenen Typen von Daten speichern, die in einer Vielzahl von verschiedenen Weisen organisiert sind, und aus einer Vielzahl von verschiedenen Quellen. Beispielsweise kann ein am Netz angeschlossener Speicher einen anderen Speicher als den primären Speicher umfassen, der sich innerhalb der Rechenumgebung 114 befindet, die direkt von darin befindlichen Prozessoren zugänglich ist. Am Netz angeschlossener Datenspeicher kann unter anderem sekundären, tertiären oder Hilfsspeicher umfassen, wie beispielsweise große Festplatten, Server, virtuellen Speicher. Speichervorrichtungen können tragbare oder nicht tragbare Speichervorrichtungen, optische Speichervorrichtungen und verschiedene andere Medien umfassen, die in der Lage sind, Daten zu speichern und zu enthalten. Ein maschinenlesbares Speichermedium oder computerlesbares Speichermedium kann ein nicht-transitorisches Medium umfassen, in dem Daten gespeichert werden können und das keine Trägerwellen und/oder transitorischen elektronischen Signale umfasst. Beispiele eines nicht-transitorischen Mediums können beispielsweise eine Magnetplatte oder ein Magnetband, optische Speichermedien wie eine Compact Disk oder Digital Versatile Disk, Flash-Speicher, Speicher oder Speichervorrichtungen umfassen. Ein Computerprogrammprodukt kann Code und/oder maschinenausführbare Anweisungen umfassen, die eine Prozedur, eine Funktion, ein Unterprogramm, ein Programm, eine Routine, eine Unterroutine, ein Modul, ein Softwarepaket, eine Klasse oder eine beliebige Kombination von Anweisungen, Datenstrukturen oder Programmanweisungen repräsentieren können. Ein Codesegment kann durch Übergeben und/oder Empfangen von Informationen, Daten, Argumenten, Parameter oder Speicherinhalten mit einem anderen Codesegment oder einer Hardwareschaltung gekoppelt werden. Informationen, Argumente, Parameter, Daten usw. können über beliebige geeignete Mittel, einschließlich unter anderem Speicherfreigabe, Nachrichtenübergabe, Token-Übergabe, Netzübertragung, übergeben, weitergeleitet oder übertragen werden. Ferner können die Datenspeicher eine Vielzahl von verschiedenen Typen von Daten halten. Beispielsweise können am Netz angeschlossene Datenspeicher 110 unstrukturierte (z. B. rohe) Daten halten, wie beispielsweise Herstellungsdaten (z. B. eine Datenbank, die Datensätze enthält, die Produkte identifizieren, die mit Parameterdaten für jedes Produkt hergestellt werden, wie beispielsweise Farben und Modelle) oder Produktverkaufsdatenbanken (z. B. eine Datenbank, die einzelne Datensätze enthält, die Details von einzelnen Produktverkäufen identifizieren). Network-attached data stores can store a variety of different types of data, organized in a variety of different ways, and from a variety of different sources. For example, a network attached storage may include a different storage than the primary storage that resides within the computing environment 114 located directly by processors located therein. The data storage connected to the network may include, but is not limited to, secondary, tertiary or auxiliary storage such as large hard disks, servers, virtual storage. Storage devices may include portable or non-portable storage devices, optical storage devices, and various other media capable of storing and containing data. A machine-readable storage medium or computer-readable storage medium may include a non-transitory medium in which data may be stored and which does not include carrier waves and / or transitory electronic signals. Examples of a non-transitory medium may include, for example, a magnetic disk or a magnetic tape, optical storage media such as a compact disk or digital versatile disk, flash memory, memory or memory devices. A computer program product may include code and / or machine-executable instructions that may represent a procedure, function, subroutine, program, routine, subroutine, module, software package, class, or any combination of instructions, data structures, or program instructions , A code segment may be coupled by passing and / or receiving information, data, arguments, parameters or memory contents with another code segment or hardware circuit. Information, arguments, parameters, data, etc. may be transferred, forwarded, or transmitted by any suitable means, including, but not limited to, memory sharing, message passing, token passing, network transmission. Further, the data stores may hold a variety of different types of data. For example, data storage connected to the network 110 unstructured (eg, raw) data such as manufacturing data (e.g., a database containing records identifying products created with parameter data for each product, such as colors and models) or product sales databases (e.g. A database that contains individual records that identify details of individual product sales).

Die unstrukturierten Daten können der Rechenumgebung 114 in verschiedenen Formen, wie beispielsweise in einer flachen Datei oder einem Konglomerat von Datensätzen, präsentiert werden und können Datenwerte und begleitende Zeitstempel aufweisen. Die Rechenumgebung 114 kann verwendet werden, um die unstrukturierten Daten auf eine Vielzahl von Weisen zu analysieren, um die beste Weise zu bestimmen, um diese Daten (z. B. hierarchisch) zu strukturieren, so dass die strukturierten Daten für einen Typ von weiterer Analyse zugeschnitten sind, die ein Benutzer auf den Daten durchführen möchte. Beispielsweise können die unstrukturierten zeitgestempelten Daten nach dem Verarbeiten zeitlich (z. B. in tägliche Zeitperiodeneinheiten) aggregiert werden, um Zeitreihendaten zu erzeugen, und/oder hierarchisch nach einer oder mehreren Dimensionen (z. B. Parameter, Attribute und/oder Variablen) strukturiert werden. Beispielsweise können Daten in einer hierarchischen Datenstruktur, wie beispielsweise in einer ROLAP- oder MOLAP-Datenbank, gespeichert werden oder können in einer anderen tabellarischen Form gespeichert werden, wie beispielsweise in einer flachen Hierarchieform.The unstructured data can be used by the computing environment 114 in various forms, such as in a flat file or a conglomeration of records, and may have data values and accompanying timestamps. The computing environment 114 can be used to analyze the unstructured data in a variety of ways to determine the best way to structure that data (eg, hierarchically) so that the structured data is tailored for a type of further analysis, that a user wants to perform on the data. For example, after processing, the unstructured time-stamped data may be aggregated temporally (eg, into daily time-period units) to generate time-series data and / or hierarchically structured according to one or more dimensions (eg, parameters, attributes, and / or variables) become. For example, data may be stored in a hierarchical data structure, such as in a ROLAP or MOLAP database, or may be stored in a different tabular form, such as in a flat hierarchical form.

Das Datenübertragungsnetz 100 kann auch eine oder mehrere Serverfarmen 106 umfassen. Die Rechenumgebung 114 kann ausgewählte Kommunikationen oder Daten an die eine oder mehreren Serverfarmen 106 oder einen oder mehrere Server innerhalb der Serverfarmen weiterleiten. Die Serverfarmen 106 können ausgelegt sein, um Informationen in einer vorbestimmten Weise bereitzustellen. Beispielsweise können die Serverfarmen 106 auf Daten zugreifen, um sie in Reaktion auf eine Kommunikation zu senden. Die Serverfarmen 106 können separat von einer anderen Vorrichtung innerhalb des Datenübertragungsnetzes 100, wie beispielsweise der Rechenumgebung 114, untergebracht sein und/oder können Teil einer Vorrichtung oder eines Systems sein.The data transmission network 100 can also have one or more server farms 106 include. The computing environment 114 can send selected communications or data to the one or more server farms 106 or forward one or more servers within the server farms. The server farms 106 may be configured to provide information in a predetermined manner. For example, the server farms 106 access data to send in response to a communication. The server farms 106 may be separate from another device within the communications network 100 such as the computing environment 114 , be housed and / or may be part of a device or system.

Die Serverfarmen 106 können eine Vielzahl von verschiedenen Typen von Datenverarbeitung als Teil des Datenübertragungsnetzes 100 hosten. Die Serverfarmen 106 können eine Vielzahl von unterschiedlichen Daten von Netzvorrichtungen, von der Rechenumgebung 114, vom Cloud-Netz 116 oder von anderen Quellen empfangen. Die Daten können von einem oder mehreren Sensoren als Eingaben von einer Steuerdatenbank erhalten oder gesammelt worden sein oder als Eingaben von einem externen System oder einer externen Vorrichtung empfangen worden sein. Die Serverfarmen 106 können die Verarbeitung der Daten unterstützen, indem sie basierend auf einer oder mehreren Regeln, die durch die Serverfarmen implementiert werden, Rohdaten in verarbeitete Daten umwandeln. Beispielsweise können Sensordaten analysiert werden, um Änderungen in einer Umgebung über die Zeit oder in Echtzeit zu bestimmen.The server farms 106 You can use a variety of different types of data processing as part of the data transmission network 100 host. The server farms 106 can use a variety of different data from network devices, from the computing environment 114 , from the cloud network 116 or received from other sources. The data may have been received from one or more sensors as inputs from a control database, or collected or received as inputs from an external system or device. The server farms 106 may assist in processing the data by transforming raw data into processed data based on one or more rules implemented by the server farms. For example, sensor data may be analyzed to determine changes in an environment over time or in real time.

Das Datenübertragungsnetz 100 kann auch ein oder mehrere Cloud-Netze 116 umfassen. Das Cloud-Netz 116 kann ein Cloud-Infrastruktursystem umfassen, das Cloud-Dienste bereitstellt. In bestimmten Ausführungsformen können Dienste, die vom Cloud-Netz 116 bereitgestellt werden, eine Vielzahl von Diensten umfassen, die den Benutzern des Cloud-Infrastruktursystems auf Anforderung zur Verfügung gestellt werden. Das Cloud-Netz 116 ist in 1 als mit der Rechenumgebung 114 verbunden gezeigt (und daher mit der Rechenumgebung 114 als Client oder Benutzer), aber das Cloud-Netz 116 kann mit beliebigen der Vorrichtungen in 1 verbunden sein oder von diesen genutzt werden. Die vom Cloud-Netz bereitgestellten Dienste können dynamisch skaliert werden, um die Bedürfnisse ihrer Benutzer zu erfüllen. Das Cloud-Netz 116 kann ein(en) oder mehrere Computer, Server und/oder Systeme umfassen. In einigen Ausführungsformen unterscheiden sich die Computer, Server und/oder Systeme, die das Cloud-Netz 116 bilden, von den eigenen Computern, Servern und/oder Systemen des Benutzers vor Ort. Beispielsweise kann das Cloud-Netz 116 eine Anwendung hosten, und ein Benutzer kann über ein Kommunikationsnetz, wie beispielsweise das Internet, die Anwendung auf Anforderung bestellen und verwenden. The data transmission network 100 can also have one or more cloud networks 116 include. The cloud network 116 may include a cloud infrastructure system that provides cloud services. In certain embodiments, services may be provided by the cloud network 116 provided, a variety of services that are provided on request to the users of the cloud infrastructure system. The cloud network 116 is in 1 as with the computing environment 114 connected (and therefore with the computing environment 114 as a client or user), but the cloud network 116 can with any of the devices in 1 be connected or used by them. The services provided by the cloud network can be dynamically scaled to meet the needs of their users. The cloud network 116 may include one or more computers, servers, and / or systems. In some embodiments, the computers, servers, and / or systems that differentiate the cloud network differ 116 from the user's own computers, servers and / or systems on-site. For example, the cloud network 116 host an application, and a user can order and use the application on demand over a communications network, such as the Internet.

Obgleich jede Vorrichtung, jeder Server und jedes System in 1 als eine einzelne Vorrichtung gezeigt ist, versteht es sich, dass stattdessen mehrere Vorrichtungen verwendet werden können. Beispielsweise kann ein Satz von Netzvorrichtungen verwendet werden, um verschiedene Kommunikationen von einem einzelnen Benutzer zu übertragen, oder der entfernte Server 140 kann einen Serverstapel umfassen. Als ein weiteres Beispiel können Daten als Teil der Rechenumgebung 114 verarbeitet werden.Although every device, every server and every system in 1 As shown as a single device, it should be understood that multiple devices may be used instead. For example, a set of network devices may be used to transmit various communications from a single user or the remote server 140 can include a server stack. As another example, data may be part of the computing environment 114 are processed.

Jede Kommunikation innerhalb des Datenübertragungsnetzes 100 (z. B. zwischen Clientvorrichtungen, zwischen den Servern 106 und der Rechenumgebung 114 oder zwischen einem Server und einer Vorrichtung) kann über ein oder mehrere Netze 108 erfolgen. Die Netze 108 können einen oder mehrere einer Vielzahl von verschiedenen Typen von Netzen umfassen, einschließlich eines drahtlosen Netzes, eines drahtgebundenen Netzes oder einer Kombination eines drahtgebundenen und drahtlosen Netzes. Beispiele geeigneter Netze umfassen das Internet, ein Personal Area Network, ein Local Area Network (LAN), ein Wide Area Network (WAN) oder ein Wireless Local Area Network (WLAN). Ein drahtloses Netz kann eine drahtlose Schnittstelle oder eine Kombination von drahtlosen Schnittstellen umfassen. Als ein Beispiel kann ein Netz in dem einen oder den mehreren Netzen 108 einen Kurzstreckenkommunikationskanal, wie beispielsweise einen Bluetooth- oder einen Bluetooth Low Energy-Kanal, umfassen. Ein drahtgebundenes Netz kann eine drahtgebundene Schnittstelle umfassen. Die drahtgebundenen und/oder drahtlosen Netze können unter Verwendung von Routern, Zugangspunkten, Brücken, Gateways oder dergleichen implementiert werden, um Vorrichtungen im Netz 114 zu verbinden, wie weiter unter Bezugnahme auf 2 beschrieben wird. Das eine oder die mehreren Netze 108 können vollständig innerhalb eines Intranets, eines Extranets oder einer Kombination davon integriert sein oder können diese umfassen. In einer Ausführungsform können Kommunikationen zwischen zwei oder mehr Systemen und/oder Vorrichtungen durch ein sicheres Kommunikationsprotokoll, wie beispielsweise Secure Sockets Lager (SSL) oder Transport Lager Security (TLS), erreicht werden. Zusätzlich können Daten und/oder Transaktionsdetails verschlüsselt werden.Every communication within the data transmission network 100 (eg between client devices, between the servers 106 and the computing environment 114 or between a server and a device) may be via one or more networks 108 respectively. The nets 108 They may include one or more of a variety of different types of networks, including a wireless network, a wired network, or a combination of a wired and wireless network. Examples of suitable networks include the Internet, a personal area network, a local area network (LAN), a wide area network (WAN) or a wireless local area network (WLAN). A wireless network may include a wireless interface or a combination of wireless interfaces. As an example, a network may be in the one or more networks 108 a short distance communication channel, such as a Bluetooth or a Bluetooth low energy channel. A wired network may include a wired interface. The wired and / or wireless networks may be implemented using routers, access points, bridges, gateways or the like to network devices 114 to connect, as further referring to 2 is described. The one or more networks 108 may be fully integrated within, or may include, an intranet, an extranet, or a combination thereof. In one embodiment, communications between two or more systems and / or devices may be achieved through a secure communication protocol, such as Secure Sockets Warehousing (SSL) or Transport Warehouse Security (TLS). In addition, data and / or transaction details can be encrypted.

Einige Aspekte können das Internet der Dinge (Internet of Things, IoT) nutzen, bei dem Dinge (z. B. Maschinen, Vorrichtungen, Telefone, Sensoren) mit Netzen verbunden werden können und die Daten von diesen Dingen innerhalb der Dinge und/oder außerhalb der Dinge gesammelt und verarbeitet werden können. Beispielsweise kann das IoT Sensoren in vielen verschiedenen Vorrichtungen umfassen, und hochwertige Analysen können angewendet werden, um versteckte Beziehungen zu identifizieren und Effizienzen zu erhöhen. Dies kann sowohl für Big Data Analytics als auch für Real-Time (z. B. ESP) Analytics gelten. Dies wird weiter unten unter Bezugnahme auf 2 beschrieben.Some aspects may use the Internet of Things (IoT), where things (eg, machines, devices, phones, sensors) can be connected to networks and the data of those things within things and / or outside of things can be collected and processed. For example, the IoT may include sensors in many different devices, and high quality analysis may be used to identify hidden relationships and increase efficiencies. This can apply to both big data analytics and real-time analytics (such as ESP). This will be further explained below with reference to 2 described.

Wie bereits erwähnt, kann die Rechenumgebung 114 ein Kommunikationsgitter 120 und ein Übertragungsnetzdatenbanksystem 118 umfassen. Das Kommunikationsgitter 120 kann ein gitterbasiertes Rechensystem zum Verarbeiten großer Datenmengen sein. Das Übertragungsnetzdatenbanksystem 118 kann zum Verwalten, Speichern und Abrufen von großen Datenmengen sein, die an die einen oder mehreren am Netz angeschlossenen Datenspeicher 110 oder andere Datenspeicher, die sich an verschiedenen Orten innerhalb des Übertragungsnetzdatenbanksystems 118 befinden, verteilt und darin gespeichert werden. Die Rechenknoten im gitterbasierten Rechensystem 120 und im Übertragungsnetzdatenbanksystem 118 können die gleiche Prozessorhardware, wie beispielsweise Prozessoren, die sich innerhalb der Rechenumgebung 114 befinden, gemeinsam nutzen.As mentioned earlier, the computing environment 114 a communication grid 120 and a transmission network database system 118 include. The communication grid 120 can be a grid-based computing system for processing large amounts of data. The transmission network database system 118 It can be used to manage, store, and retrieve large amounts of data sent to one or more data stores attached to the network 110 or other data stores located at different locations within the transmission network database system 118 be located, distributed and stored in it. The compute nodes in the grid-based computing system 120 and in the transmission network database system 118 can use the same processor hardware, such as processors, that are within the computing environment 114 reside, share.

2 veranschaulicht ein beispielhaftes Netz, das einen beispielhaften Satz von Vorrichtungen umfasst, die miteinander über ein Austauschsystem und über ein Netz kommunizieren, gemäß Ausführungsformen der vorliegenden Technologie. Wie bereits erwähnt, kann jede Kommunikation innerhalb des Datenübertragungsnetzes 100 über ein oder mehrere Netze erfolgen. Das System 200 umfasst eine Netzvorrichtung 204, die ausgelegt ist, um mit einer Vielzahl von Typen von Clientvorrichtungen, beispielsweise den Clientvorrichtungen 230, über eine Vielzahl von Typen von Kommunikationskanälen zu kommunizieren. 2 FIG. 3 illustrates an example network that includes an example set of devices communicating with each other via an exchange system and over a network according to embodiments of the present technology. As mentioned earlier, any communication within the Data transmission network 100 via one or more networks. The system 200 includes a network device 204 , which is designed to work with a variety of types of client devices, such as the client devices 230 to communicate over a variety of types of communication channels.

Wie in 2 gezeigt, kann die Netzvorrichtung 204 eine Kommunikation über ein Netz (z. B. ein zellulares Netz über eine Basisstation 210) übertragen. Die Kommunikation kann über die Basisstation 210 an eine andere Netzvorrichtung, wie beispielsweise Netzvorrichtungen 205209, geleitet werden. Die Kommunikation kann auch über die Basisstation 210 an die Rechenumgebung 214 geleitet werden. Beispielsweise kann die Netzvorrichtung 204 Daten entweder aus ihrer Umgebung oder aus anderen Netzvorrichtungen (wie beispielsweise Netzvorrichtungen 205209) sammeln und diese Daten an die Rechenumgebung 214 übertragen.As in 2 shown, the network device 204 communication over a network (eg, a cellular network via a base station 210 ) transfer. Communication can be via the base station 210 to another network device, such as network devices 205 - 209 to be guided. Communication can also be via the base station 210 to the computing environment 214 be directed. For example, the network device 204 Data either from its environment or from other network devices (such as network devices 205 - 209 ) and collect this data to the computing environment 214 transfer.

Obwohl die Netzvorrichtungen 204209 in 2 jeweils als ein Mobiltelefon, Laptop-Computer, Tablet-Computer, Temperatursensor, Bewegungssensor und Audiosensor gezeigt sind, können die Netzvorrichtungen Sensoren sein oder diese umfassen, die gegenüber der Erkennung von Aspekten ihrer Umgebung empfindlich sind. Beispielsweise können die Netzvorrichtungen Sensoren, wie beispielsweise unter anderem Wassersensoren, Leistungssensoren, elektrische Stromsensoren, chemische Sensoren, optische Sensoren, Drucksensoren, geografische oder Positionssensoren (z. B. GPS), Geschwindigkeitssensoren, Beschleunigungssensoren, Durchflussratensensoren, umfassen. Beispiele für Eigenschaften, die erfasst werden können, umfassen unter anderem Kraft, Drehmoment, Last, Dehnung, Position, Temperatur, Luftdruck, Fluidströmung, chemische Eigenschaften, Widerstand, elektromagnetische Felder, Strahlung, Bestrahlung, Nähe, Akustik, Feuchtigkeit, Distanz, Geschwindigkeit, Vibrationen, Beschleunigung, elektrisches Potential, elektrischer Strom. Die Sensoren können an verschiedenen Komponenten angebracht sein, die als Teil einer Vielzahl von verschiedenen Typen von Systemen verwendet werden (z. B. ein Ölbohrvorgang). Die Netzvorrichtungen können Daten erkennen und aufzeichnen, die sich auf die Umgebung beziehen, die sie überwacht, und diese Daten an die Rechenumgebung 214 übertragen.Although the network devices 204 - 209 in 2 each shown as a mobile phone, laptop computer, tablet computer, temperature sensor, motion sensor, and audio sensor, the network devices may be or include sensors that are sensitive to detecting aspects of their environment. For example, the network devices may include sensors such as, but not limited to, water sensors, power sensors, electrical current sensors, chemical sensors, optical sensors, pressure sensors, geographic or position sensors (eg, GPS), speed sensors, acceleration sensors, flow rate sensors. Examples of properties that may be detected include force, torque, load, strain, position, temperature, air pressure, fluid flow, chemical properties, resistance, electromagnetic fields, radiation, irradiation, proximity, acoustics, humidity, distance, speed, Vibrations, acceleration, electrical potential, electric current. The sensors may be attached to various components used as part of a variety of different types of systems (eg, an oil drilling operation). The network devices can recognize and record data related to the environment they are monitoring and that data to the computing environment 214 transfer.

Wie bereits erwähnt, umfasst ein Typ von System, das verschiedene Sensoren umfassen kann, die Daten sammeln, die gemäß bestimmten Ausführungsformen verarbeitet und/oder an eine Rechenumgebung übertragen werden sollen, ein Ölbohrsystem. Beispielsweise können der eine oder die mehreren Bohrbetriebssensoren Oberflächensensoren, die eine Hakenlast, eine Fluidrate, eine Temperatur und eine Dichte in und aus dem Bohrloch, einen Standrohrdruck, ein Oberflächendrehmoment, eine Drehzahl eines Bohrrohrs, eine Vortriebsrate, eine mechanische spezifische Energie usw. messen, und Bohrlochsensoren, die eine Drehzahl einer Bohrspitze, Fluiddichten, Bohrlochdrehmoment, Bohrlochvibration (axial, tangential, lateral), ein an einer Bohrspitze angelegtes Gewicht, einen Ringdruck, einen Differentialdruck, ein Azimut, eine Neigung, einen Bohrlochknick, eine gemessene Tiefe, eine vertikale Tiefe, eine Bohrlochtemperatur usw. messen, umfassen. Neben den direkt von den Sensoren gesammelten Rohdaten können andere Daten Parameter umfassen, die entweder von den Sensoren entwickelt oder dem System durch einen Client oder eine andere Steuervorrichtung zugewiesen sind. Beispielsweise können ein oder mehrere Bohrbetriebssteuerparameter Einstellungen wie beispielsweise ein Schlammmotordrehzahl-zu-Fluss-Verhältnis, einen Bohrspitzendurchmesser, eine vorhergesagte Formationspitze, seismische Daten, Wetterdaten usw. steuern. Andere Daten können unter Verwendung von physikalischen Modellen wie beispielsweise einem Erdmodell, einem Wettermodell, einem seismischen Modell, einem Bodenlochmontagemodell, einem Bohrlochplanmodell, einem Ringreibungsmodell usw. erzeugt werden. Zusätzlich zu Sensor- und Steuereinstellungen können vorhergesagte Ausgaben von beispielsweise der Vortriebsrate, der mechanischen spezifischen Energie, der Hakenlast, der Strömung in der Fluidrate, der Ausströmungsfluidrate, des Pumpendrucks, des Oberflächendrehmoments, der Drehzahl des Bohrrohrs, des Ringdrucks, des Ringreibungsdrucks, der Ringtemperatur, der äquivalenten Zirkulationsdichte usw. auch im Data Warehouse gespeichert werden.As previously mentioned, one type of system, which may include various sensors collecting data to be processed and / or transmitted to a computing environment in accordance with certain embodiments, includes an oil drilling system. For example, the one or more boring operation sensors may measure surface sensors that measure a hook load, a fluid rate, a temperature and a density in and out of the borehole, a riser pressure, a surface torque, a drill pipe speed, a propulsion rate, a mechanical specific energy, etc. and borehole sensors that include a speed of a drill bit, fluid densities, borehole torque, borehole vibration (axial, tangential, lateral), a weight applied to a drill bit, a ring pressure, a differential pressure, an azimuth, a slope, a borehole kink, a measured depth, a vertical Depth, a well temperature, etc., include. In addition to the raw data collected directly from the sensors, other data may include parameters that are either developed by the sensors or assigned to the system by a client or other controller. For example, one or more drilling operation control parameters may control settings such as a mud engine speed to flow ratio, a drill tip diameter, a predicted formation peak, seismic data, weather data, and so on. Other data may be generated using physical models such as an earth model, a weather model, a seismic model, a bottom hole mounting model, a wellbore plan model, a ring friction model, and so on. In addition to sensor and control settings, predicted outputs may include, for example, rate of advance, mechanical specific energy, hook load, fluid rate flow, effluent fluid rate, pump pressure, surface torque, drill pipe speed, ring pressure, ring friction pressure, ring temperature , the equivalent circulation density, etc. are also stored in the data warehouse.

In einem anderen Beispiel umfasst ein anderer Typ von System, das verschiedene Sensoren umfassen kann, die Daten sammeln, die gemäß bestimmten Ausführungsformen verarbeitet und/oder an eine Rechenumgebung übertragen werden sollen, eine Hausautomation oder ein ähnliches automatisiertes Netz in einer anderen Umgebung, wie beispielsweise in einem Büroraum, einer Schule, einem öffentlichen Raum, einer Sportstätte oder einer Vielzahl anderer Orte. Netzvorrichtungen in einem derartigen automatisierten Netz können Netzvorrichtungen umfassen, die einem Benutzer ermöglichen, auf verschiedene Haushaltsgeräte, die sich innerhalb des Hauses des Benutzers (z. B. ein Fernsehgerät, ein Radio, ein Licht, ein Ventilator, ein Befeuchter, ein Sensor, ein Mikrowellenherd, ein Bügeleisen und/oder dergleichen) oder außerhalb des Hauses des Benutzers (z. B. Außenbewegungssensoren, Außenbeleuchtung, Garagentoröffner, Sprinkleranlagen oder dergleichen) befinden, zuzugreifen, sie zu steuern und/oder sie zu konfigurieren. Beispielsweise kann die Netzvorrichtung 102 einen Heimautomationsschalter umfassen, der mit einem Haushaltsgerät gekoppelt sein kann. In einer anderen Ausführungsform kann eine Netzvorrichtung einem Benutzer ermöglichen, auf Vorrichtungen zuzugreifen, sie zu steuern und/oder sie zu konfigurieren, wie beispielsweise bürobezogene Vorrichtungen (z. B. Kopiergerät, Drucker oder Faxgerät), audio- und/oder videobezogene Vorrichtungen (z. B. ein Receiver, ein Lautsprecher, ein Projektor, ein DVD-Player oder ein Fernsehgerät), Medienwiedergabegeräte (z. B. ein Compact-Disc-Player, ein CD-Player oder dergleichen), Rechenvorrichtungen (z. B. ein Heimcomputer, ein Laptop-Computer, ein Tablet, ein persönlicher digitaler Assistent (PDA), eine Rechenvorrichtung oder eine tragbare Vorrichtung), Beleuchtungsvorrichtungen (z. B. eine Lampe oder Einbauleuchten), Vorrichtungen, die mit einem Sicherheitssystem assoziiert sind, Vorrichtungen, die mit einem Alarmsystem assoziiert sind, Vorrichtungen, die in einem Kraftfahrzeug betrieben werden können (z. B. Funkvorrichtungen, Navigationsvorrichtungen), und/oder dergleichen. Die Daten können von derartigen verschiedenen Sensoren in Rohform gesammelt werden, oder Daten können von den Sensoren verarbeitet werden, um Parameter oder andere Daten zu erzeugen, die entweder von den Sensoren basierend auf den Rohdaten entwickelt oder dem System durch einen Client oder eine andere Steuervorrichtung zugewiesen sind.In another example, another type of system, which may include various sensors collecting data to be processed and / or transmitted to a computing environment according to certain embodiments, includes home automation or a similar automated network in another environment, such as in an office room, a school, a public space, a sports facility or a variety of other places. Network devices in such an automated network may include network devices that allow a user to access various home appliances that may be within the user's home (eg, a television, a radio, a light, a fan, a humidifier, a sensor, etc.) Microwave oven, iron and / or the like) or outside the user's home (eg, exterior motion sensors, exterior lights, garage door openers, sprinklers, or the like), to control, and / or configure them. For example, the network device 102 a home automation switch, which may be coupled to a household appliance. In another embodiment, a network device may enable a user Access, control, and / or configure devices such as office-related devices (eg, copier, printer, or fax), audio and / or video-related devices (e.g., a receiver, a speaker, a projector, a DVD player or a television), media players (eg, a compact disc player, a CD player, or the like), computing devices (eg, a home computer, a laptop computer, a tablet, a personal digital Assistant (PDA), a computing device or a portable device), lighting devices (eg, a lamp or built-in lights), devices associated with a security system, devices associated with an alarm system, devices that operate in a motor vehicle (eg, wireless devices, navigation devices), and / or the like. The data may be collected from such various sensors in raw form, or data may be processed by the sensors to produce parameters or other data either developed by the sensors based on the raw data or assigned to the system by a client or other controller are.

In einem anderen Beispiel umfasst ein Typ von System, das verschiedene Sensoren umfassen kann, die Daten sammeln, die gemäß bestimmten Ausführungsformen verarbeitet und/oder an eine Rechenumgebung übertragen werden sollen, ein Strom- oder Energienetz. Eine Vielzahl unterschiedlicher Netzvorrichtungen können in einem Energienetz eingeschlossen sein, wie beispielsweise unter anderem verschiedene Vorrichtungen innerhalb eines oder mehrerer Kraftwerke, Energiefarmen (z. B. unter anderem Windpark, Solarpark), Energiespeichereinrichtungen, Fabriken, Häuser und Unternehmen der Verbraucher. Eine oder mehrere dieser Vorrichtungen können einen oder mehrere Sensoren umfassen, die Energieverstärkung oder -verlust, elektrische Eingabe oder Ausgabe oder Verlust und eine Vielzahl anderer Leistungsgrade erkennen. Diese Sensoren können Daten sammeln, um Benutzer darüber zu informieren, wie das Energienetz und einzelne Vorrichtungen innerhalb des Netzes funktionieren und wie sie effizienter gemacht werden können.In another example, a type of system that may include various sensors that collect data that is to be processed and / or transmitted to a computing environment in accordance with certain embodiments includes a power grid. A variety of different network devices may be included in a power grid, including, but not limited to, various devices within one or more power plants, energy farms (eg, wind farm, solar park, among others), energy storage facilities, factories, homes, and consumer businesses. One or more of these devices may include one or more sensors that detect energy gain or loss, electrical input or output or loss, and a variety of other performance levels. These sensors can collect data to inform users about how the power grid and individual devices within the network work and how they can be made more efficient.

Netzvorrichtungssensoren können auch eine Verarbeitung auf Daten durchführen, die gesammelt werden, bevor die Daten an die Rechenumgebung 114 übertragen werden oder bevor entschieden wird, ob Daten an die Rechenumgebung 114 übertragen werden sollen. Beispielsweise können Netzvorrichtungen bestimmen, ob die gesammelten Daten bestimmte Regeln erfüllen, beispielsweise durch Vergleichen von Daten oder Werten, die aus den Daten berechnet wurden, und Vergleichen dieser Daten mit einem oder mehreren Schwellenwerten. Die Netzvorrichtung kann diese Daten und/oder Vergleiche verwenden, um zu bestimmen, ob die Daten zur weiteren Verwendung oder Verarbeitung an die Rechenumgebung 214 übertragen werden sollen.Network device sensors can also perform processing on data that is collected before the data is sent to the computing environment 114 or before deciding whether to send data to the computing environment 114 to be transferred. For example, network devices may determine whether the collected data meets certain rules, such as by comparing data or values calculated from the data, and comparing that data to one or more thresholds. The network device may use these data and / or comparisons to determine if the data is for further use or processing to the computing environment 214 to be transferred.

Die Rechenumgebung 214 kann die Maschinen 220 und 240 umfassen. Obwohl die Rechenumgebung 214 in 2 mit zwei Maschinen, 220 und 240, gezeigt ist, kann die Rechenumgebung 214 nur eine Maschine oder mehr als zwei Maschinen aufweisen. Die Maschinen, die die Rechenumgebung 214 bilden, können spezialisierte Computer, Server oder andere Maschinen umfassen, die ausgelegt sind, um große Datenmengen einzeln und/oder gemeinsam zu verarbeiten. Die Rechenumgebung 214 kann auch Speichervorrichtungen umfassen, die eine oder mehrere Datenbanken von strukturierten Daten, wie beispielsweise Daten, die in einer oder mehreren Hierarchien organisiert sind, oder von unstrukturierten Daten umfassen. Die Datenbanken können mit den Verarbeitungsvorrichtungen innerhalb der Rechenumgebung 214 kommunizieren, um Daten an sie zu verteilen. Da Netzvorrichtungen Daten an die Rechenumgebung 214 übertragen können, können diese Daten von der Rechenumgebung 214 empfangen und anschließend innerhalb dieser Speichervorrichtungen gespeichert werden. Daten, die von der Rechenumgebung 214 verwendet werden, können auch in Datenspeichern 235 gespeichert werden, die auch ein Teil der Rechenumgebung 214 sein oder damit verbunden sein können.The computing environment 214 can the machines 220 and 240 include. Although the computing environment 214 in 2 with two machines, 220 and 240 , can be shown, the computing environment 214 have only one machine or more than two machines. The machines that make up the computing environment 214 may include specialized computers, servers, or other machines designed to handle large amounts of data individually and / or collectively. The computing environment 214 may also include storage devices that include one or more databases of structured data, such as data organized in one or more hierarchies, or unstructured data. The databases can be used with the processing devices within the computing environment 214 communicate to distribute data to them. Because network devices send data to the computing environment 214 can transfer this data from the computing environment 214 received and then stored within these storage devices. Data coming from the computing environment 214 can also be used in data stores 235 which are also part of the computing environment 214 be or be associated with it.

Die Rechenumgebung 214 kann mit verschiedenen Vorrichtungen über einen oder mehrere Router 225 oder andere Inter-Netzwerk- oder Intra-Netzwerk-Verbindungskomponenten kommunizieren. Beispielsweise kann die Rechenumgebung 214 mit den Vorrichtungen 230 über einen oder mehrere Router 225 kommunizieren. Die Rechenumgebung 214 kann Daten von oder in Bezug auf Kommunikationen, Clientvorrichtungsoperationen, Clientregeln und/oder mit dem Benutzer assoziierten Aktionen, die in einem oder mehreren Datenspeichern 235 gespeichert sind, sammeln, analysieren und/oder speichern. Derartige Daten können das Kommunikations-Routing zu den Vorrichtungen innerhalb der Rechenumgebung 214, wie Daten innerhalb der Rechenumgebung 214 gespeichert oder verarbeitet werden sowie andere Aktionen beeinflussen.The computing environment 214 can work with different devices via one or more routers 225 or other inter-network or intra-network connection components. For example, the computing environment 214 with the devices 230 via one or more routers 225 communicate. The computing environment 214 may store data from or relating to communications, client device operations, client rules, and / or actions associated with the user stored in one or more data stores 235 are stored, collect, analyze and / or store. Such data may be the communication routing to the devices within the computing environment 214 like data within the computing environment 214 saved or processed and other actions.

Insbesondere können verschiedene andere Vorrichtungen ferner verwendet werden, um das Kommunikations-Routing und/oder die Verarbeitung zwischen Vorrichtungen innerhalb der Rechenumgebung 214 und mit Vorrichtungen außerhalb der Rechenumgebung 214 zu beeinflussen. Beispielsweise kann die Rechenumgebung 214, wie in 2 gezeigt, einen Webserver 240 umfassen. Somit kann die Rechenumgebung 214 Daten von Interesse, wie beispielsweise Clientinformationen (z. B. Produktinformationen, Clientregeln usw.), technische Produktdetails, Nachrichten, aktuelle oder vorhergesagte Wetterdaten und so weiter, abrufen.In particular, various other devices may also be used to facilitate communication routing and / or processing between devices within the computing environment 214 and with devices outside the computing environment 214 to influence. For example, the computing environment 214 , as in 2 shown a web server 240 include. Thus, the computing environment 214 Retrieve data of interest, such as client information (e.g., product information, client rules, etc.), technical product details, news, current or predicted weather data, and so on.

Zusätzlich dazu, dass die Rechenumgebung 214 Daten sammelt (z. B. wie sie von Netzvorrichtungen, wie beispielsweise Sensoren, und Clientvorrichtungen oder anderen Quellen empfangen werden), die als Teil eines Big Data Analytics-Projekts verarbeitet werden sollen, kann sie auch Daten als Teil einer Streaming Analytics-Umgebung in Echtzeit empfangen. Wie bereits erwähnt, können Daten unter Verwendung einer Vielzahl von Quellen gesammelt werden, wie sie über verschiedene Typen von Netzen oder lokal kommuniziert werden. Derartige Daten können auf einer Echtzeit-Streaming-Basis empfangen werden. Beispielsweise können Netzvorrichtungen periodisch Daten von Netzvorrichtungssensoren empfangen, wenn die Sensoren kontinuierlich Veränderungen in ihren Umgebungen erfassen, überwachen und verfolgen. Vorrichtungen innerhalb der Rechenumgebung 214 können auch eine Voranalyse bei Daten durchführen, die empfangen werden, um zu bestimmen, ob die empfangenen Daten als Teil eines laufenden Projekts verarbeitet werden sollen. Die Daten, die von der Rechenumgebung 214 empfangen und gesammelt werden, unabhängig davon, was die Quelle oder das Verfahren oder das Timing des Empfangs ist, können über eine Zeitperiode verarbeitet werden, damit ein Client Ergebnisdaten basierend auf den Bedürfnissen und Regeln des Clients bestimmen kann.In addition to that the computing environment 214 Collecting data (such as that received from network devices, such as sensors, and client devices or other sources) that are to be processed as part of a Big Data Analytics project can also be used as part of a streaming analytics environment Receive real time. As already mentioned, data can be collected using a variety of sources as communicated across different types of networks or locally. Such data may be received on a real-time streaming basis. For example, network devices may periodically receive data from network device sensors as the sensors continuously detect, monitor, and track changes in their environments. Devices within the computing environment 214 can also pre-analyze data received to determine whether the received data should be processed as part of an ongoing project. The data coming from the computing environment 214 regardless of what the source or method or timing of the reception is, they can be processed over a period of time to allow a client to determine result data based on the needs and rules of the client.

3 veranschaulicht eine Darstellung eines Konzeptmodells eines Kommunikationsprotokollsystems gemäß Ausführungsformen der vorliegenden Technologie. Insbesondere identifiziert 3 den Betrieb einer Rechenumgebung in einem Open Systems Interaction-Modell, das verschiedenen Verbindungskomponenten entspricht. Das Modell 300 zeigt beispielsweise, wie eine Rechenumgebung, wie beispielsweise die Rechenumgebung 314 (oder die Rechenumgebung 214 in 2) mit anderen Vorrichtungen in ihrem Netz kommunizieren und steuern kann, wie und unter welchen Bedingungen die Kommunikation zwischen der Rechenumgebung und anderen Vorrichtungen ausgeführt wird. 3 FIG. 12 illustrates an illustration of a conceptual model of a communication protocol system according to embodiments of the present technology. FIG. In particular identified 3 the operation of a computing environment in an Open Systems Interaction model that corresponds to different connection components. The model 300 shows, for example, how a computing environment, such as the computing environment 314 (or the computing environment 214 in 2 ) can communicate with other devices in their network and control how and under what conditions the communication between the computing environment and other devices is performed.

Das Modell kann die Schichten 302314 umfassen. Die Schichten sind in einem Stapel angeordnet. Jede Schicht im Stapel bedient die Schicht, die ein Level höher als sie liegt (mit Ausnahme der Anwendungsschicht, die die höchste Schicht ist), und wird von der Schicht bedient, die ein Level darunter liegt (mit Ausnahme der physischen Schicht, die die niedrigste Schicht ist). Die physische Schicht ist die niedrigste Schicht, da sie rohe Bytes von Daten empfängt und überträgt und die am weitesten entfernte Schicht vom Benutzer in einem Kommunikationssystem ist. Auf der anderen Seite ist die Anwendungsschicht die höchste Schicht, da sie direkt mit einer Softwareanwendung interagiert.The model can be the layers 302 - 314 include. The layers are arranged in a stack. Each layer in the stack serves the layer that is one level higher than it (except the application layer, which is the highest layer), and is served by the layer that is one level lower (with the exception of the physical layer, which is the lowest) Layer is). The physical layer is the lowest layer because it receives and transmits raw bytes of data and is the farthest layer from the user in a communication system. On the other hand, the application layer is the highest layer because it interacts directly with a software application.

Wie bereits erwähnt, umfasst das Modell eine physische Schicht 302. Die physische Schicht 302 repräsentiert die physische Kommunikation und kann Parameter dieser physischen Kommunikation definieren. Beispielsweise kann eine derartige physische Kommunikation in Form von elektrischen, optischen oder elektromagnetischen Signalen erfolgen. Die physische Schicht 302 definiert auch Protokolle, die die Kommunikation innerhalb eines Datenübertragungsnetzes steuern können.As already mentioned, the model includes a physical layer 302 , The physical layer 302 represents the physical communication and can define parameters of this physical communication. For example, such physical communication may take the form of electrical, optical or electromagnetic signals. The physical layer 302 also defines protocols that can control communication within a communications network.

Die Verbindungsschicht 304 definiert Verbindungen und Mechanismen, die verwendet werden, um Daten über ein Netz zu übertragen (d. h. zu bewegen). Die Verbindungsschicht verwaltet die Knoten-zu-Knoten-Kommunikation, wie beispielsweise innerhalb einer Gitterrechenumgebung. Die Verbindungsschicht 304 kann Fehler erkennen und korrigieren (z. B. Übertragungsfehler in der physischen Schicht 302). Die Verbindungsschicht 304 kann auch eine Media Access Control(MAC)-Schicht und Logical Link Control(LLC)-Schicht umfassen.The connection layer 304 defines connections and mechanisms used to transmit (ie move) data over a network. The link layer manages node-to-node communication, such as within a grid computing environment. The connection layer 304 can detect and correct errors (for example, transmission errors in the physical layer 302 ). The connection layer 304 may also include a Media Access Control (MAC) layer and Logical Link Control (LLC) layer.

Die Netzschicht 306 definiert das Protokoll für das Routing innerhalb eines Netzes. Mit anderen Worten koordiniert die Netzschicht die Übertragung von Daten über Knoten in einem gleichen Netz (z. B. einer Gitterrechenumgebung). Die Netzschicht 306 kann auch die Prozesse definieren, die verwendet werden, um die lokale Adressierung innerhalb des Netzes zu strukturieren.The network layer 306 defines the protocol for routing within a network. In other words, the network layer coordinates the transmission of data over nodes in a same network (eg, a grid computing environment). The network layer 306 can also define the processes used to structure local addressing within the network.

Die Transportschicht 308 kann die Übertragung von Daten und die Qualität der Übertragung und/oder des Empfangs dieser Daten verwalten. Die Transportschicht 308 kann ein Protokoll zum Übertragen von Daten bereitstellen, wie beispielsweise ein Transmission Control Protocol (TCP). Die Transportschicht 308 kann Datenrahmen zur Übertragung assemblieren und disassemblieren. Die Transportschicht kann auch Übertragungsfehler erkennen, die in den darunter liegenden Schichten auftreten.The transport layer 308 can manage the transmission of data and the quality of the transmission and / or reception of this data. The transport layer 308 may provide a protocol for transmitting data, such as Transmission Control Protocol (TCP). The transport layer 308 can assemble and disassemble data frames for transfer. The transport layer can also detect transmission errors that occur in the underlying layers.

Die Sitzungsschicht 310 kann Kommunikationsverbindungen zwischen Vorrichtungen in einem Netz herstellen, pflegen und verwalten. Mit anderen Worten steuert die Sitzungsschicht die Dialoge oder die Art der Kommunikation zwischen Netzvorrichtungen im Netz. Die Sitzungsschicht kann auch Prüfpunktausführungs-, Vertagungs-, Beendigungs- und Neustartprozeduren festlegen.The session layer 310 Can establish, maintain and manage communication links between devices in a network. In other words, the session layer controls the dialogues or the type of Communication between network devices in the network. The session layer may also define checkpoint execution, adjournment, termination, and restart procedures.

Die Präsentationsschicht 312 kann eine Übersetzung für die Kommunikation zwischen den Anwendungs- und Netzschichten bereitstellen. Mit anderen Worten kann diese Schicht Daten basierend auf Datenarten und/oder Codierungen, die bekanntermaßen von einer Anwendungs- oder Netzschicht akzeptiert werden, verschlüsseln, entschlüsseln und/oder formatieren.The presentation layer 312 can provide a translation for communication between the application and network layers. In other words, this layer may encrypt, decrypt, and / or format data based on data types and / or encodings that are known to be accepted by an application or network layer.

Die Anwendungsschicht 314 interagiert direkt mit Softwareanwendungen und Endbenutzern und verwaltet die Kommunikation zwischen ihnen. Die Anwendungsschicht 314 kann Ziele, Zustände oder Verfügbarkeit lokaler Ressourcen und/oder Kommunikationsinhalt oder Formatierungen unter Verwendung der Anwendungen identifizieren.The application layer 314 interacts directly with software applications and end users and manages the communication between them. The application layer 314 can identify goals, states or availability of local resources and / or communication content or formatting using the applications.

Die Intra-Netzwerk-Verbindungskomponenten 322 und 324 sind gezeigt, dass sie in niedrigeren Levels arbeiten, wie beispielsweise jeweils in der physischen Schicht 302 und Verbindungsschicht 304. Beispielsweise kann ein Hub in der physischen Schicht arbeiten, ein Switch kann in der physischen Schicht arbeiten und ein Router kann in der Netzschicht arbeiten. Inter-Netzwerk-Verbindungskomponenten 326 und 328 sind gezeigt, dass sie auf höheren Levels arbeiten, wie beispielsweise den Schichten 306314. Beispielsweise können Router in der Netzschicht arbeiten und Netzvorrichtungen können in den Transport-, Sitzungs-, Präsentations- und Anwendungsschichten arbeiten.The intra-network connection components 322 and 324 are shown to work in lower levels, such as in the physical layer, respectively 302 and connecting layer 304 , For example, a hub can work in the physical layer, a switch can work in the physical layer, and a router can work in the network layer. Inter-network connection components 326 and 328 are shown to work at higher levels, such as shifts 306 - 314 , For example, routers can work in the network layer and network devices can work in the transport, session, presentation, and application layers.

Wie bereits erwähnt, kann eine Rechenumgebung 314 in verschiedenen Ausführungsformen mit einer, mehreren, allen oder beliebigen der verschiedenen Schichten interagieren und/oder darauf arbeiten. Beispielsweise kann die Rechenumgebung 314 mit einem Hub (z. B. über die Verbindungsschicht) interagieren, um so anzupassen, mit welchen Vorrichtungen der Hub kommuniziert. Die physische Schicht kann durch die Verbindungsschicht bedient werden, so dass sie derartige Daten von der Verbindungsschicht implementieren kann. Beispielsweise kann die Rechenumgebung 314 steuern, von welchen Vorrichtungen sie Daten empfangen wird. Falls die Rechenumgebung 314 beispielsweise weiß, dass eine bestimmte Netzvorrichtung ausgeschaltet, defekt oder anderweitig nicht verfügbar oder unzuverlässig ist, kann die Rechenumgebung 314 den Hub anweisen, dass verhindert wird, dass irgendwelche Daten von dieser Netzvorrichtung an die Rechenumgebung 314 übertragen werden. Ein derartiger Prozess kann vorteilhaft sein, um zu vermeiden, dass Daten empfangen werden, die ungenau sind oder die durch eine ungesteuerte Umgebung beeinflusst wurden. Als weiteres Beispiel kann die Rechenumgebung 314 mit einer Brücke, einem Switch, einem Router oder einem Gateway kommunizieren und beeinflussen, welche Vorrichtung innerhalb des Systems (z. B. System 200) die Komponente als Ziel auswählt. In einigen Ausführungsformen kann die Rechenumgebung 314 mit verschiedenen Schichten interagieren, indem sie die Kommunikation durch Routing oder Modifizierung bestehender Kommunikation mit Geräten austauscht, die auf einer bestimmten Schicht arbeiten. In einer anderen Ausführungsform, wie z. B. in einer Gitterrechenumgebung, kann ein Knoten bestimmen, wie Daten innerhalb der Umgebung weitergeleitet werden sollen (z. B. welcher Knoten bestimmte Daten empfangen sollte), basierend auf bestimmten Parameter oder Informationen, die von anderen Schichten innerhalb des Modells bereitgestellt werden.As mentioned earlier, a computing environment 314 in various embodiments, interact with and / or work with one, more, all, or any of the various layers. For example, the computing environment 314 interact with a hub (eg, via the link layer) to adjust which devices the hub communicates with. The physical layer can be served by the link layer so that it can implement such data from the link layer. For example, the computing environment 314 control from which devices it will receive data. If the computing environment 314 For example, knowing that a particular network device is turned off, defective, or otherwise unavailable or unreliable can cause the computing environment 314 instruct the hub to prevent any data from this network device from being sent to the computing environment 314 be transmitted. Such a process may be advantageous to avoid receiving data that is inaccurate or that has been affected by an uncontrolled environment. As another example, the computing environment 314 communicate with a bridge, a switch, a router or a gateway and influence which device within the system (eg system 200 ) selects the component as the destination. In some embodiments, the computing environment may 314 Interact with different layers by exchanging communication by routing or modifying existing communication with devices working on a particular layer. In another embodiment, such as. For example, in a grid computing environment, a node may determine how data is to be forwarded within the environment (eg, which node should receive certain data) based on certain parameters or information provided by other layers within the model.

Wie bereits erwähnt, kann die Rechenumgebung 314 ein Teil einer Kommunikationsgitterumgebung sein, deren Kommunikation, wie im Protokoll aus 3 gezeigt, implementiert werden kann. Beispielsweise können, unter Rückbezug auf 2, eine oder mehrere der Maschinen 220 und 240 Teil einer Kommunikationsgitter-Rechenumgebung sein. Eine Gitterrechenumgebung kann in einem verteilten System mit nicht interaktiven Arbeitslasten verwendet werden, bei denen sich Daten im Speicher in den Maschinen oder Rechenknoten befinden. In einer derartigen Umgebung steuert der analytische Code anstelle eines Datenbankmanagementsystems die von den Knoten durchgeführte Verarbeitung. Die Daten werden durch Vorverteilen an die Gitterknoten gemeinsam angeordnet, und der analytische Code auf jedem Knoten lädt die lokalen Daten in den Speicher. Jedem Knoten kann eine bestimmte Aufgabe zugewiesen werden, wie beispielsweise ein Teil eines Verarbeitungsprojekts, oder um andere Knoten innerhalb des Gitters zu organisieren oder zu steuern.As mentioned earlier, the computing environment 314 be part of a communication grid environment whose communication is as in the log 3 shown, can be implemented. For example, with reference to 2 , one or more of the machines 220 and 240 Be part of a communication grid computing environment. A grid computing environment may be used in a distributed system with non-interactive workloads where data is stored in memory in the machines or compute nodes. In such an environment, instead of a database management system, the analytical code controls the processing performed by the nodes. The data is shared by pre-distributing to the grid nodes, and the analytic code on each node loads the local data into memory. Each node may be assigned a particular task, such as part of a processing project, or to organize or control other nodes within the grid.

4 veranschaulicht ein Kommunikationsgitter-Rechensystem 400, das eine Vielzahl von Steuer- und Arbeiterknoten umfasst, gemäß Ausführungsformen der vorliegenden Technologie. Das Kommunikationsgitter-Rechensystem 400 umfasst drei Steuerknoten und einen oder mehrere Arbeiterknoten. Das Kommunikationsgitter-Rechensystem 400 umfasst die Steuerknoten 402, 404 und 406. Die Steuerknoten sind über die Kommunikationspfade 451, 453 und 455 kommunikativ verbunden. Daher können die Steuerknoten Informationen (z. B. bezogen auf das Kommunikationsgitter oder Benachrichtigungen) aneinander übertragen und Informationen voneinander empfangen. Obwohl das Kommunikationsgitter-Rechensystem 400 in 4 mit drei Steuerknoten gezeigt ist, kann das Kommunikationsgitter mehr oder weniger als drei Steuerknoten umfassen. 4 illustrates a communication grid computing system 400 comprising a plurality of control and worker nodes according to embodiments of the present technology. The communication grid computing system 400 includes three control nodes and one or more worker nodes. The communication grid computing system 400 includes the control nodes 402 . 404 and 406 , The control nodes are via the communication paths 451 . 453 and 455 communicatively connected. Therefore, the control nodes can transmit information (eg related to the communication grid or notifications) to each other and Receive information from each other. Although the communication grid computing system 400 in 4 is shown with three control nodes, the communication grid may include more or fewer than three control nodes.

Das Kommunikationsgitter-Rechensystem (oder nur „Kommunikationsgitter”) 400 umfasst auch einen oder mehrere Arbeiterknoten. In 4 sind sechs Arbeiterknoten 410420 gezeigt. Obwohl 4 sechs Arbeiterknoten zeigt, kann ein Kommunikationsgitter gemäß Ausführungsformen der vorliegenden Technologie mehr oder weniger als sechs Arbeiterknoten umfassen. Die Anzahl von Arbeiterknoten, die in einem Kommunikationsgitter eingeschlossen sind, kann unter anderem davon abhängen, wie groß das Projekt oder der Datensatz ist, das bzw. der durch das Kommunikationsgitter verarbeitet wird, von der Kapazität jedes Arbeiterknotens, von der Zeit, die für das Kommunikationsgitter designiert ist, um das Projekt abzuschließen. Jeder Arbeiterknoten innerhalb des Kommunikationsgitters 400 kann (drahtgebunden oder drahtlos und direkt oder indirekt) mit den Steuerknoten 402406 verbunden sein. Daher kann jeder Arbeiterknoten Informationen von den Steuerknoten empfangen (z. B. eine Anweisung zum Durchführen von Arbeiten an einem Projekt) und kann Informationen an die Steuerknoten übertragen (z. B. ein Ergebnis einer Arbeit, die an einem Projekt durchgeführt wurde). Ferner können Arbeiterknoten (entweder direkt oder indirekt) miteinander kommunizieren. Beispielsweise können Arbeiterknoten Daten untereinander übertragen, die sich auf einen Auftrag, der durchgeführt wird, oder eine einzelne Aufgabe innerhalb eines Auftrags, der von diesem Arbeiterknoten durchgeführt wird, beziehen. Jedoch können in bestimmten Ausführungsformen Arbeiterknoten beispielsweise nicht mit bestimmten anderen Arbeiterknoten (kommunikativ oder anderweitig) verbunden sein. In einer Ausführungsform können Arbeiterknoten nur in der Lage sein, mit dem Steuerknoten zu kommunizieren, der sie steuert, und können möglicherweise nicht in der Lage sein, mit anderen Arbeiterknoten im Kommunikationsgitter zu kommunizieren, unabhängig davon, ob sie andere Arbeiterknoten sind, die durch den Steuerknoten gesteuert werden, der den Arbeiterknoten steuert, oder Arbeiterknoten, die von anderen Steuerknoten im Kommunikationsgitter gesteuert werden.The communication grid computing system (or just "communication grid") 400 also includes one or more worker nodes. In 4 are six working knots 410 - 420 shown. Even though 4 6 shows worker nodes, a communication grid according to embodiments of the present technology may include more or fewer than six worker nodes. The number of worker nodes included in a communications grid may depend, among other things, on the size of the project or data set being processed by the communications grid, the capacity of each worker node, the time allocated for the job Communication grid is designated to complete the project. Each worker node within the communication grid 400 can (wired or wireless and directly or indirectly) with the control nodes 402 - 406 be connected. Therefore, each worker node may receive information from the control nodes (eg, an instruction to perform work on a project) and may transmit information to the control nodes (eg, a result of work performed on a project). Further, worker nodes (either directly or indirectly) can communicate with each other. For example, worker nodes may transmit data to each other relating to a job being performed or a single task within a job performed by that worker node. However, in certain embodiments, worker nodes may not be connected to certain other worker nodes (communicatively or otherwise), for example. In one embodiment, worker nodes may only be able to communicate with the control node that controls them, and may not be able to communicate with other worker nodes in the communication grid, whether or not they are other worker nodes that pass through the communication node Be controlled control node that controls the worker node, or worker nodes that are controlled by other control nodes in the communication grid.

Ein Steuerknoten kann sich mit einer externen Vorrichtung verbinden, mit der der Steuerknoten kommunizieren kann (z. B. kann sich ein Gitterbenutzer, wie beispielsweise ein Server oder Computer, mit einem Controller des Gitters verbinden). Beispielsweise kann sich ein Server oder Computer mit Steuerknoten verbinden und ein Projekt oder einen Auftrag an den Knoten übertragen. Das Projekt kann einen Datensatz umfassen. Der Datensatz kann von beliebiger Größe sein. Sobald der Steuerknoten ein derartiges Projekt mit einem großen Datensatz empfängt, kann der Steuerknoten den Datensatz oder Projekte, die sich auf den Datensatz beziehen, um von Arbeiterknoten durchgeführt zu werden, verteilen. Alternativ kann der Datensatz für ein Projekt mit einem großen Datensatz von einer anderen Maschine als einem Steuerknoten (z. B. einem Hadoop-Datenknoten, der das Hadoop Distributed File System oder HDFS verwendet) empfangen oder gespeichert werden.A control node may connect to an external device with which the control node can communicate (eg, a lattice user, such as a server or computer, may connect to a controller of the lattice). For example, a server or computer may connect to control nodes and transmit a project or job to the node. The project can include a dataset. The record can be of any size. Once the control node receives such a large data set project, the control node may distribute the data set or projects related to the data set to be performed by worker nodes. Alternatively, the record may be received or stored for a project with a large record from a machine other than a control node (eg, a Hadoop data node using the Hadoop Distributed File System or HDFS).

Steuerknoten können unter anderem Kenntnisse über den Status der Knoten im Gitter (d. h. Gitterstatusinformationen) beibehalten, Arbeitsanforderungen von Clients akzeptieren, die Arbeit über Arbeiterknoten aufteilen, die Arbeiterknoten koordinieren. Arbeiterknoten können Arbeitsanforderungen von einem Steuerknoten akzeptieren und dem Steuerknoten Ergebnisse der Arbeit, die durch den Arbeiterknoten durchgeführt wurde, bereitstellen. Ein Gitter kann von einem einzelnen Knoten (z. B. einer Maschine, einem Computer, einem Server usw.) gestartet werden. Dieser erste Knoten kann zugewiesen werden oder kann als der primäre Steuerknoten starten, der alle zusätzlichen Knoten steuern wird, die in das Gitter eintreten.Control nodes may, among other things, maintain knowledge about the status of the nodes in the grid (i.e., grid status information), accept work requests from clients, split the work over worker nodes, coordinate the worker nodes. Worker nodes may accept work requests from a control node and provide the control node with results of the work performed by the worker node. A grid can be started from a single node (for example, a machine, a computer, a server, and so on). This first node may be assigned or may start as the primary control node that will control any additional nodes that enter the grid.

Wenn ein Projekt zur Ausführung eingereicht wird (z. B. durch einen Client oder einen Controller des Gitters), kann es einem Satz von Knoten zugewiesen werden. Nachdem die Knoten einem Projekt zugewiesen sind, kann eine Datenstruktur (d. h. ein Kommunikator) erzeugt werden. Der Kommunikator kann vom Projekt für Informationen verwendet werden, die zwischen dem auf jedem Knoten laufenden Projektcode gemeinsam genutzt werden sollen. Ein Kommunikations-Handle kann auf jedem Knoten erzeugt werden. Ein Handle ist beispielsweise ein Verweis auf den Kommunikator, der innerhalb eines einzelnen Prozesses auf einem einzelnen Knoten gültig ist, und das Handle kann verwendet werden, wenn eine Kommunikation zwischen Knoten angefordert wird.When a project is submitted for execution (eg, by a client or controller of the grid), it can be assigned to a set of nodes. After the nodes are assigned to a project, a data structure (i.e., a communicator) can be generated. The communicator can be used by the project for information to be shared between the project code running on each node. A communication handle can be generated on each node. For example, a handle is a reference to the communicator that is valid within a single process on a single node, and the handle can be used when communication between nodes is requested.

Ein Steuerknoten, wie beispielsweise der Steuerknoten 402, kann als der primäre Steuerknoten bezeichnet werden. Ein Server, ein Computer oder eine andere externe Vorrichtung kann sich mit dem primären Steuerknoten verbinden. Sobald der Steuerknoten ein Projekt empfängt, kann der primäre Steuerknoten Teile des Projekts an seine Arbeiterknoten zur Ausführung verteilen. Wenn ein Projekt beispielsweise auf dem Kommunikationsgitter 400 initiiert wird, steuert der primäre Steuerknoten 402 die für das Projekt durchzuführende Arbeit, um das Projekt wie angefordert oder angewiesen abzuschließen. Der primäre Steuerknoten kann die Arbeit an die Arbeiterknoten basierend auf verschiedenen Faktoren verteilen, wie beispielsweise, welche Teilmengen oder Teile von Projekten am effizientesten und in der korrekten Zeitdauer abgeschlossen werden können. Beispielsweise kann ein Arbeiterknoten eine Analyse auf einem Teil von Daten durchführen, die bereits lokal auf dem Arbeiterknoten sind (z. B. darauf gespeichert sind). Der primäre Steuerknoten koordiniert und verarbeitet auch die Ergebnisse der Arbeit, die von jedem Arbeiterknoten durchgeführt wird, nachdem jeder Arbeiterknoten seinen Auftrag ausführt und abschließt. Beispielsweise kann der primäre Steuerknoten ein Ergebnis von einem oder mehreren Arbeiterknoten empfangen, und der Steuerknoten kann die empfangenen Ergebnisse organisieren (z. B. sammeln und assemblieren) und sie kompilieren, um ein vollständiges Ergebnis für das vom Endbenutzer empfangene Projekt zu erzeugen.A control node, such as the control node 402 , may be referred to as the primary control node. A server, computer, or other external device may connect to the primary control node. Once the control node receives a project, the primary control node can distribute parts of the project to its worker nodes for execution. For example, if a project is on the communication grid 400 is initiated, the primary control node controls 402 the work to be performed on the project to complete the project as requested or instructed. The primary control node may distribute work to the worker nodes based on various factors, such as which ones Subsets or parts of projects can be completed most efficiently and in the correct time. For example, a worker node may perform an analysis on a portion of data that is already local to (for example, stored on) the worker node. The primary control node also coordinates and processes the results of the work performed by each worker node after each worker node completes and completes its job. For example, the primary control node may receive a result from one or more worker nodes, and the control node may organize (eg, collect and assemble) the received results and compile them to produce a complete result for the project received from the end user.

Alle verbleibenden Steuerknoten, wie beispielsweise die Steuerknoten 404 und 406, können als Backup-Steuerknoten für das Projekt zugewiesen werden. In einer Ausführungsform können die Backup-Steuerknoten möglicherweise keinen Teil des Projekts steuern. Stattdessen können Backup-Steuerknoten als ein Backup für den primären Steuerknoten dienen und als primärer Steuerknoten übernehmen, falls der primäre Steuerknoten ausfallen würde. Falls ein Kommunikationsgitter nur einen einzelnen Steuerknoten umfassen würde und der Steuerknoten ausfallen würde (z. B. wird der Steuerknoten abgeschaltet oder bricht), dann kann das Kommunikationsgitter als Ganzes ausfallen und ein Projekt oder Auftrag, das bzw. der auf dem Kommunikationsgitter ausgeführt wird, kann fehlschlagen und möglicherweise nicht abschließen. Obgleich das Projekt erneut ausgeführt werden kann, kann ein derartiger Fehler eine Verzögerung (schwere Verzögerung in einigen Fällen, wie beispielsweise eine Verzögerung über Nacht) beim Abschluss des Projekts verursachen. Daher kann ein Gitter mit mehreren Steuerknoten, einschließlich eines Backup-Steuerknotens, vorteilhaft sein.All remaining control nodes, such as the control nodes 404 and 406 , can be assigned as a backup control node for the project. In one embodiment, the backup control nodes may not control a portion of the project. Instead, backup control nodes may serve as a backup for the primary control node and take over as a primary control node if the primary control node were to fail. If a communication grid included only a single control node and the control node failed (eg, the control node is turned off or breaks), then the communication grid as a whole may fail and a project or job running on the communication grid may fail. may fail and may not complete. Although the project can be run again, such an error can cause a delay (heavy delay in some cases, such as an overnight delay) at the conclusion of the project. Therefore, a grid with multiple control nodes, including a backup control node, may be advantageous.

Um dem Gitter einen anderen Knoten oder eine andere Maschine hinzuzufügen, kann der primäre Steuerknoten beispielsweise ein Paar von Listening Sockets öffnen. Ein Socket kann verwendet werden, um Arbeitsanforderungen von Clients zu akzeptieren, und das zweite Socket kann verwendet werden, um Verbindungen von anderen Gitterknoten zu akzeptieren. Der primäre Steuerknoten kann mit einer Liste von anderen Knoten (z. B. anderen Maschinen, Computer, Servern), die im Gitter teilnehmen werden, und der Rolle, die jeder Knoten im Gitter ausfüllen wird, bereitgestellt sein. Beim Start des primären Steuerknotens (z. B. des ersten Knotens im Gitter) kann der primäre Steuerknoten ein Netzprotokoll verwenden, um den Serverprozess auf jedem anderen Knoten im Gitter zu starten. Befehlszeilenparameter können beispielsweise jeden Knoten über einen oder mehrere Informationsteile informieren, wie beispielsweise: unter anderem die Rolle, die der Knoten im Gitter haben wird, den Hostnamen des primären Steuerknotens, die Portnummer, auf der der primäre Steuerknoten Verbindungen von Peer-Knoten akzeptiert. Die Informationen können auch in einer Konfigurationsdatei bereitgestellt werden, über einen sicheren Shell-Tunnel übertragen werden, von einem Konfigurationsserver wiederhergestellt werden, unter anderem. Obgleich die anderen Maschinen im Gitter zunächst nichts über die Konfiguration des Gitters wissen können, können diese Informationen auch durch den primären Steuerknoten an einen anderen Knoten gesendet werden. Aktualisierungen der Gitterinformationen können auch anschließend an diese Knoten gesendet werden.For example, to add another node or machine to the grid, the primary control node may open a pair of listening sockets. One socket can be used to accept client work requests, and the second socket can be used to accept connections from other grid nodes. The primary control node may be provided with a list of other nodes (eg, other machines, computers, servers) that will participate in the grid and the role that each node in the grid will fill. When the primary control node starts (for example, the first node in the grid), the primary control node can use a network protocol to start the server process on every other node in the grid. For example, command line parameters may inform each node of one or more pieces of information, including, but not limited to, the role that the node in the grid will have, the host name of the primary control node, the port number on which the primary control node accepts connections from peer nodes. The information may also be provided in a configuration file, transmitted via a secure shell tunnel, restored by a configuration server, among others. Although the other machines in the grid initially can not know the configuration of the grid, this information can also be sent through the primary control node to another node. Updates to the grid information may also be sent subsequently to these nodes.

Für jeden anderen Steuerknoten als den primären Steuerknoten, der dem Gitter hinzugefügt ist, kann der Steuerknoten drei Sockets öffnen. Das erste Socket kann Arbeitsanforderungen von Clients akzeptieren, das zweite Socket kann Verbindungen von anderen Gitterelementen akzeptieren, und das dritte Socket kann sich mit dem primären Steuerknoten (z. B. permanent) verbinden. Wenn ein Steuerknoten (z. B. ein primärer Steuerknoten) eine Verbindung von einem anderen Steuerknoten empfängt, prüft er zuerst, ob sich der Peer-Knoten in der Liste der konfigurierten Knoten im Gitter befindet. Falls er sich nicht in der Liste befindet, kann der Steuerknoten die Verbindung löschen. Falls er sich in der Liste befindet, kann er dann versuchen, die Verbindung zu authentifizieren. Falls die Authentifizierung erfolgreich ist, kann der Authentifizierungsknoten Informationen an seinen Peer senden, wie beispielsweise die Portnummer, auf der ein Knoten auf Verbindungen hört, den Hostnamen des Knotens, Informationen über die Authentifizierung des Knotens und andere Informationen. Wenn ein Knoten, wie beispielsweise der neue Steuerknoten, Informationen über einen anderen aktiven Knoten empfängt, wird geprüft, ob er bereits eine Verbindung zu diesem anderen Knoten hat. Falls er keine Verbindung zu diesem Knoten hat, kann er dann eine Verbindung zu diesem Steuerknoten herstellen.For any control node other than the primary control node added to the grid, the control node can open three sockets. The first socket can accept work requests from clients, the second socket can accept connections from other grid elements, and the third socket can connect to the primary control node (eg, permanent). When a control node (eg, a primary control node) receives a connection from another control node, it first checks to see if the peer node in the list of configured nodes is in the grid. If it is not in the list, the control node can delete the connection. If he is in the list, he can then try to authenticate the connection. If the authentication is successful, the authentication node may send information to its peer, such as the port number on which a node listens for connections, the host name of the node, information about node authentication, and other information. When a node, such as the new control node, receives information about another active node, it is checked if it already has a connection to that other node. If he has no connection to this node, he can then connect to this control node.

Jeder Arbeiterknoten, der dem Gitter hinzugefügt wird, kann eine Verbindung zum primären Steuerknoten und beliebigen anderen Steuerknoten auf dem Gitter herstellen. Nach dem Herstellen der Verbindung kann er sich selbst gegenüber dem Gitter authentifizieren (z. B. gegenüber beliebigen Steuerknoten, einschließlich sowohl primären als auch Backups, oder einem Server oder Benutzer, der das Gitter steuert). Nach erfolgreicher Authentifizierung kann der Arbeiterknoten Konfigurationsinformationen vom Steuerknoten akzeptieren.Each worker node added to the grid can connect to the primary control node and any other control node on the grid. After establishing the connection, he can authenticate himself to the grid (e.g., to any control nodes, including both primary and backups, or a server or user controlling the grid). After successful authentication, the worker node can accept configuration information from the control node.

Wenn sich ein Knoten mit einem Kommunikationsgitter verbindet (z. B. wenn der Knoten eingeschaltet wird oder mit einem bestehenden Knoten auf dem Gitter oder mit beiden verbunden wird), wird dem Knoten (z. B. durch ein Betriebssystem des Gitters) eine universell eindeutige Kennung (Universally Unique Identifier, UUID) zugewiesen. Diese eindeutige Kennung kann anderen Knoten und externen Entitäten (Vorrichtungen, Benutzern usw.) helfen, den Knoten zu identifizieren und von anderen Knoten zu unterscheiden. Wenn ein Knoten mit dem Gitter verbunden ist, kann der Knoten seine eindeutige Kennung mit den anderen Knoten im Gitter teilen. Da jeder Knoten seine eindeutige Kennung teilen kann, kann jeder Knoten die eindeutige Kennung jedes anderen Knotens auf dem Gitter kennen. Eindeutige Kennungen können auch eine Hierarchie von jedem der Knoten (z. B. Backup-Steuerknoten) innerhalb des Gitters designieren. Beispielsweise können die eindeutigen Kennungen von jedem der Backup-Steuerknoten in einer Liste von Backup-Steuerknoten gespeichert werden, um eine Reihenfolge anzugeben, in der die Backup-Steuerknoten für einen ausgefallenen primären Steuerknoten übernehmen, um ein neuer primärer Steuerknoten zu werden. Jedoch kann eine Hierarchie von Knoten auch unter Verwendung von anderen Verfahren als der Verwendung der eindeutigen Kennungen der Knoten bestimmt werden. Beispielsweise kann die Hierarchie vorbestimmt sein oder basierend auf anderen vorbestimmten Faktoren zugewiesen werden.When a node connects to a communication grid (e.g., when the node is powered up or is connected to an existing node on the grid or both), the node becomes (for example, by an operating system of the grid) assigned a universally unique identifier (UUID). This unique identifier may help other nodes and external entities (devices, users, etc.) identify the node and distinguish it from other nodes. When a node is connected to the grid, the node can share its unique identifier with the other nodes in the grid. Since each node can share its unique identifier, each node can know the unique identifier of every other node on the grid. Unique identifiers may also designate a hierarchy of each of the nodes (eg, backup control nodes) within the grid. For example, the unique identifiers of each of the backup control nodes may be stored in a list of backup control nodes to indicate an order in which the backup control nodes assume for a failed primary control node to become a new primary control node. However, a hierarchy of nodes may also be determined using methods other than using the unique identifiers of the nodes. For example, the hierarchy may be predetermined or assigned based on other predetermined factors.

Das Gitter kann zu jedem beliebigen Zeitpunkt neue Maschinen hinzufügen (z. B. von einem beliebigen Steuerknoten initiiert). Nach dem Hinzufügen eines neuen Knotens zum Gitter kann der Steuerknoten zuerst den neuen Knoten zu seiner Tabelle von Gitterknoten hinzufügen. Der Steuerknoten kann dann auch jeden anderen Steuerknoten über den neuen Knoten benachrichtigen. Die Knoten, die die Benachrichtigung empfangen, können bestätigen, dass sie ihre Konfigurationsinformationen aktualisiert haben.The grid can add new machines at any time (for example, initiated by any control node). After adding a new node to the grid, the control node may first add the new node to its table of grid nodes. The control node may then notify any other control node of the new node. The nodes that receive the notification may confirm that they have updated their configuration information.

Der primäre Steuerknoten 402 kann beispielsweise eine oder mehrere Kommunikationen an die Backup-Steuerknoten 404 und 406 (und beispielsweise an andere Steuer- oder Arbeiterknoten innerhalb des Kommunikationsgitters) übertragen. Derartige Kommunikationen können periodisch in festen Zeitintervallen zwischen bekannten festen Stufen der Ausführung des Projekts gesendet werden, unter anderen Protokollen. Die vom primären Steuerknoten 402 übertragenen Kommunikationen können verschiedene Typen aufweisen und können eine Vielzahl von Informationsarten umfassen. Beispielsweise kann der primäre Steuerknoten 402 Schnappschüsse (z. B. Statusinformationen) des Kommunikationsgitters übertragen, so dass der Backup-Steuerknoten 404 immer einen letzten Schnappschuss des Kommunikationsgitters aufweist. Der Schnappschuss oder Gitterstatus kann beispielsweise die Struktur des Gitters (einschließlich beispielsweise der Arbeiterknoten im Gitter, der eindeutigen Kennungen der Knoten oder ihrer Beziehungen mit dem primären Steuerknoten) und den Status eines Projekts (z. B. den Status des Teils des Projekts von jedem Arbeiterknoten) umfassen. Der Schnappschuss kann auch Analysen oder Ergebnisse umfassen, die von Arbeiterknoten im Kommunikationsgitter empfangen werden. Die Backup-Steuerknoten können die vom primären Steuerknoten empfangenen Backup-Daten empfangen und speichern. Die Backup-Steuerknoten können eine Anforderung für einen derartigen Schnappschuss (oder andere Informationen) vom primären Steuerknoten übertragen, oder der primäre Steuerknoten kann derartige Informationen periodisch an die Backup-Steuerknoten senden.The primary control node 402 may, for example, one or more communications to the backup control nodes 404 and 406 (and, for example, to other control or worker nodes within the communication grid). Such communications may be sent periodically at fixed time intervals between known fixed stages of execution of the project, among other protocols. The from the primary control node 402 transmitted communications may be of various types and may include a variety of types of information. For example, the primary control node 402 Snapshots (such as status information) of the communication grid are transmitted, leaving the backup control node 404 always has a last snapshot of the communication grid. For example, the snapshot or grid state may include the structure of the grid (including, for example, the worker nodes in the grid, the unique identifiers of the nodes or their relationships with the primary control node) and the status of a project (eg, the status of the part of the project from each worker node ). The snapshot may also include analyzes or results received from worker nodes in the communication grid. The backup control nodes can receive and store the backup data received from the primary control node. The backup control nodes may transmit a request for such a snapshot (or other information) from the primary control node, or the primary control node may periodically send such information to the backup control nodes.

Wie bereits erwähnt, können die Backup-Daten dem Backup-Steuerknoten ermöglichen, als primärer Steuerknoten zu übernehmen, falls der primäre Steuerknoten ausfällt, ohne dass das Gitter das Projekt von vorne starten muss. Falls der primäre Steuerknoten ausfällt, kann der Backup-Steuerknoten, der als primärer Steuerknoten übernehmen wird, die aktuellste Version des vom primären Steuerknoten empfangenen Schnappschusses abrufen und den Schnappschuss verwenden, um das Projekt von der Stufe des Projekts fortzusetzen, die durch die Backup-Daten angezeigt wird. Dies kann ein Fehlschlagen des Projekts als Ganzes verhindern.As mentioned previously, if the primary control node fails, the backup data may allow the backup control node to act as the primary control node without the grid having to restart the project from the beginning. If the primary control node fails, the backup control node, which will take over as the primary control node, may retrieve the most recent version of the snapshot received from the primary control node and use the snapshot to continue the project from the stage of the project through the backup data is shown. This can prevent a failure of the project as a whole.

Ein Backup-Steuerknoten kann verschiedene Verfahren verwenden, um zu bestimmen, dass der primäre Steuerknoten ausgefallen ist. In einem Beispiel eines derartigen Verfahrens kann der primäre Steuerknoten eine Kommunikation an den Backup-Steuerknoten (z. B. periodisch) senden, die anzeigt, dass der primäre Steuerknoten funktioniert und nicht ausgefallen ist, wie beispielsweise eine Heartbeat-Kommunikation. Der Backup-Steuerknoten kann bestimmen, dass der primäre Steuerknoten ausgefallen ist, falls der Backup-Steuerknoten eine bestimmte vorbestimmte Zeitperiode lang keine Heartbeat-Kommunikation empfangen hat. Alternativ kann ein Backup-Steuerknoten auch eine Kommunikation vom primären Steuerknoten selbst (bevor er ausfiel) oder von einem Arbeiterknoten empfangen, dass der primäre Steuerknoten ausgefallen ist, beispielsweise da der primäre Steuerknoten nicht mit dem Arbeiterknoten kommuniziert hat.A backup control node may use various methods to determine that the primary control node has failed. In one example of such a method, the primary control node may send communication (eg, periodically) to the backup control node indicating that the primary control node is functioning and not failed, such as heartbeat communication. The backup control node may determine that the primary control node has failed if the backup control node has not received heartbeat communication for a certain predetermined period of time. Alternatively, a backup control node may also receive communication from the primary control node itself (before it failed) or from a worker node that the primary control node has failed, for example because the primary control node has not communicated with the worker node.

Es können verschiedene Verfahren durchgeführt werden, um zu bestimmen, welcher Backup-Steuerknoten eines Satzes von Backup-Steuerknoten (z. B. Backup-Steuerknoten 404 und 406) für den ausgefallenen primären Steuerknoten 402 übernehmen wird und der neue primäre Steuerknoten wird. Beispielsweise kann der neue primäre Steuerknoten basierend auf einer Rangfolge oder „Hierarchie” von Backup-Steuerknoten basierend auf ihren eindeutigen Kennungen ausgewählt werden. In einer alternativen Ausführungsform kann ein Backup-Steuerknoten durch eine andere Vorrichtung im Kommunikationsgitter oder von einer externen Vorrichtung (z. B. einer Systeminfrastruktur oder einem Endbenutzer, wie beispielsweise einem Server oder Computer, der das Kommunikationsgitter steuert) als der neue primäre Steuerknoten zugewiesen werden. In einer anderen alternativen Ausführungsform kann der Backup-Steuerknoten, der als der neue primäre Steuerknoten übernimmt, basierend auf Bandbreite oder anderen Statistiken über das Kommunikationsgitter designiert werden.Various methods may be performed to determine which backup control node of a set of backup control nodes (eg, backup control nodes 404 and 406 ) for the failed primary control node 402 will take over and become the new primary control node. For example, the new primary control node may be selected based on a ranking or "hierarchy" of backup control nodes based on their unique identifiers. In an alternative embodiment For example, a backup control node may be assigned by another device in the communication grid or by an external device (eg, a system infrastructure or an end user, such as a server or computer that controls the communication grid) as the new primary control node. In another alternative embodiment, the backup control node acting as the new primary control node may be designated based on bandwidth or other statistics over the communication grid.

Ein Arbeiterknoten innerhalb des Kommunikationsgitters kann auch ausfallen. Falls ein Arbeiterknoten ausfällt, kann die Arbeit, die vom ausgefallenen Arbeiterknoten durchgeführt wird, unter den betriebsfähigen Arbeiterknoten neu verteilt werden. In einer alternativen Ausführungsform kann der primäre Steuerknoten eine Kommunikation an jeden der betriebsfähigen Arbeiterknoten übertragen, die sich noch auf dem Kommunikationsgitter befinden, dass jeder der Arbeiterknoten auch absichtlich ausfallen sollte. Nachdem alle Arbeiterknoten ausfallen, können sie jeweils den zuletzt gespeicherten Prüfpunkt ihres Status abrufen und das Projekt von diesem Prüfpunkt neu starten, um den verlorenen Fortschritt des ausgeführten Projekts zu minimieren.A worker node within the communication grid may also fail. If a worker node fails, the work performed by the failed worker node can be redistributed among the worker operable nodes. In an alternative embodiment, the primary control node may transmit a communication to each of the operational worker nodes still on the communication grid, that each of the worker nodes should also deliberately fail. After all worker nodes fail, they can each retrieve the last saved checkpoint of their status and restart the project from that checkpoint to minimize the lost progress of the running project.

5 veranschaulicht ein Flussdiagramm, das einen beispielhaften Prozess zum Anpassen eines Kommunikationsgitters oder eines Arbeitsprojekts in einem Kommunikationsgitter nach einem Ausfall eines Knotens zeigt, gemäß Ausführungsformen der vorliegenden Technologie. Der Prozess kann beispielsweise das Empfangen von Gitterstatusinformationen, einschließlich eines Projektstatus eines Teils eines Projekts, das von einem Knoten im Kommunikationsgitter ausgeführt wird, umfassen, wie im Vorgang 502 beschrieben. Beispielsweise kann ein Steuerknoten (z. B. ein Backup-Steuerknoten, der mit einem primären Steuerknoten und einem Arbeiterknoten auf einem Kommunikationsgitter verbunden ist) Gitterstatusinformationen empfangen, wobei die Gitterstatusinformationen einen Projektstatus des primären Steuerknotens oder einen Projektstatus des Arbeiterknotens umfassen. Der Projektstatus des primären Steuerknotens und der Projektstatus des Arbeiterknotens können einen Status von einem oder mehreren Teilen eines Projekts umfassen, das von den primären Knoten und Arbeiterknoten im Kommunikationsgitter ausgeführt wird. Der Prozess kann auch das Speichern der Gitterstatusinformationen umfassen, wie im Vorgang 504 beschrieben. Beispielsweise kann ein Steuerknoten (z. B. ein Backup-Steuerknoten) die empfangenen Gitterstatusinformationen lokal innerhalb des Steuerknotens speichern. Alternativ können die Gitterstatusinformationen an eine andere Vorrichtung zum Speichern gesendet werden, wo der Steuerknoten Zugriff auf die Informationen haben kann. 5 FIG. 12 illustrates a flowchart depicting an example process for adjusting a communication grid or work project in a communication grid after a node has failed, in accordance with embodiments of the present technology. FIG. For example, the process may include receiving grid status information including a project status of a portion of a project being executed by a node in the communications grid, as in the process 502 described. For example, a control node (eg, a backup control node connected to a primary control node and a worker node on a communication grid) may receive grid status information, the grid status information including a project status of the primary control node or a project status of the worker node. The project status of the primary control node and the project status of the worker node may include a status of one or more parts of a project being executed by the primary nodes and worker nodes in the communication grid. The process may also include storing the grid status information as in the process 504 described. For example, a control node (eg, a backup control node) may locally store the received grid status information within the control node. Alternatively, the grid status information may be sent to another device for storage where the control node may have access to the information.

Der Prozess kann im Vorgang 506 auch das Empfangen einer Fehlerkommunikation umfassen, die einem Knoten im Kommunikationsgitter entspricht. Beispielsweise kann ein Knoten eine Fehlerkommunikation empfangen, die eine Anzeige umfasst, dass der primäre Steuerknoten ausgefallen ist, wodurch ein Backup-Steuerknoten aufgefordert wird, für den primären Steuerknoten zu übernehmen. In einer alternativen Ausführungsform kann ein Knoten einen Fehler empfangen, dass ein Arbeiterknoten ausgefallen ist, wodurch ein Steuerknoten aufgefordert wird, die vom Arbeiterknoten durchgeführte Arbeit neu zuzuweisen. Der Prozess kann auch das Neuzuweisen eines Knotens oder eines Teils des Projekts umfassen, das durch den ausgefallenen Knoten ausgeführt wird, wie im Vorgang 508 beschrieben. Beispielsweise kann ein Steuerknoten den Backup-Steuerknoten als einen neuen primären Steuerknoten basierend auf der Fehlerkommunikation nach dem Empfangen der Fehlerkommunikation designieren. Falls der ausgefallene Knoten ein Arbeiterknoten ist, kann ein Steuerknoten einen Projektstatus des ausgefallenen Arbeiterknotens unter Verwendung des Schnappschusses des Kommunikationsgitters identifizieren, wobei der Projektstatus des ausgefallenen Arbeiterknotens einen Status eines Teils des Teils des Projekts umfasst, das vom ausgefallenen Arbeiterknoten zur Ausfallzeit ausgeführt wird.The process can be in the process 506 also include receiving an error communication corresponding to a node in the communication grid. For example, a node may receive an error communication that includes an indication that the primary control node has failed, prompting a backup control node to take over for the primary control node. In an alternative embodiment, a node may receive an error that a worker node has failed, thereby prompting a control node to reassign the work performed by the worker node. The process may also involve reassigning a node or part of the project being executed by the failed node, as in the process 508 described. For example, a control node may designate the backup control node as a new primary control node based on the error communication after receiving the error communication. If the failed node is a worker node, a control node may identify a project status of the failed worker node using the snapshot of the communications grid, the project status of the failed worker node including a status of a portion of the portion of the project being executed by the failed worker node at downtime.

Der Prozess kann auch das Empfangen von aktualisierten Gitterstatusinformationen basierend auf der Neuzuweisung, wie im Vorgang 510 beschrieben, und das Übertragen eines Satzes von Anweisungen basierend auf den aktualisierten Gitterstatusinformationen an einen oder mehrere Knoten im Kommunikationsgitter, wie im Vorgang 512 beschrieben, umfassen. Die aktualisierten Gitterstatusinformationen können einen aktualisierten Projektstatus des primären Steuerknotens oder einen aktualisierten Projektstatus des Arbeiterknotens umfassen. Die aktualisierten Informationen können an die anderen Knoten im Gitter übertragen werden, um ihre verfallenen gespeicherten Informationen zu aktualisieren.The process may also include receiving updated grid status information based on the reallocation as in the process 510 and transmitting a set of instructions based on the updated grid status information to one or more nodes in the communication grid, as in the process 512 described include. The updated grid status information may include an updated project status of the primary control node or an updated project status of the worker node. The updated information may be transmitted to the other nodes in the grid to update their expired stored information.

6 veranschaulicht einen Teil eines Kommunikationsgitter-Rechensystems 600, das einen Steuerknoten und einen Arbeiterknoten umfasst, gemäß Ausführungsformen der vorliegenden Technologie. Das Kommunikationsgitter-Rechensystem 600 umfasst zum Zwecke der Veranschaulichung einen Steuerknoten (Steuerknoten 602) und einen Arbeiterknoten (Arbeiterknoten 610), kann aber auch mehr Arbeiter- und/oder Steuerknoten umfassen. Der Steuerknoten 602 ist über den Kommunikationspfad 650 kommunikativ mit dem Arbeiterknoten 610 verbunden. Daher kann der Steuerknoten 602 Informationen (z. B. bezogen auf das Kommunikationsgitter oder Benachrichtigungen) über den Pfad 650 an den Arbeiterknoten 610 übertragen und Informationen von ihm empfangen. 6 illustrates part of a communication grid computing system 600 comprising a control node and a worker node according to embodiments of the present technology. The communication grid computing system 600 for purposes of illustration includes a control node (control node 602 ) and a worker node (worker node 610 ), but may also include more worker and / or control nodes. The control node 602 is via the communication path 650 communicatively with the worker node 610 connected. Therefore, the control node 602 Information (eg related to the Communication grid or notifications) via the path 650 at the worker node 610 transmit and receive information from him.

Ähnlich wie in 4 umfasst das Kommunikationsgitter-Rechensystem (oder nur „Kommunikationsgitter”) 600 Datenverarbeitungsknoten (Steuerknoten 602 und Arbeiterknoten 610). Die Knoten 602 und 610 umfassen Multikerndatenprozessoren. Jeder Knoten 602 und 610 umfasst eine gitterfähige Softwarekomponente (Grid-Enabled Software Component, GESC) 620, die auf dem Datenknoten ausgeführt wird, der mit diesem Knoten assoziiert ist, und über eine Schnittstelle mit dem Pufferspeicher 622, der auch mit diesem Knoten assoziiert ist, verbunden ist. Jeder Knoten 602 und 610 umfasst eine Datenbankmanagementsoftware (DBMS) 628, die auf einem Datenbankserver (nicht gezeigt) am Steuerknoten 602 und auf einem Datenbankserver (nicht gezeigt) am Arbeiterknoten 610 ausgeführt wird.Similar to in 4 includes the communication grid computing system (or just "communication grid") 600 Data processing node (control node 602 and worker nodes 610 ). The knots 602 and 610 include multi-core data processors. Every node 602 and 610 includes a Grid-Enabled Software Component (GESC) 620 which is executed on the data node associated with this node and via an interface with the buffer memory 622 which is also associated with this node is connected. Every node 602 and 610 includes database management software (DBMS) 628 stored on a database server (not shown) at the control node 602 and on a database server (not shown) at the worker node 610 is performed.

Jeder Knoten umfasst auch einen Datenspeicher 624. Die Datenspeicher 624, ähnlich den am Netz angeschlossenen Datenspeichern 110 in 1 und Datenspeichern 235 in 2, werden verwendet, um Daten zu speichern, die von den Knoten in der Rechenumgebung verarbeitet werden sollen. Die Datenspeicher 624 können auch beliebige Zwischen- oder Enddaten speichern, die durch das Rechensystem erzeugt werden, nachdem sie verarbeitet worden sind, beispielsweise in nicht-flüchtigem Speicher. In bestimmten Ausführungsformen erlaubt die Konfiguration der Gitterrechenumgebung jedoch, dass ihre Operationen durchgeführt werden, so dass Zwischen- und Enddatenergebnisse ausschließlich im flüchtigen Speicher (z. B. RAM) gespeichert werden können, ohne dass Zwischen- oder Enddatenergebnisse in nichtflüchtigen Typen von Speicher gespeichert werden müssen. Das Speichern derartiger Daten in flüchtigem Speicher kann in bestimmten Situationen nützlich sein, beispielsweise wenn das Gitter Abfragen (z. B. ad hoc) von einem Client empfängt und wenn Antworten, die durch eine Verarbeitung großer Mengen an Daten erzeugt werden, schnell oder on-the-fly erzeugt werden müssen. In einer derartigen Situation kann das Gitter ausgelegt sein, um die Daten innerhalb des Speichers zu behalten, so dass Antworten auf verschiedenen Detailebenen erzeugt werden können und so dass ein Client diese Informationen interaktiv abfragen kann.Each node also includes a data store 624 , The data storage 624 , similar to the data memories connected to the network 110 in 1 and data stores 235 in 2 , are used to store data to be processed by the nodes in the computing environment. The data storage 624 may also store any intermediate or final data generated by the computing system after it has been processed, for example, in non-volatile memory. However, in certain embodiments, the configuration of the grid computing environment allows its operations to be performed so that intermediate and final data results can be stored only in volatile memory (eg, RAM) without storing intermediate or final data results in nonvolatile types of memory have to. Storing such data in volatile memory may be useful in certain situations, such as when the grid receives queries (eg, ad hoc) from a client, and when responses generated by processing large amounts of data are promptly or on-the-fly. the-fly must be generated. In such a situation, the grid may be designed to hold the data within the memory so that responses can be generated at various levels of detail and so that a client can interrogate that information interactively.

Jeder Knoten umfasst auch eine benutzerdefinierte Funktion (User-Defined Functionq, UDF) 626. Die UDF stellt einen Mechanismus für das DBMS 628 bereit, um Daten an die Datenbank zu übertragen oder von ihr zu empfangen, die in den Datenspeichern 624 gespeichert ist, die vom DBMS verwaltet werden. Beispielsweise kann die UDF 626 vom DBMS aufgerufen werden, um der GESC Daten zur Verarbeitung bereitzustellen. Die UDF 626 kann eine Socket-Verbindung (nicht gezeigt) mit der GESC herstellen, um die Daten zu übertragen. Alternativ kann die UDF 626 Daten an die GESC übertragen, indem Daten in gemeinsam genutzten Speicher geschrieben werden, auf den sowohl von der UDF als auch von der GESC zugegriffen werden kann.Each node also includes a user-defined function (UDF) 626 , The UDF provides a mechanism for the DBMS 628 ready to transfer data to or from the database stored in the data stores 624 stored, which are managed by the DBMS. For example, the UDF 626 are called by the DBMS to provide data to the GESC for processing. The UDF 626 can establish a socket connection (not shown) with the GESC to transfer the data. Alternatively, the UDF 626 Transfer data to the GESC by writing data to shared memory that is accessible to both the UDF and the GESC.

Die GESC 620 an den Knoten 602 und 620 kann über ein Netz, wie beispielsweise das in 1 gezeigte Netz 108, verbunden sein. Daher können die Knoten 602 und 620 über das Netz unter Verwendung eines vorbestimmten Kommunikationsprotokolls, wie beispielsweise das Message Passing Interface (MPI), miteinander kommunizieren. Jede GESC 620 kann sich an einer Punkt-zu-Punkt-Kommunikation mit der GESC an einem anderen Knoten oder an einer kollektiven Kommunikation mit mehreren GESCs über das Netz beteiligen. Die GESC 620 an jedem Knoten kann identische (oder nahezu identische) Softwareanweisungen enthalten. Jeder Knoten kann in der Lage sein, entweder als ein Steuerknoten oder ein Arbeiterknoten zu arbeiten. Die GESC am Steuerknoten 602 kann über einen Kommunikationspfad 652 mit einer Clientvorrichtung 630 kommunizieren. Insbesondere kann der Steuerknoten 602 mit der Clientanwendung 632 kommunizieren, die von der Clientvorrichtung 630 gehostet wird, um Abfragen zu empfangen und auf diese Abfragen zu antworten, nachdem große Datenmengen verarbeitet wurden.The GESC 620 at the node 602 and 620 can be over a network, such as the one in 1 shown network 108 be connected. Therefore, the nodes can 602 and 620 communicate over the network using a predetermined communication protocol, such as the Message Passing Interface (MPI). Every GESC 620 may participate in a point-to-point communication with the GESC at another node or in collective communication with multiple GESCs over the network. The GESC 620 Each node may contain identical (or nearly identical) software instructions. Each node may be able to operate as either a control node or a worker node. The GESC at the control node 602 can via a communication path 652 with a client device 630 communicate. In particular, the control node 602 with the client application 632 communicate by the client device 630 is hosted to receive queries and respond to those queries after large amounts of data have been processed.

Das DBMS 628 kann die Erstellung, Pflege und Verwendung der Datenbank- oder Datenstruktur (nicht gezeigt) innerhalb eines Knotens 602 oder 610 steuern. Die Datenbank kann in den Datenspeichern 624 gespeicherte Daten organisieren. Das DBMS 628 am Steuerknoten 602 kann Anforderungen für Daten akzeptieren und die entsprechenden Daten für die Anforderung übertragen. Bei einem derartigen Prozess können Datensammlungen über mehrere physische Orte verteilt werden. In diesem Beispiel speichert jeder Knoten 602 und 610 einen Teil der Gesamtdaten, die vom Managementsystem verwaltet werden, in seinem assoziierten Datenspeicher 624.The DBMS 628 may be the creation, maintenance and use of the database or data structure (not shown) within a node 602 or 610 Taxes. The database can be stored in the datastores 624 organize stored data. The DBMS 628 at the control node 602 can accept requests for data and transfer the corresponding data for the request. In such a process, data collections can be distributed across multiple physical locations. In this example, each node stores 602 and 610 a portion of the total data managed by the management system in its associated data store 624 ,

Ferner kann das DBMS für den Schutz vor Datenverlust unter Verwendung von Replikationstechniken verantwortlich sein. Die Replikation umfasst das Bereitstellen einer Backup-Kopie von Daten, die auf einem Knoten oder auf einem oder mehreren anderen Knoten gespeichert sind. Falls daher ein Knoten ausfällt, können die Daten vom ausgefallenen Knoten von einer replizierten Kopie, die sich an einem anderen Knoten befindet, wiederhergestellt werden. Jedoch können, wie hierin mit Bezug auf 4 beschrieben, Daten oder Statusinformationen für jeden Knoten im Kommunikationsgitter auch mit jedem Knoten auf dem Gitter geteilt werden.Further, the DBMS may be responsible for data loss protection using replication techniques. The replication involves providing a backup copy of data stored on a node or on one or more other nodes. Therefore, if one node fails, data from the failed node can be recovered from a replicated copy located at another node. However, as discussed herein with reference to 4 described, data or Status information for each node in the communication grid can also be shared with each node on the grid.

7 veranschaulicht ein Flussdiagramm, das ein beispielhaftes Verfahren zum Ausführen eines Projekts innerhalb eines Gitterrechensystems zeigt, gemäß Ausführungsformen der vorliegenden Technologie. Wie unter Bezugnahme auf 6 gezeigt, kann die GESC am Steuerknoten Daten mit einer Clientvorrichtung (z. B. Clientvorrichtung 630) übertragen, um Abfragen zum Ausführen eines Projekts zu empfangen und auf diese Abfragen zu antworten, nachdem große Datenmengen verarbeitet worden sind. Die Abfrage kann an den Steuerknoten übertragen werden, wobei die Abfrage eine Anforderung zum Ausführen eines Projekts umfassen kann, wie im Vorgang 702 beschrieben. Die Abfrage kann Anweisungen über den Typ der Datenanalyse enthalten, die im Projekt durchgeführt werden soll, und ob das Projekt unter Verwendung der gitterbasierten Rechenumgebung ausgeführt werden sollte, wie im Vorgang 704 gezeigt. 7 FIG. 12 illustrates a flowchart depicting an exemplary method for executing a project within a grid computing system, in accordance with embodiments of the present technology. As with reference to 6 At the control node, the GESC may display data with a client device (eg, client device 630 ) to receive queries to run a project and respond to those queries after large amounts of data have been processed. The query may be transmitted to the control node, where the query may include a request to execute a project, as in the process 702 described. The query may contain instructions about the type of data analysis to be performed in the project, and whether the project should be executed using the grid-based computing environment, as in the process 704 shown.

Um das Projekt zu initiieren, kann der Steuerknoten bestimmen, ob die Abfrage die Verwendung der gitterbasierten Rechenumgebung zur Ausführung des Projekts anfordert. Falls die Bestimmung nein ist, initiiert der Steuerknoten die Ausführung des Projekts in einer Soloumgebung (z. B. am Steuerknoten), wie im Vorgang 710 beschrieben. Falls die Bestimmung ja ist, kann der Steuerknoten die Ausführung des Projekts in der gitterbasierten Rechenumgebung initiieren, wie im Vorgang 706 beschrieben. In einer derartigen Situation kann die Anforderung eine angeforderte Konfiguration des Gitters umfassen. Beispielsweise kann die Anforderung eine Anzahl von Steuerknoten und eine Anzahl von Arbeiterknoten umfassen, die im Gitter verwendet werden sollen, wenn das Projekt ausgeführt wird. Nachdem das Projekt abgeschlossen wurde, kann der Steuerknoten die Ergebnisse der Analyse übertragen, die durch das Gitter geliefert werden, wie im Vorgang 708 beschrieben. Egal ob das Projekt in einer Solo- oder gitterbasierten Umgebung ausgeführt wird, stellt der Steuerknoten die Ergebnisse des Projekts bereit.To initiate the project, the control node can determine whether the query requests the use of the grid-based computing environment to run the project. If the determination is no, the control node initiates the execution of the project in a solo environment (eg at the control node) as in the process 710 described. If the determination is yes, the control node may initiate the execution of the project in the grid-based computing environment as in the process 706 described. In such a situation, the request may include a requested configuration of the grid. For example, the request may include a number of control nodes and a number of worker nodes to be used in the grid when the project is executed. After the project has completed, the control node can transmit the results of the analysis provided by the grid as in the process 708 described. Whether the project is running in a solo or grid-based environment, the control node provides the results of the project.

Wie unter Bezugnahme auf 2 bereits erwähnt, können die hierin beschriebenen Rechenumgebungen Daten sammeln (z. B. wie sie von Netzvorrichtungen empfangen werden, wie beispielsweise Sensoren, wie beispielsweise Netzvorrichtungen 204209 in 2 und Clientvorrichtungen oder anderen Quellen), die als Teil eines Data Analytics-Projekts verarbeitet werden sollen, und Daten können in Echtzeit als Teil einer Streaming Analytics-Umgebung (z. B. ESP) empfangen werden. Die Daten können unter Verwendung einer Vielzahl von Quellen gesammelt werden, wie sie über verschiedene Typen von Netzen oder lokal, wie beispielsweise auf einer Echtzeit-Streaming-Basis, kommuniziert werden. Beispielsweise können Netzvorrichtungen periodisch Daten von Netzvorrichtungssensoren empfangen, wenn die Sensoren kontinuierlich Veränderungen in ihren Umgebungen erfassen, überwachen und verfolgen. Insbesondere entwickeln oder erzeugen eine zunehmende Anzahl von verteilten Anwendungen kontinuierlich fließende Daten von verteilten Quellen durch Anwenden von Abfragen auf die Daten, bevor die Daten an geografisch verteilte Empfänger verteilt werden. Eine Ereignisstromverarbeitungs-Engine (Event Stream Processing Engine, ESPE) kann die Abfragen kontinuierlich auf die Daten anwenden, wenn sie empfangen werden, und bestimmt, welche Entitäten die Daten empfangen sollen. Client- oder andere Vorrichtungen können auch die ESPE oder andere Vorrichtungen abonnieren, die ESP-Daten verarbeiten, so dass sie nach der Verarbeitung Daten empfangen können, basierend auf beispielsweise den von der Verarbeitungs-Engine bestimmten Entitäten. Beispielsweise können die Clientvorrichtungen 230 in 2 die ESPE in der Rechenumgebung 214 abonnieren. In einem anderen Beispiel können die Ereignis-Subscribing-Vorrichtungen 874a–c, die unter Bezugnahme auf 10 weiter beschrieben werden, auch die ESPE abonnieren. Die ESPE kann bestimmen oder definieren, wie Eingabedaten oder Ereignisströme von Netzvorrichtungen oder anderen Publishern (z. B. Netzvorrichtungen 204209 in 2) in bedeutungsvolle Ausgabedaten umgewandelt werden, die von Subscribern, wie beispielsweise den Clientvorrichtungen 230 in 2, verbraucht werden sollen.As with reference to 2 As mentioned earlier, the computing environments described herein may collect data (eg, as received from network devices, such as sensors, such as network devices 204 - 209 in 2 and client devices or other sources) to be processed as part of a data analytics project, and data can be received in real time as part of a streaming analytics environment (e.g., ESP). The data may be collected using a variety of sources as communicated across different types of networks or locally, such as on a real-time streaming basis. For example, network devices may periodically receive data from network device sensors as the sensors continuously detect, monitor, and track changes in their environments. In particular, an increasing number of distributed applications develop or generate continuously flowing data from distributed sources by applying queries to the data before distributing the data to geographically dispersed recipients. An event stream processing engine (ESPE) can continuously apply the queries to the data as it is received and determines which entities should receive the data. Client or other devices may also subscribe to the ESPE or other devices that process ESP data so that they may receive data after processing based on, for example, the entities designated by the processing engine. For example, the client devices 230 in 2 the ESPE in the computing environment 214 subscribe to. In another example, the event subscribing devices may 874a -C, referring to 10 be subscribed to, also subscribe to the ESPE. The ESPE may determine or define how input data or event streams from network devices or other publishers (eg, network devices 204 - 209 in 2 ) are converted into meaningful output data from subscribers, such as the client devices 230 in 2 to be consumed.

8 veranschaulicht ein Blockschaltbild, das Komponenten einer Ereignisstromverarbeitungs-Engine (Event Stream Processing Engine, ESPE) umfasst, gemäß Ausführungsformen der vorliegenden Technologie. Die ESPE 800 kann ein oder mehrere Projekte 802 umfassen. Ein Projekt kann als ein Container des zweiten Levels in einem von der ESPE 800 verwalteten Engine-Modell beschrieben werden, wobei eine Threadpool-Größe für das Projekt von einem Benutzer definiert werden kann. Jedes Projekt des einen oder der mehreren Projekte 802 kann eine oder mehrere kontinuierliche Abfragen 804 umfassen, die Datenströme enthalten, die Datenumwandlungen von eingehenden Ereignisströmen sind. Die eine oder mehreren kontinuierlichen Abfragen 804 können ein oder mehrere Quellfenster 806 und ein oder mehrere abgeleitete Fenster 808 umfassen. 8th FIG. 12 illustrates a block diagram including components of an Event Stream Processing Engine (ESPE) according to embodiments of the present technology. The ESPE 800 can one or more projects 802 include. A project can be considered a second level container in one of the ESPE 800 managed engine model, where a thread pool size for the project can be defined by a user. Each project of one or more projects 802 can be one or more continuous queries 804 include data streams that are data transformations of incoming event streams. The one or more continuous queries 804 can have one or more source windows 806 and one or more derived windows 808 include.

Die ESPE kann Streaming-Daten über eine Zeitperiode empfangen, die sich auf bestimmte Ereignisse bezieht, wie beispielsweise Ereignisse oder andere Daten, die von einer oder mehreren Netzvorrichtungen erfasst werden. Die ESPE kann Operationen durchführen, die mit Verarbeitungsdaten assoziiert sind, die durch die eine oder mehreren Vorrichtungen erzeugt werden. Beispielsweise kann die ESPE Daten von der einen oder den mehreren Netzvorrichtungen 204209 empfangen, die in 2 gezeigt sind. Wie bereits erwähnt, können die Netzvorrichtungen Sensoren umfassen, die unterschiedliche Aspekte ihrer Umgebungen erfassen, und können Daten über die Zeit basierend auf diesen erfassten Beobachtungen sammeln. Beispielsweise kann die ESPE innerhalb einer oder mehrerer der Maschinen 220 und 240, die in 2 gezeigt sind, implementiert werden. Die ESPE kann innerhalb einer derartigen Maschine durch eine ESP-Anwendung implementiert werden. Eine ESP-Anwendung kann eine ESPE mit ihrem eigenen dedizierten Threadpool oder Threadpools in ihren Anwendungsbereich einbetten, in dem der Hauptanwendungs-Thread anwendungsspezifische Arbeit ausführen kann und die ESPE Ereignisströme wenigstens durch Erstellen einer Instanz eines Modells in Verarbeitungsobjekte verarbeitet. Der Engine-Container ist der Top-Level-Container in einem Modell, das die Ressourcen des einen oder der mehreren Projekte 802 verwaltet. In einer veranschaulichenden Ausführungsform kann beispielsweise nur eine ESPE 800 für jede Instanz der ESP-Anwendung vorhanden sein, und die ESPE 800 kann einen eindeutigen Engine-Namen aufweisen. Zusätzlich können das eine oder die mehreren Projekte 802 jeweils eindeutige Projektnamen aufweisen, und jede Abfrage kann einen eindeutigen Continuous-Query-Namen aufweisen und mit einem eindeutig benannten Quellfenster des einen oder der mehreren Quellfenster 806 beginnen. Die ESPE 800 kann persistent sein oder nicht.The ESPE may receive streaming data over a period of time related to particular events, such as events or other data captured by one or more network devices. The ESPE can perform operations associated with processing data generated by the one or more devices are generated. For example, the ESPE may receive data from the one or more network devices 204 - 209 receive that in 2 are shown. As mentioned earlier, the network devices may include sensors that sense different aspects of their environments, and may gather data over time based on these acquired observations. For example, the ESPE may be within one or more of the machines 220 and 240 , in the 2 shown are implemented. The ESPE can be implemented within such a machine by an ESP application. An ESP application can embed an ESPE with its own dedicated thread pool or thread pools within its scope, where the main application thread can perform application-specific work, and at least process the ESPE event streams into processing objects by creating an instance of a model. The engine container is the top-level container in a model that contains the resources of one or more projects 802 managed. For example, in an illustrative embodiment, only one ESPE 800 for each instance of the ESP application, and the ESPE 800 can have a unique engine name. In addition, the one or more projects 802 each have unique project names, and each query may have a unique continuous query name and a unique source window of the one or more source windows 806 kick off. The ESPE 800 can be persistent or not.

Die Continuous-Query-Modellierung beinhaltet das Definieren von gerichteten Graphen von Fenstern für die Ereignisstrommanipulation und -transformation. Ein Fenster im Kontext der Ereignisstrommanipulation und -transformation ist ein Verarbeitungsknoten in einem Ereignisstromverarbeitungsmodell. Ein Fenster in einer kontinuierlichen Abfrage kann Aggregationen, Berechnungen, Musteranpassungen und andere Operationen auf Daten durchführen, die durch das Fenster fließen. Eine kontinuierliche Abfrage kann als ein gerichteter Graph von Quell-, relationalen, Musteranpassungs- und prozeduralen Fenstern beschrieben werden. Das eine oder die mehreren Quellfenster 806 und das eine oder die mehreren abgeleiteten Fenster 808 repräsentieren das kontinuierliche Ausführen von Abfragen, die Aktualisierungen zu einem Abfrageergebnissatz erzeugen, wenn neue Ereignisblöcke durch die ESPE 800 streamen. Ein gerichteter Graph ist beispielsweise ein Satz von Knoten, die durch Kanten verbunden sind, wobei die Kanten eine mit ihnen assoziierte Richtung aufweisen.Continuous query modeling involves defining directed graphs of event stream manipulation and transformation windows. A window in the context of event stream manipulation and transformation is a processing node in an event stream processing model. A window in a continuous query can perform aggregations, calculations, pattern adjustments, and other operations on data flowing through the window. A continuous query may be described as a directed graph of source, relational, pattern matching, and procedural windows. The one or more source windows 806 and the one or more derived windows 808 represent the continuous execution of queries that generate updates to a query result set when new event blocks through the ESPE 800 stream. For example, a directed graph is a set of nodes connected by edges, the edges having a direction associated therewith.

Ein Ereignisobjekt kann als ein Paket von Daten beschrieben werden, die als eine Sammlung von Feldern zugänglich sind, wobei wenigstens eines der Felder als Schlüssel oder eindeutige Kennung (Identifier, ID) definiert ist. Das Ereignisobjekt kann unter Verwendung einer Vielzahl von Formaten, einschließlich binär, alphanumerisch, XML usw., erstellt werden. Jedes Ereignisobjekt kann ein oder mehrere Felder umfassen, die als primäre Kennung (Identifier, ID) für das Ereignis designiert werden, so dass die ESPE 800 Operationscodes (Opcodes) für Ereignisse, einschließlich Insert, Update, Upsert und Delete, unterstützen kann. Upsert-Opcodes aktualisieren das Ereignis, wenn das Schlüsselfeld bereits vorhanden ist; andernfalls wird das Ereignis eingefügt. Zur Veranschaulichung kann ein Ereignisobjekt eine gepackte binäre Darstellung eines Satzes von Feldwerten sein und sowohl Metadaten als auch Felddaten umfassen, die mit einem Ereignis assoziiert sind. Die Metadaten können einen Opcode, der angibt, ob das Ereignis ein Insert, Update, Delete oder Upsert repräsentiert, einen Satz von Flags, der angibt, ob das Ereignis ein normales, teilweises aktualisiertes oder ein von einer Retention erzeugtes Ereignis aus dem Retention Policy Management ist, und einen Satz von Mikrosekunden-Zeitstempeln, die für Latenzmessungen verwendet werden können, umfassen.An event object may be described as a packet of data accessible as a collection of fields, where at least one of the fields is defined as a key or unique identifier (ID). The event object can be created using a variety of formats, including binary, alphanumeric, XML, and so on. Each event object may include one or more fields designated as the primary identifier (identifier, ID) for the event, such that the ESPE 800 Operational codes (opcodes) for events, including insert, update, upsert, and delete. Upsert opcodes update the event if the key field already exists; otherwise the event will be inserted. By way of illustration, an event object may be a packed binary representation of a set of field values and may include both metadata and field data associated with an event. The metadata may include an opcode indicating whether the event represents an insert, update, delete, or upsert, a set of flags indicating whether the event is a normal, partial, or retention-generated event from the retention policy management and a set of microsecond timestamps that can be used for latency measurements.

Ein Ereignisblockobjekt kann als Gruppierung oder Paket von Ereignisobjekten beschrieben werden. Ein Ereignisstrom kann als ein Fluss von Ereignisblockobjekten beschrieben werden. Eine kontinuierliche Abfrage der einen oder mehreren kontinuierlichen Abfragen 804 wandelt einen Quellereignisstrom, der aus Streaming-Ereignisblockobjekten besteht, die in der ESPE 800 herausgegeben werden, in einen oder mehrere Ausgabeereignisströme unter Verwendung des einen oder der mehreren Quellfenster 806 und des einen oder der mehreren abgeleiteten Fenster 808 um. Eine kontinuierliche Abfrage kann auch als Datenflussmodellierung betrachtet werden.An event block object can be described as a grouping or package of event objects. An event stream can be described as a flow of event block objects. A continuous query of the one or more continuous queries 804 converts a source event stream that consists of streaming event block objects that are in the ESPE 800 in one or more output event streams using the one or more source windows 806 and one or more derived windows 808 around. A continuous query can also be considered as data flow modeling.

Das eine oder die mehreren Quellfenster 806 befinden sich oben am gerichteten Graphen und weisen keine Fenster auf, die in sie eingeführt werden. Ereignisströme werden in das eine oder die mehreren Quellfenster 806 herausgegeben, und von dort aus können die Ereignisströme auf den nächsten Satz von verbundenen Fenstern gerichtet werden, wie durch den gerichteten Graphen definiert. Das eine oder die mehreren abgeleiteten Fenster 808 sind alle instanziierte Fenster, die keine Quellfenster sind und die andere Fenster aufweisen, die Ereignisse in sie streamen. Das eine oder die mehreren abgeleiteten Fenster 808 können Berechnungen oder Transformationen auf den eingehenden Ereignisströmen durchführen. Das eine oder die mehreren abgeleiteten Fenster 808 wandeln Ereignisströme basierend auf der Fensterart (d. h. Operatoren wie Verbinden, Filtern, Berechnen, Aggregieren, Kopieren, Musteranpassung, prozedural, Vereinigung usw.) und Fenstereinstellungen um. Wenn Ereignisströme in die ESPE 800 herausgegeben werden, werden sie kontinuierlich abgefragt, und die resultierenden Sätze von abgeleiteten Fenstern in diesen Abfragen werden kontinuierlich aktualisiert.The one or more source windows 806 are located at the top of the directed graph and have no windows that are inserted into them. Event streams are in the one or more source windows 806 and from there the event streams may be directed to the next set of connected windows as defined by the directed graph. The one or more derived windows 808 are all instantiated windows that are not source windows and have other windows that stream events into them. The one or more derived windows 808 can perform calculations or transformations on the incoming event streams. The one or more derived windows 808 convert event streams based on the type of window (ie operators such as join, filter, calculate, aggregate, copy, pattern match, procedural, union, etc.) and window settings. If event streams in the ESPE 800 they will be released queried continuously, and the resulting sets of derived windows in these queries are continually updated.

9 veranschaulicht ein Flussdiagramm, das einen beispielhaften Prozess einschließlich Operationen, die durch eine Ereignisstromverarbeitungs-Engine durchgeführt werden, zeigt, gemäß einigen Ausführungsformen der vorliegenden Technologie. Wie bereits erwähnt, definiert die ESPE 800 (oder eine assoziierte ESP-Anwendung), wie Eingabeereignisströme in bedeutungsvolle Ausgabeereignisströme umgewandelt werden. Insbesondere kann die ESP-Anwendung definieren, wie Eingabeereignisströme von Publishern (z. B. Netzvorrichtungen, die erfasste Daten bereitstellen) in bedeutungsvolle Ausgabeereignisströme umgewandelt werden, die von Subscribern verbraucht werden (z. B. ein Data Analytics-Projekt, das von einer Maschine oder einem Satz von Maschinen ausgeführt wird). 9 FIG. 12 illustrates a flowchart depicting an example process including operations performed by an event stream processing engine, in accordance with some embodiments of the present technology. As already mentioned, the ESPE defines 800 (or an associated ESP application) how input event streams are transformed into meaningful output event streams. In particular, the ESP application may define how to convert input event streams from publishers (eg, network devices that provide captured data) into meaningful output event streams that are consumed by subscribers (eg, a Data Analytics project run by a machine or a set of machines).

Innerhalb der Anwendung kann ein Benutzer mit einem oder mehreren Benutzerschnittstellenfenstern interagieren, die dem Benutzer in einer Anzeige unter der Steuerung der ESPE unabhängig oder über eine Browseranwendung in einer vom Benutzer auswahlbaren Reihenfolge präsentiert werden. Beispielsweise kann ein Benutzer eine ESP-Anwendung ausführen, die die Präsentation eines ersten Benutzerschnittstellenfensters bewirkt, das eine Mehrzahl von Menüs und Selektoren wie beispielsweise Dropdown-Menüs, Schaltflächen, Textfelder, Hyperlinks usw. umfassen kann, die mit der ESP-Anwendung assoziiert sind, wie von Fachleuten auf dem Gebiet verstanden wird. Wie von Fachleuten auf dem Gebiet ferner verstanden wird, können verschiedene Operationen parallel ausgeführt werden, beispielsweise unter Verwendung einer Mehrzahl von Threads.Within the application, a user may interact with one or more user interface windows that are presented to the user in a display under the control of ESPE, independently or through a browser application in a user-selectable order. For example, a user may execute an ESP application that causes the presentation of a first user interface window, which may include a plurality of menus and selectors, such as drop-down menus, buttons, text boxes, hyperlinks, etc., associated with the ESP application, as understood by those skilled in the art. As will be understood by those skilled in the art, various operations may be performed in parallel, for example, using a plurality of threads.

Beim Vorgang 900 kann eine ESP-Anwendung eine ESPE definieren und starten, wodurch eine ESPE an einer Vorrichtung, wie beispielsweise der Maschine 220 und/oder 240, instanziiert wird. In einem Vorgang 902 wird der Engine-Container erzeugt. Zur Veranschaulichung kann die ESPE 800 unter Verwendung eines Funktionsaufrufs instanziiert werden, der den Engine-Container als einen Manager für das Modell spezifiziert.In the process 900 For example, an ESP application may define and launch an ESPE, thereby causing an ESPE on a device, such as the machine 220 and or 240 , is instantiated. In one operation 902 the engine container is created. By way of illustration, the ESPE 800 is instantiated using a function call that specifies the engine container as a manager for the model.

In einer Operation 904 werden die eine oder mehreren kontinuierlichen Abfragen 804 durch die ESPE 800 als ein Modell instanziiert. Die eine oder mehreren kontinuierlichen Abfragen 804 können mit einem dedizierten Threadpool oder Threadpools instanziiert werden, die Aktualisierungen erzeugen, wenn neue Ereignisse durch die ESPE 800 streamen. Zur Veranschaulichung können die eine oder mehreren kontinuierlichen Abfragen 804 erzeugt werden, um die Geschäftsverarbeitungslogik innerhalb der ESPE 800 zu modellieren, um Ereignisse innerhalb der ESPE 800 vorherzusagen, um ein physisches System innerhalb der ESPE 800 zu modellieren, um den physischen Systemzustand innerhalb der ESPE 800 vorherzusagen usw. Beispielsweise kann, wie bereits erwähnt, die ESPE 800 verwendet werden, um die Sensordatenüberwachung und -verwaltung zu unterstützen (z. B. kann die Erfassung Kraft, Drehmoment, Last, Dehnung, Position, Temperatur, Luftdruck, Fluidströmung, chemische Eigenschaften, Widerstand, elektromagnetische Felder, Strahlung, Bestrahlung, Nähe, Akustik, Feuchtigkeit, Distanz, Geschwindigkeit, Vibrationen, Beschleunigung, elektrisches Potential oder elektrischen Strom umfassen).In an operation 904 become the one or more continuous queries 804 through the ESPE 800 instantiated as a model. The one or more continuous queries 804 can be instantiated with a dedicated thread pool or thread pools that generate updates when new events occur through the ESPE 800 stream. By way of illustration, the one or more continuous queries 804 generated to the business processing logic within the ESPE 800 to model events within the ESPE 800 predict a physical system within the ESPE 800 to model the physical state of the system within the ESPE 800 For example, as already mentioned, the ESPE 800 can be used to assist sensor data monitoring and management (eg, the detection force, torque, load, strain, position, temperature, air pressure, fluid flow, chemical properties, resistance, electromagnetic fields, radiation, irradiation, proximity, acoustics , Humidity, distance, speed, vibration, acceleration, electric potential or electric current).

Die ESPE 800 kann Ereignisse in Bewegung oder „Ereignisströme” analysieren und verarbeiten. Anstatt Daten zu speichern und die gespeicherten Daten abzufragen, kann die ESPE 800 Abfragen speichern und Daten durch sie streamen, um eine kontinuierliche Analyse der Daten zu ermöglichen, wenn sie empfangen werden. Das eine oder die mehreren Quellfenster 806 und das eine oder die mehreren abgeleiteten Fenster 808 können basierend auf den relationalen, Musteranpassungs- und prozeduralen Algorithmen erzeugt werden, die die Eingabeereignisströme in die Ausgabeereignisströme umwandeln, um basierend auf dem definierten Continuous-Query-Modell und der Anwendung auf die gestreamten Daten zu modellieren, zu simulieren, zu bewerten, zu testen, vorherzusagen usw.The ESPE 800 can analyze and process events in motion or "event streams". Instead of storing data and retrieving the stored data, the ESPE 800 Save queries and stream data through them to allow continuous analysis of the data as it is received. The one or more source windows 806 and the one or more derived windows 808 may be generated based on the relational, pattern matching, and procedural algorithms that transform the input event streams into the output event streams to model, simulate, evaluate, test, based on the defined continuous query model and application on the streamed data to predict, etc.

In einem Vorgang 906 wird eine Publish/Subscribe(Pub/Sub)-Fähigkeit für die ESPE 800 initialisiert. In einer veranschaulichenden Ausführungsform wird eine Pub/Sub-Fähigkeit für jedes Projekt des einen oder der mehreren Projekte 802 initialisiert. Um die Pub/Sub-Fähigkeit für die ESPE 800 zu initialisieren und zu aktivieren, kann eine Portnummer bereitgestellt werden. Pub/Sub-Clients können einen Hostnamen einer ESP-Vorrichtung, die die ESPE ausführt, und die Portnummer verwenden, um Pub/Sub-Verbindungen zur ESPE 800 herzustellen.In one operation 906 becomes a publish / subscribe (pub / sub) capability for the ESPE 800 initialized. In an illustrative embodiment, a pub / sub capability will be for each project of the one or more projects 802 initialized. To the pub / sub-ability for the ESPE 800 initialize and activate, a port number can be provided. Pub / sub clients can use a hostname of an ESP device that executes the ESPE and the port number to provide pub / sub connections to the ESPE 800 manufacture.

10 veranschaulicht ein ESP-System 850, das über eine Schnittstelle zwischen der Publishing-Vorrichtung 872 und den Ereignis-Subscribing-Vorrichtungen 874a–c verbunden ist, gemäß Ausführungsformen der vorliegenden Technologie. Das ESP-System 850 kann die ESP-Vorrichtung oder das ESP-Subsystem 851, die Ereignis-Publishing-Vorrichtung 872, eine Ereignis-Subscribing-Vorrichtung A 874a, eine Ereignis-Subscribing-Vorrichtung B 874b und eine Ereignis-Subscribing-Vorrichtung C 874c umfassen. Eingabeereignisströme werden an die ESP-Vorrichtung 851 durch die Publishing-Vorrichtung 872 ausgegeben. In alternativen Ausführungsformen können die Eingabeereignisströme durch eine Mehrzahl von Publishing-Vorrichtungen erzeugt werden. Die Mehrzahl von Publishing-Vorrichtungen können ferner Ereignisströme an andere ESP-Vorrichtungen herausgeben. Die eine oder mehreren kontinuierlichen Abfragen, die durch die ESPE 800 instanziiert werden, können die Eingabeereignisströme analysieren und verarbeiten, um Ausgabeereignisströme auszubilden, die an die Ereignis-Subscribing-Vorrichtung A 874a, die Ereignis-Subscribing-Vorrichtung B 874b und die Ereignis-Subscribing-Vorrichtung C 874c ausgegeben werden. Das ESP-System 850 kann eine größere oder eine kleinere Anzahl von Ereignis-Subscribing-Vorrichtungen von Ereignis-Subscribing-Vorrichtungen umfassen. 10 illustrates an ESP system 850 that has an interface between the publishing device 872 and the event subscribing devices 874a -C, according to embodiments of the present technology. The ESP system 850 may be the ESP device or the ESP subsystem 851 , the event publishing device 872 , an event-subscribing device A. 874a , an event-subscribing device B 874b and an event subscribing device C 874c include. Input event streams are sent to the ESP device 851 through the publishing device 872 output. In alternative embodiments, the input event streams may be generated by a plurality of publishing devices. The plurality of publishing devices may also issue event streams to other ESP devices. The one or more continuous queries made by the ESPE 800 can be instantiated and parse the input event streams to form output event streams sent to the event subscribing device A. 874a , the event subscribing device B 874b and the event subscribing device C 874c be issued. The ESP system 850 may include a larger or smaller number of event subscribing devices from event subscribing devices.

Publish-Subscribe ist ein nachrichtenorientiertes Interaktions-Paradigma, das auf indirekter Adressierung basiert. Verarbeitete Datenempfänger geben ihr Interesse am Empfangen von Informationen von der ESPE 800 an, indem sie bestimmte Klassen von Ereignissen abonnieren, während Informationsquellen Ereignisse an die ESPE 800 herausgeben, ohne die empfangenden Parteien direkt zu adressieren. Die ESPE 800 koordiniert die Interaktionen und verarbeitet die Daten. In einigen Fällen empfängt die Datenquelle die Bestätigung, dass die herausgegebenen Informationen von einem Datenempfänger empfangen wurden.Publish-Subscribe is a message-oriented interaction paradigm based on indirect addressing. Processed data recipients give their interest in receiving information from the ESPE 800 by subscribing to certain classes of events while sources of information send events to the ESPE 800 without directly addressing the receiving parties. The ESPE 800 coordinates the interactions and processes the data. In some cases, the data source receives confirmation that the issued information has been received by a data receiver.

Eine Publish/Subscribe-API kann als eine Bibliothek beschrieben werden, die es einem Ereignis-Publisher, wie beispielsweise der Publishing-Vorrichtung 872, ermöglicht, Ereignisströme in die ESPE 800 zu streamen, oder einem Ereignis-Subscriber, wie beispielsweise der Ereignis-Subscribing-Vorrichtung A 874a, der Ereignis-Subscribing-Vorrichtung B 874b und der Ereignis-Subscribing-Vorrichtung C 874c, ermöglicht, Ereignisströme von der ESPE 800 zu abonnieren. Zur Veranschaulichung können eine oder mehrere Publish/Subscribe-APIs definiert werden. Unter Verwendung der Publish/Subscribe-API kann eine Ereignis-Publishing-Anwendung Ereignisströme in ein laufendes Ereignisstrom-Prozessorprojektquellfenster von der ESPE 800 herausgeben, und die Ereignis-Subscription-Anwendung kann ein Ereignisstrom-Prozessorprojektquellfenster von der ESPE 800 abonnieren.A publish / subscribe API can be described as a library that allows an event publisher, such as the publishing device 872 , allows event streams into the ESPE 800 or an event subscriber, such as the event subscribing device A. 874a , the Event Subscribing Device B 874b and the event subscribing device C 874c , allows event streams from the ESPE 800 to subscribe. As an illustration, one or more publish / subscribe APIs can be defined. Using the publish / subscribe API, an event publishing application can use event streams in a running event stream processor project source window from the ESPE 800 Issue the Event Subscription application and an Event Stream Processor project source window from the ESPE 800 subscribe to.

Die Publish/Subscribe-API stellt plattformübergreifende Konnektivität und Endianness-Kompatibilität zwischen der ESP-Anwendung und anderen vernetzten Anwendungen bereit, wie beispielsweise Ereignis-Publishing-Anwendungen, die an der Publishing-Vorrichtung 872 instanziiert werden, und Ereignis-Subscription-Anwendungen, die an einer oder mehreren der Ereignis-Subscribing-Vorrichtung A 874a, der Ereignis-Subscribing-Vorrichtung B 874b und der Ereignis-Subscribing-Vorrichtung C 874c instanziiert werden.The publish / subscribe API provides cross-platform connectivity and endianness compatibility between the ESP application and other networked applications, such as event publishing applications running on the publishing device 872 to be instantiated, and event subscription applications attached to one or more of the event subscribing device A 874a , the Event Subscribing Device B 874b and the event subscribing device C 874c to be instantiated.

Unter Rückbezug auf 9 initialisiert der Vorgang 906 die Publish/Subscribe-Fähigkeit der ESPE 800. In einem Vorgang 908 werden das eine oder die mehreren Projekte 802 gestartet. Das eine oder die mehreren gestarteten Projekte können im Hintergrund auf einer ESP-Vorrichtung ausgeführt werden. In einem Vorgang 910 wird ein Ereignisblockobjekt von einer oder mehreren Rechenvorrichtungen der Ereignis-Publishing-Vorrichtung 872 empfangen.With reference to 9 initializes the process 906 the publish / subscribe capability of the ESPE 800 , In one operation 908 become one or more projects 802 started. The one or more started projects may be run in the background on an ESP device. In one operation 910 becomes an event block object of one or more event publishing device computing devices 872 receive.

Das ESP-Subsystem 800 kann einen Publishing-Client 852, die ESPE 800, einen Subscribing-Client A 854, einen Subscribing-Client B 856 und einen Subscribing-Client C 858 umfassen. Der Publishing-Client 852 kann durch eine Ereignis-Publishing-Anwendung gestartet werden, die bei der Publishing-Vorrichtung 872 unter Verwendung der Publish/Subscribe-API ausgeführt wird. Der Subscribing-Client A 854 kann durch eine Ereignis-Subscription-Anwendung A gestartet werden, die bei der Ereignis-Subscribing-Vorrichtung A 874a unter Verwendung der Publish/Subscribe-API ausgeführt wird. Der Subscribing-Client B 856 kann durch eine Ereignis-Subscription-Anwendung B gestartet werden, die bei der Ereignis-Subscribing-Vorrichtung B 874b unter Verwendung der Publish/Subscribe-API ausgeführt wird. Der Subscribing-Client C 858 kann durch eine Ereignis-Subscription-Anwendung C gestartet werden, die bei der Ereignis-Subscribing-Vorrichtung C 874c unter Verwendung der Publish/Subscribe-API ausgeführt wird.The ESP subsystem 800 can be a publishing client 852 , the ESPE 800 , a Subscribing Client A 854 , a subscribing client B 856 and a subscribing client C 858 include. The publishing client 852 can be started by an event publishing application used by the publishing device 872 using the publish / subscribe API. The Subscribing Client A 854 can be started by an event subscription application A, which in the event subscribing device A 874a using the publish / subscribe API. The subscribing client B 856 can be started by an event subscription application B, which in the event subscribing device B 874b using the publish / subscribe API. The subscribing client C 858 can be started by an event subscription application C, which in the event subscribing device C 874c using the publish / subscribe API.

Ein Ereignisblockobjekt, das ein oder mehrere Ereignisobjekte enthält, wird in ein Quellfenster des einen oder der mehreren Quellfenster 806 aus einer Instanz einer Ereignis-Publishing-Anwendung auf der Ereignis-Publishing-Vorrichtung 872 injiziert. Das Ereignisblockobjekt kann beispielsweise durch die Ereignis-Publishing-Anwendung erzeugt werden und kann vom Publishing-Client 852 empfangen werden. Eine eindeutige ID kann beibehalten werden, wenn das Ereignisblockobjekt zwischen dem einen oder den mehreren Quellfenstern 806 und/oder dem einen oder den mehreren abgeleiteten Fenstern 808 der ESPE 800 und zum Subscribing-Client A 854, Subscribing-Client B 806 und Subscribing-Client C 808 und zur Ereignis-Subscription-Vorrichtung A 874a, zur Ereignis-Subscription-Vorrichtung B 874b und zur Ereignis-Subscription-Vorrichtung C 874c übergeben wird. Der Publishing-Client 852 kann ferner eine eindeutige eingebettete Transaktions-ID im Ereignisblockobjekt erzeugen und einschließen, wenn das Ereignisblockobjekt durch eine kontinuierliche Abfrage verarbeitet wird, sowie die eindeutige ID, die die Publishing-Vorrichtung 872 dem Ereignisblockobjekt zugewiesen hat.An event block object containing one or more event objects is placed in a source window of the one or more source windows 806 from an instance of an event publishing application on the event publishing device 872 injected. For example, the event block object can be generated by the event publishing application and can be used by the publishing client 852 be received. A unique ID can be maintained if the event block object is between the one or more source windows 806 and / or the one or more derived windows 808 the ESPE 800 and the subscribing client A 854 , Subscribing client B 806 and subscribing client C 808 and to the event subscription device A. 874a , to the event subscription device B 874b and the event subscription device C 874c is handed over. The publishing client 852 may also generate and include a unique embedded transaction ID in the event block object if the event block object is replaced by a continuous Query is processed, as well as the unique ID that the publishing device has 872 assigned to the event block object.

In einem Vorgang 912 wird das Ereignisblockobjekt durch die eine oder mehreren kontinuierlichen Abfragen 804 verarbeitet. In einem Vorgang 914 wird das verarbeitete Ereignisblockobjekt an eine oder mehrere Rechenvorrichtungen der Ereignis-Subscribing-Vorrichtungen 874a–c ausgegeben. Beispielsweise können der Subscribing-Client A 804, der Subscribing-Client B 806 und der Subscribing-Client C 808 das empfangene Ereignisblockobjekt jeweils an die Ereignis-Subscription-Vorrichtung A 874a, die Ereignis-Subscription-Vorrichtung B 874b und die Ereignis-Subscription-Vorrichtung C 874c senden.In one operation 912 The event block object is passed through the one or more continuous queries 804 processed. In one operation 914 the processed event block object is sent to one or more computing devices of the event subscribing devices 874a -C output. For example, the subscribing client A 804 , the subscribing client B 806 and the subscribing client C 808 the received event block object respectively to the event subscription device A. 874a , the event subscription device B 874b and the event subscription device C 874c send.

Die ESPE 800 behält den Ereignisblock-Containership-Aspekt der empfangenen Ereignisblöcke bei, von wenn der Ereignisblock in ein Quellfenster herausgegeben wird, und arbeitet sich durch den gerichteten Graphen hindurch, der durch die eine oder mehreren kontinuierlichen Abfragen 804 definiert ist, mit den verschiedenen Ereignisübersetzungen vor der Ausgabe an Subscriber. Subscriber können eine Gruppe von abonnierten Ereignissen mit einer Gruppe von herausgegebenen Ereignissen korrelieren, indem die eindeutige ID des Ereignisblockobjekts verglichen wird, das ein Publisher, wie beispielsweise die Publishing-Vorrichtung 872, an das Ereignisblockobjekt mit der vom Subscriber empfangenen Ereignisblock-ID angefügt hat.The ESPE 800 maintains the event block containment aspect of the received event blocks from when the event block is issued to a source window, and works through the directed graph that passes through the one or more continuous queries 804 is defined with the various event translations prior to output to Subscriber. Subscribers may correlate a set of subscribed events with a group of issued events by comparing the unique ID of the event block object that a publisher, such as the publishing device, is comparing 872 to which the event block object with the event block ID received from the subscriber has attached.

In einem Vorgang 916 wird eine Bestimmung durchgeführt, ob die Verarbeitung gestoppt wird oder nicht. Falls die Verarbeitung nicht gestoppt wird, fährt die Verarbeitung im Vorgang 910 fort, um weiterhin den einen oder die mehreren Ereignisströme, die Ereignisblockobjekte enthalten, von der beispielsweise einen oder den mehreren Netzvorrichtungen zu empfangen. Falls die Verarbeitung gestoppt wird, fahrt die Verarbeitung in einem Vorgang 918 fort. Im Vorgang 918 werden die gestarteten Projekte gestoppt. Im Vorgang 920 wird die ESPE abgeschaltet.In one operation 916 a determination is made as to whether the processing is stopped or not. If processing is not stopped, processing moves in the process 910 to further receive the one or more event streams containing event block objects from, for example, one or more network devices. If processing is stopped, processing proceeds in one operation 918 continued. In the process 918 the started projects are stopped. In the process 920 the ESPE is switched off.

Wie bereits erwähnt, werden in einigen Ausführungsformen große Daten für ein Analyseprojekt verarbeitet, nachdem die Daten empfangen und gespeichert wurden. In anderen Ausführungsformen verarbeiten verteilte Anwendungen kontinuierlich fließende Daten in Echtzeit von verteilten Quellen durch Anwenden von Abfragen auf die Daten, bevor die Daten an geografisch verteilte Empfänger verteilt werden. Wie bereits erwähnt, kann eine Ereignisstromverarbeitungs-Engine (Event Stream Processing Engine, ESPE) die Abfragen kontinuierlich auf die Daten anwenden, wenn sie empfangen werden, und bestimmt, welche Entitäten die verarbeiteten Daten empfangen. Dies ermöglicht, dass große Datenmengen in einer Vielzahl von Umgebungen empfangen und/oder gesammelt werden, um in Echtzeit verarbeitet und verteilt zu werden. Beispielsweise können Daten, wie unter Bezugnahme auf 2 gezeigt, von Netzvorrichtungen gesammelt werden, die Vorrichtungen innerhalb des Internets der Dinge einschließen können, wie beispielsweise Vorrichtungen innerhalb eines Heimautomationsnetzes. Jedoch können derartige Daten aus einer Vielzahl von verschiedenen Ressourcen in einer Vielzahl von verschiedenen Umgebungen gesammelt werden. In einer derartigen Situation ermöglichen Ausführungsformen der vorliegenden Technologie eine Echtzeitverarbeitung derartiger Daten.As previously mentioned, in some embodiments, large data is processed for an analysis project after the data is received and stored. In other embodiments, distributed applications process continuously flowing data in real time from distributed sources by applying queries to the data before distributing the data to geographically dispersed recipients. As mentioned earlier, an Event Stream Processing Engine (ESPE) can continuously apply the queries to the data as it is received and determines which entities receive the processed data. This allows large amounts of data to be received and / or collected in a variety of environments for real-time processing and distribution. For example, data as described with reference to 2 can be collected from network devices that may include devices within the Internet of Things, such as devices within a home automation network. However, such data can be collected from a variety of different resources in a variety of different environments. In such a situation, embodiments of the present technology enable real-time processing of such data.

Aspekte der vorliegenden Offenbarung stellen technische Lösungen für technische Probleme bereit, wie beispielsweise Rechenprobleme, die auftreten, wenn eine ESP-Vorrichtung ausfällt, was zu einer vollständigen Dienstunterbrechung und einem potentiell signifikanten Datenverlust führt. Der Datenverlust kann katastrophal sein, wenn die gestreamten Daten geschäftskritische Betriebsvorgänge unterstützen, wie beispielsweise jene, die einen laufenden Fertigungs- oder Bohrvorgang unterstützen. Eine Ausführungsform eines ESP-Systems erreicht ein schnelles und nahtloses Failover der ESPE, die an der Mehrzahl von ESP-Vorrichtungen ohne Dienstunterbrechung oder Datenverlust ausgeführt wird, wodurch die Zuverlässigkeit eines betrieblichen Systems, das auf der Live- oder Echtzeitverarbeitung der Datenströme beruht, signifikant verbessert wird. Die Ereignis-Publishing-Systeme, die Ereignis-Subscribing-Systeme und jede ESPE, die nicht an einer ausgefallenen ESP-Vorrichtung ausgeführt werden, sind sich der ausgefallenen ESP-Vorrichtung nicht bewusst und sind nicht durch sie bewirkt. Das ESP-System kann Tausende von Ereignis-Publishing-Systemen und Ereignis-Subscribing-Systemen einschließen. Das ESP-System hält die Failover-Logik und das Bewusstsein innerhalb der Grenzen des Out-Messaging-Netzkonnektors und der Out-Messaging-Netzvorrichtung.Aspects of the present disclosure provide technical solutions to technical problems, such as computational problems that occur when an ESP device fails, resulting in a complete service interruption and potentially significant data loss. Data loss can be catastrophic if the streamed data supports mission-critical operations, such as those that support an ongoing manufacturing or drilling operation. One embodiment of an ESP system achieves rapid and seamless failover of the ESPE that is performed on the plurality of ESP devices without service interruption or data loss, thereby significantly improving the reliability of an operational system based on live or real-time processing of the data streams becomes. The event publishing systems, the event subscribing systems, and any ESPEs that are not executed on a failed ESP device are unaware of and are not effected by the failed ESP device. The ESP system can include thousands of event publishing systems and event subscribing systems. The ESP system maintains the failover logic and awareness within the boundaries of the Out-Messaging Network Connector and the Out-Messaging Network Device.

In einem Ausführungsbeispiel wird ein System bereitgestellt, um ein Failover bei Ereignisstromverarbeitungs(Event Stream Processing, ESP)-Ereignisblöcken zu unterstützen. Das System schließt unter anderem eine Out-Messaging-Netzvorrichtung und eine Rechenvorrichtung ein. Die Rechenvorrichtung schließt unter anderem einen Prozessor und ein computerlesbares Medium ein, das betriebsfähig mit dem Prozessor gekoppelt ist. Der Prozessor ist ausgelegt, um eine ESP-Engine (ESPE) auszuführen. Das computerlesbare Medium weist darauf gespeicherte Anweisungen auf, die bei der Ausführung durch den Prozessor bewirken, dass die Rechenvorrichtung das Failover unterstützt. Ein Ereignisblockobjekt wird von der ESPE mit einer eindeutigen Kennung empfangen. Es wird ein erster Status der Rechenvorrichtung als „aktiv” oder „Standby” bestimmt. Wenn der erste Status „aktiv” ist, wird ein zweiter Status der Rechenvorrichtung als „neu aktiv” oder „nicht neu aktiv” bestimmt. „Neu aktiv” wird bestimmt, wenn die Rechenvorrichtung von einem Standby-Status in einen aktiven Status geschaltet wird. Wenn der zweite Status „neu aktiv” ist, wird eine zuletzt herausgegebene Ereignisblockobjektkennung bestimmt, die ein zuletzt herausgegebenes Ereignisblockobjekt eindeutig identifiziert. Ein nächstes Ereignisblockobjekt wird von einem nicht-transitorischen computerlesbaren Medium ausgewählt, das durch die Rechenvorrichtung zugänglich ist. Das nächste Ereignisblockobjekt weist eine Ereignisblockobjektkennung auf, die größer als die bestimmte zuletzt herausgegebene Ereignisblockobjektkennung ist. Das ausgewählte nächste Ereignisblockobjekt wird an eine Out-Messaging-Netzvorrichtung herausgegeben. Wenn der zweite Status der Rechenvorrichtung „nicht neu aktiv” ist, wird das empfangene Ereignisblockobjekt an die Out-Messaging-Netzvorrichtung herausgegeben. Wenn der erste Status der Rechenvorrichtung „Standby” ist, wird das empfangene Ereignisblockobjekt im nicht-transitorischen computerlesbaren Medium gespeichert.In one embodiment, a system is provided to support failover on event stream processing (ESP) event blocks. The system includes, among other things, an out-messaging network device and a computing device. The computing device includes, among other things, a processor and a computer readable medium operably coupled to the processor. The processor is designed to execute an ESP engine (ESPE). The computer-readable medium has instructions stored thereon that, when executed by the processor, cause the computing device to assist in failover. An event block object is identified by the ESPE with a unique ID received. A first status of the computing device is determined as "active" or "standby". If the first status is "active", a second status of the computing device is determined to be "new active" or "not newly active". "New active" is determined when the computing device is switched from a standby state to an active state. When the second status is "new active", a most recently issued event block object identifier is identified which uniquely identifies a most recently issued event block object. A next event block object is selected by a non-transitory computer readable medium accessible by the computing device. The next event block object has an event block object identifier that is greater than the particular last issued event block object identifier. The selected next event block object is issued to an out-messaging network device. If the second state of the computing device is not "re-active", the received event block object is issued to the out-messaging network device. When the first state of the computing device is "standby", the received event block object is stored in the non-transitory computer-readable medium.

11A veranschaulicht ein Blockschaltbild eines Ausführungsbeispiels eines verteilten Verarbeitungssystems 1000, das eine oder mehrere Speichervorrichtungen 1100, die ein Speichervorrichtungsgitter 1001 ausbilden können, eine Koordinierungsvorrichtung 1300, mehrere Knotenvorrichtungen 1500, die ein Knotenvorrichtungsgitter 1005 ausbilden können, und/oder eine Betrachtungsvorrichtung 1800 integriert. 11B veranschaulicht ein Blockschaltbild eines alternativen Ausführungsbeispiels des verteilten Verarbeitungssystems 1000, bei dem eine alternative Ausführungsform der Knotenvorrichtungen 1500 Merkmale der einen oder mehreren Speichervorrichtungen 1100 integriert und/oder Funktionen davon durchführt. In beiden dieser Ausführungsformen des verteilten Verarbeitungssystems 1000, und wie detaillierter erläutert wird, können die Knotenvorrichtungen 1500 zusammen als das Gitter 1005 unter der Steuerung der Koordinierungsvorrichtung 1300 betrieben werden, wobei jede der mehreren der Knotenvorrichtungen 1500 die gleiche Aufgabe wenigstens teilweise parallel zu einer anderen von mehreren Datensatzpartitionen 1131 eines Datensatzes 1130 durchführt, die auf die mehreren Knotenvorrichtungen 1500 verteilt sind. 11A Figure 12 illustrates a block diagram of one embodiment of a distributed processing system 1000 containing one or more storage devices 1100 holding a storage device grid 1001 can form a coordinating device 1300 , several node devices 1500 that a knot device grid 1005 can form, and / or a viewing device 1800 integrated. 11B Figure 12 illustrates a block diagram of an alternative embodiment of the distributed processing system 1000 in which an alternative embodiment of the node devices 1500 Features of the one or more storage devices 1100 integrates and / or performs functions thereof. In both of these embodiments of the distributed processing system 1000 and as explained in more detail, the node devices 1500 together as the grid 1005 under the control of the coordinator 1300 are operated, wherein each of the plurality of node devices 1500 the same task at least partially parallel to another of several record partitions 1131 a record 1130 performs on the multiple node devices 1500 are distributed.

Wie dargestellt, können diese Vorrichtungen 1100, 1300, 1500 und 1800 Kommunikationen dazwischen in Verbindung mit der Zuweisung und Durchführung von Aufgaben einer Analyseroutine 1210 mit einem oder mehreren Datensätzen 1130 austauschen. Derartige Kommunikationen können den Austausch der Knotenstatus 1535, Datensatzpartitionen 1131 und/oder Metadaten 1135 eines Datensatzes 1130, der Analyseroutine 1210 und/oder Taskroutinen 1211 davon, CPU-Taskroutinen 1571, GPU-Taskroutinen 1671 und/oder Ergebnisdaten 1830 einschließen. Jedoch können eine oder mehrere der Vorrichtungen 1100, 1300, 1500 und/oder 1800 auch über das Netz 1999 andere Daten austauschen, die in keiner Weise mit irgendeiner Zuweisung oder Durchführung von Aufgaben einer beliebigen Analyseroutine in Beziehung stehen. In verschiedenen Ausführungsformen kann das Netz 1999 ein einzelnes Netz sein, das sich innerhalb eines einzelnen Gebäudes oder eines anderen relativ begrenzten Bereichs erstrecken kann, eine Kombination von verbundenen Netzen sein, die sich über eine beträchtliche Distanz erstrecken können, und/oder das Internet einschließen. Somit kann das Netz 1999 auf einer beliebigen Vielfalt (oder Kombination) von Kommunikationstechnologien basieren, durch die Kommunikationen bewirkt werden können, einschließlich, ohne Einschränkung, drahtgebundener Technologien, die eine elektrisch und/oder optisch leitfähige Verkabelung verwenden, und drahtloser Technologien, die Infrarot-, Hochfrequenz(HF)- oder andere Formen der drahtlosen Übertragung verwenden.As shown, these devices can 1100 . 1300 . 1500 and 1800 Communications in between in connection with the assignment and execution of tasks of an analysis routine 1210 with one or more records 1130 change. Such communications can exchange the node status 1535 , Record partitions 1131 and / or metadata 1135 a record 1130 , the analysis routine 1210 and / or task routines 1211 of it, CPU task routines 1571 , GPU Task Routines 1671 and / or result data 1830 lock in. However, one or more of the devices 1100 . 1300 . 1500 and or 1800 also over the net 1999 exchange other data that is in no way related to any assignment or performance of tasks of any analysis routine. In various embodiments, the network may 1999 be a single network that may extend within a single building or other relatively limited area, be a combination of connected networks that may extend a considerable distance, and / or include the Internet. Thus, the network can 1999 based on any variety (or combination) of communication technologies through which communications can be effected, including, without limitation, wired technologies using electrically and / or optically conductive cabling, and wireless technologies including infrared, radio frequency (RF) - or use other forms of wireless transmission.

Unter Bezugnahme auf 11A kann in verschiedenen Ausführungsformen jede der einen oder mehreren Speichervorrichtungen 1100 einen oder mehrere Prozessoren 1150, einen Speicher 1160 und eine Netzschnittstelle 1190 integrieren, um jede der einen oder mehreren Speichervorrichtungen 1100 mit dem Netz 1999 zu koppeln. Der Speicher 1160 kann eine Steuerroutine 1140, eine oder mehrere Analyseroutinen 1210, die jeweils eine oder mehrere Taskroutinen 1211 integrieren können, einen oder mehrere Datensätze 1330, die jeweils Metadaten 1135 integrieren können, und/oder eine oder mehrere Datensatzpartitionen 1131 des einen oder der mehreren Datensätze 1130 speichern. Die Steuerroutine 1140 kann eine Sequenz von Anweisungen integrieren, die auf dem Prozessor 1150 von jeder der einen oder mehreren Speichervorrichtungen 1100 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen durchzuführen. Der Prozessor 1150 von jeder der Speichervorrichtungen 1100 kann die Netzschnittstelle 1190 betreiben, um die Analyseroutine 1210 und/oder eine oder mehrere der Taskroutinen 1211 davon mit der Koordinierungsvorrichtung 1300 auszutauschen. Alternativ oder zusätzlich kann der Prozessor 1150 von jeder der Speichervorrichtungen die Netzschnittstelle 1190 betreiben, um einen Austausch von einer oder mehreren Datensatzpartitionen 1131 mit einer oder mehreren der Knotenvorrichtungen 1500 über das Netz 1999 mit der Koordinierungsvorrichtung 1300 zu koordinieren sowie um diesen Austausch zu bewirken. In Ausführungsformen, in denen mehrere der Speichervorrichtungen 1100 zusammen als das Speichervorrichtungsgitter 1001 betrieben werden, kann die Sequenz von Anweisungen der Steuerroutine 1140 auf dem Prozessor 1150 von jeder dieser Speichervorrichtungen 1100 betriebsfähig sein, um verschiedene Funktionen wenigstens teilweise parallel zu den Prozessoren 1150 von anderen der Speichervorrichtungen 1100 durchzuführen.With reference to 11A For example, in various embodiments, each of the one or more memory devices 1100 one or more processors 1150 , a store 1160 and a network interface 1190 integrate with each of the one or more storage devices 1100 with the net 1999 to pair. The memory 1160 can be a control routine 1140 , one or more analysis routines 1210 , each one or more task routines 1211 can integrate one or more records 1330 , each metadata 1135 integrate and / or one or more record partitions 1131 one or more records 1130 to save. The control routine 1140 can integrate a sequence of instructions on the processor 1150 from each of the one or more storage devices 1100 are operable to implement logic to perform various functions. The processor 1150 from each of the storage devices 1100 can the network interface 1190 operate to the analysis routine 1210 and / or one or more of the task routines 1211 of which with the coordinator 1300 exchange. Alternatively or additionally, the processor 1150 from each of the storage devices, the network interface 1190 operate to exchange one or more record partitions 1131 with one or more of the node devices 1500 over the net 1999 with the coordinator 1300 to coordinate and to effect this exchange. In embodiments in which more of the memory devices 1100 together as the storage device grid 1001 can be operated, the sequence of instructions of the control routine 1140 on the processor 1150 from each one of these storage devices 1100 be operable to perform various functions at least partially parallel to the processors 1150 from others of the storage devices 1100 perform.

In einigen Ausführungsformen können die Prozessoren 1150 der Speichervorrichtungen 1100 zusammenwirken, um eine Sammelfunktion durchzuführen, bei der jeder der Prozessoren 1150 eine entsprechende der Netzschnittstellen 1190 betreibt, um Datenelemente eines oder mehrerer der Datensätze 1130 über das Netz 1999 zu empfangen, und können die Datenelemente über eine Zeitperiode in den einen oder die mehreren Datensätze 1130 assemblieren. In derartigen Ausführungsformen können Datenelemente eines Datensatzes 1130 über das Netz 1999 und/oder auf andere Weise von einem oder mehreren anderen Vorrichtungen (nicht gezeigt) empfangen werden. Beispielhaft können eine Vielzahl von entfernt angeordneten Sensorvorrichtungen (z. B. geologische Sensoren, die über eine bestimmte geologische Region verteilt sind, oder Teilchenerfassungssensoren, die an verschiedenen Teilen eines Teilchenbeschleunigers angeordnet sind) zahlreiche Datenelemente erzeugen, die dann über das Netz 1999 an die Speichervorrichtungen 1100 bereitgestellt werden, wo die zahlreichen Datenelemente dann assembliert werden, um einen Datensatz 1130 auszubilden. In anderen Ausführungsformen können die Speichervorrichtungen 1100 einen oder mehrere der Datensätze 1130 einer Vielzahl von anderen Vorrichtungen (nicht gezeigt), wie beispielsweise einem Gitter von anderen Knotenvorrichtungen, empfangen. Beispielhaft können solche anderen Vorrichtungen eine oder mehrere Verarbeitungsvorgänge durchführen, die einen Datensatz 1130 erzeugen (z. B. eine Bayessche Analyse verwenden, um eine Vorhersage des Verhaltens von Menschen in einer Simulation des Evakuierens eines brennenden Gebäudes abzuleiten oder um eine Vorhersage des Verhaltens von Strukturkomponenten einer Brücke in Reaktion auf verschiedene Windströme abzuleiten), und können dann einen Datensatz 1130 als eine Ausgabe an das Speichervorrichtungsgitter 1001 übertragen.In some embodiments, the processors may 1150 the storage devices 1100 work together to perform a collection function in which each of the processors 1150 a corresponding one of the network interfaces 1190 operates to data elements of one or more of the records 1130 over the net 1999 and can transfer the data items into the one or more records over a period of time 1130 assemble. In such embodiments, data elements of a data set 1130 over the net 1999 and / or otherwise received by one or more other devices (not shown). By way of example, a plurality of remote sensor devices (eg, geological sensors distributed over a particular geological region or particle detection sensors disposed on different parts of a particle accelerator) may generate numerous data elements which then travel over the network 1999 to the storage devices 1100 be provided where the numerous data elements are then assembled to a record 1130 train. In other embodiments, the memory devices 1100 one or more of the records 1130 a plurality of other devices (not shown), such as a grid of other node devices. By way of example, such other devices may perform one or more processing operations that include a record 1130 (For example, use a Bayesian analysis to derive a prediction of the behavior of humans in a simulation of evacuating a burning building or to derive a prediction of the behavior of structural components of a bridge in response to different wind currents), and then make a record 1130 as an output to the memory device grid 1001 transfer.

Jeder der einen oder mehreren Datensätze 1130 kann einen beliebigen einer Vielzahl von Typen von Daten einschließen, die mit einem beliebigen einer Vielzahl von Gegenständen assoziiert sind. Beispielhaft kann jeder der Datensätze 1130 wissenschaftliche Beobachtungsdaten in Bezug auf geologische und/oder meteorologische Ereignisse oder von Sensoren einschließen, die in Laborexperimenten in Bereichen wie beispielsweise Chemie oder Physik eingesetzt werden. In einem anderen Beispiel kann der Datensatz Anzeigen von Aktivitäten einschließen, die durch eine zufällige Stichprobe von Personen einer Bevölkerung von Menschen in einem ausgewählten Land oder einer Gemeinde oder einer Population von bedrohten Arten, die in der Wildnis untersucht werden, durchgeführt werden. Wie dargestellt, kann jeder der Datensätze 1130 Metadaten 1135 integrieren, die Anzeigen von strukturellen Merkmalen bereitstellen, einschließlich unter anderem Aspekte der Art und Weise, in der Datenelemente organisiert und/oder innerhalb jedes Datensatzes 1130 zugänglich gemacht werden.Each of the one or more records 1130 may include any of a variety of types of data associated with any of a variety of items. By way of example, each of the records 1130 Include scientific observation data relating to geological and / or meteorological events or sensors used in laboratory experiments in fields such as chemistry or physics. In another example, the dataset may include displaying activities performed by a random sample of individuals of a population of humans in a selected country or community, or a population of endangered species being studied in the wild. As shown, each of the records can 1130 metadata 1135 Incorporate the ads to provide structural features, including, but not limited to, aspects of the way in which data items are organized and / or within each record 1130 be made accessible.

Die Aufgaben, bezüglich welcher die Taskroutinen 1211 der Analyseroutine 1210 veranlassen können, dass einer oder mehrere Prozessoren sie durchführt, können beliebige einer Vielzahl von Datenanalyseaufgaben, Datenumwandlungsaufgaben und/oder Datennormalisierungsaufgaben einschließen. Die Datenanalyseaufgaben können unter anderem Suchen und/oder statistische Analysen einschließen, die die Ableitung von Approximationen, numerischen Charakterisierungen, Modellen, Auswertungen von Hypothesen und/oder Vorhersagen mit sich bringen (z. B. eine Vorhersage durch eine Bayessche Analyse von Aktionen einer Menschenmenge, die versucht, aus einem brennenden Gebäude zu fliehen, oder des Verhaltens von Brückenkomponenten in Reaktion auf eine Windkraft). Die Datenumwandlungsaufgaben können unter anderem Sortieren, zeilen- und/oder spaltenbasierte mathematische Operationen, zeilen- und/oder spaltenbasiertes Filtern unter Verwendung eines oder mehrerer Datenelemente einer Zeile oder Spalte und/oder Neuordnen von Datenelementen innerhalb eines Datenobjekts einschließen. Die Datennormalisierungsaufgaben können unter anderem Normalisierungszeiten des Tages, Datumsangaben, Geldwerte (z. B. Normalisierung auf eine einzelne Währungseinheit), Zeichenabstand, Verwendung von Trennzeichen (z. B. Normalisierung der Verwendung von Punkten und Kommas in numerischen Werten), Verwendung von Formatierungscodes, Verwendung von Big- oder Little-Endian-Codierung, Verwendung oder mangelnde Verwendung von Zeichenbits, Mengen von Bits, die verwendet werden, um ganze Zahlen und/oder Gleitkommawerte darzustellen (z. B. Bytes, Worte, Doppelworte oder Quadworte), usw. einschließen.The tasks with respect to which the task routines 1211 the analysis routine 1210 may cause one or more processors to perform any of a variety of data analysis tasks, data transformation tasks, and / or data normalization tasks. The data analysis tasks may include, but are not limited to, searches and / or statistical analyzes involving the derivation of approximations, numerical characterizations, models, hypothesis evaluations, and / or predictions (e.g., a prediction by a Bayesian analysis of actions of a crowd, trying to escape from a burning building or the behavior of bridge components in response to wind power). The data transformation tasks may include, but are not limited to, sorting, row and / or column based mathematical operations, row and / or column based filtering using one or more data elements of a row or column, and / or reordering data items within a data object. The data normalization tasks may include normalization times of the day, dates, monetary values (eg, normalization to a single currency unit), character spacing, use of delimiters (eg, normalizing the use of points and commas in numeric values), use of formatting codes, Use of big or little endian encoding, use or lack of character bits, sets of bits used to represent integers and / or floating point values (eg, bytes, words, double words or quadwords), etc. lock in.

In verschiedenen Ausführungsformen kann die Koordinierungsvorrichtung 1300 eines oder mehrere von einem Prozessor 1350, einem Speicher 1360, einer Eingabevorrichtung 1320, einer Anzeige 1380 und einer Netzschnittstelle 1390 integrieren, um die Koordinierungsvorrichtung 1300 mit dem Netz 1999 zu koppeln. Der Speicher 1360 kann eine Steuerroutine 1340, die Metadaten 1135 eines Datensatzes 1130, die Analyseroutine 1210, Knotenstatus 1535, Zuweisungsdaten 1330, Aufgabenverzögerungsdaten 1335, eine Kompilierroutine 1440, Kompilierregeln 1434, die CPU-Taskroutinen 1571, die GPU-Taskroutinen 1671 und/oder die Ergebnisdaten 1830 speichern. Die Steuerroutine 1340 und die Kompilierroutine 1440 (falls innerhalb des Speichers 1360 vorhanden) können jeweils eine Sequenz von Anweisungen integrieren, die auf dem Prozessor 1350 betriebsfähg sind, um eine Logik zu implementieren, um verschiedene Funktionen durchzuführen.In various embodiments, the coordinating device 1300 one or more of a processor 1350 , a store 1360 , an input device 1320 , an ad 1380 and a network interface 1390 integrate to the coordinating device 1300 with the net 1999 to pair. The memory 1360 can be a control routine 1340 , the metadata 1135 a record 1130 , the analysis routine 1210 , Node status 1535 , Assignment data 1330 , Task delay data 1335 , a compile routine 1440 , Compile rules 1434 , the CPU task routines 1571 , the GPU task routines 1671 and / or the result data 1830 to save. The control routine 1340 and the compile routine 1440 (if within the memory 1360 present) can each integrate a sequence of instructions on the processor 1350 operable to implement logic to perform various functions.

In verschiedenen Ausführungsformen kann jede der Knotenvorrichtungen 1500 eine oder mehrere einer CPU 1550, einen Speicher 1560 und eine Netzschnittstelle 1590 integrieren, um jede der Knotenvorrichtungen 1500 mit dem Netz 1999 zu koppeln. Der Speicher 1560 kann eine Steuerroutine 1540, eine oder mehrere Datensatzpartitionen 1131, eine Instanz des Knotenstatus 1535, die Kompilierroutine 1440, die Kompilierregeln 1434, eine oder mehrere der Taskroutinen 1211 und/oder eine oder mehrere der CPU-Taskroutinen 1571 speichern. Die Steuerroutine 1540 und die Kompilierroutine 1440 (falls innerhalb des Speichers 1560 vorhanden) können eine Sequenz von Anweisungen integrieren, die auf der CPU 1550 von jeder der Knotenvorrichtungen 1500 betriebsfähg sind, um eine Logik zu implementieren, um verschiedene Funktionen durchzuführen. In Ausführungsformen, in denen mehrere der Knotenvorrichtungen 1500 zusammen als das Knotenvorrichtungsgitter 1005 betrieben werden, kann die Sequenz von Anweisungen der Steuerroutine 1540 auf der CPU 1550 von jeder dieser Knotenvorrichtungen 1500 betriebsfähig sein, um verschiedene Funktionen wenigstens teilweise parallel zu den CPUs 1550 von anderen der Knotenvorrichtungen 1500 durchzuführen.In various embodiments, each of the node devices 1500 one or more of a CPU 1550 , a store 1560 and a network interface 1590 integrate to each of the node devices 1500 with the net 1999 to pair. The memory 1560 can be a control routine 1540 , one or more record partitions 1131 , an instance of the node status 1535 , the compiler routine 1440 , the compilation rules 1434 , one or more of the task routines 1211 and / or one or more of the CPU task routines 1571 to save. The control routine 1540 and the compile routine 1440 (if inside the memory 1560 present) can integrate a sequence of instructions on the CPU 1550 from each of the node devices 1500 operable to implement logic to perform various functions. In embodiments in which a plurality of the node devices 1500 together as the node device grid 1005 can be operated, the sequence of instructions of the control routine 1540 on the CPU 1550 from each of these node devices 1500 be operable to perform various functions at least partially parallel to the CPUs 1550 from other of the node devices 1500 perform.

Wenigstens eine Teilmenge der Knotenvorrichtungen 1500 kann zusätzlich einen Grafikcontroller 1600 integrieren, der eine oder mehrere von einer GPU 1650 und einem Speicher 1660 integrieren kann. Der Speicher 1660 kann eine Steuerroutine 1640, eine oder mehrere Datensatzpartitionen 1131 und/oder eine oder mehrere der GPU-Taskroutinen 1671 speichern. Die Steuerroutine 1640 kann eine Sequenz von Anweisungen integrieren, die auf der GPU 1650 von jeder der Knotenvorrichtungen 1600 betriebsfähig sind, die den Grafikcontroller 1600 integriert, um eine Logik zu implementieren, um verschiedene Funktionen durchzuführen. In Ausführungsformen, in denen mehrere der Knotenvorrichtungen 1600 zusammen als das Knotenvorrichtungsgitter 1005 betrieben werden, kann die Sequenz von Anweisungen der Steuerroutine 1640 auf der GPU 1650 des Grafikcontrollers 1600 von jeder dieser Knotenvorrichtungen 1500 betriebsfähig sein, um verschiedene Funktionen wenigstens teilweise parallel zu den GPUs 1650 des Grafikcontrollers 1600 von anderen der Knotenvorrichtungen 1500 durchzuführen.At least a subset of the node devices 1500 can also have a graphics controller 1600 integrate one or more of a GPU 1650 and a memory 1660 can integrate. The memory 1660 can be a control routine 1640 , one or more record partitions 1131 and / or one or more of the GPU task routines 1671 to save. The control routine 1640 can integrate a sequence of statements on the GPU 1650 from each of the node devices 1600 are operational, which is the graphics controller 1600 integrated to implement logic to perform various functions. In embodiments in which a plurality of the node devices 1600 together as the node device grid 1005 can be operated, the sequence of instructions of the control routine 1640 on the GPU 1650 of the graphics controller 1600 from each of these node devices 1500 be operable to perform various functions at least partially parallel to the GPUs 1650 of the graphics controller 1600 from other of the node devices 1500 perform.

Wie in 12 dargestellt, kann der Speicher 1560 in einen flüchtigen Speicher 1561 und einen nicht-flüchtigen Speicher 1563 aufgeteilt werden, und der Speicher 1660 kann einen flüchtigen Speicher 1661 einschließen, darf aber keinen nicht-flüchtigen Speicher einschließen. Die flüchtigen Speicher 1561 und 1661 können jeweils mit einer oder mehreren flüchtigen Speicherkomponenten 1562 und 1662 implementiert sein. Die flüchtigen Speicherkomponenten 1562 und 1662 können jeweils beliebige einer Vielzahl von Speichertechnologien einsetzen, die einen relativ schnellen Zugriff auf darin gespeicherte Daten und/oder Routinen ermöglichen (z. B. die dargestellte beispielhafte Datensatzpartition 1131), die aber nicht in der Lage sind, die darin gespeicherten Daten und/oder Routinen ohne kontinuierliche Versorgung von elektrischer Leistung zu behalten. Derartige Technologien schließen unter anderem beliebige einer Vielzahl von Typen von Direktzugriffsspeicher (Random Access Memory, RAM) ein. Der nicht-flüchtige Speicher 1563 kann mit einer oder mehreren nicht-flüchtigen Speicherkomponenten 1564 implementiert sein. Die eine oder mehreren nicht-flüchtigen Speicherkomponenten 1564 können jeweils eine Speichertechnologie einsetzen, die in der Lage ist, darin gespeicherte Daten und/oder Routinen zu speichern, unabhängig davon, ob elektrische Leistung weiterhin bereitgestellt wird, aber nicht in der Lage ist, Zugriff auf Daten und/oder Routinen bereitzustellen, der so schnell ist wie der, der von verschiedenen flüchtigen Speichertechnologien bereitgestellt wird, auf denen die flüchtigen Speicher 1561 und/oder 1661 basieren können. Derartige Technologien schließen unter anderem beliebige einer Vielzahl von Technologien ein, die ferromagnetische und/oder optische Speichermedien einsetzen.As in 12 represented, the memory can 1560 in a volatile memory 1561 and a non-volatile memory 1563 be split, and the memory 1660 can be a volatile memory 1661 but may not include non-volatile memory. The volatile memory 1561 and 1661 each with one or more volatile memory components 1562 and 1662 be implemented. The volatile memory components 1562 and 1662 Any of a variety of memory technologies may be used to provide relatively quick access to data and / or routines stored therein (eg, the illustrative record partition shown) 1131 ), but are unable to retain the data and / or routines stored therein without a continuous supply of electrical power. Such technologies include, but are not limited to, any of a variety of types of Random Access Memory (RAM). The non-volatile memory 1563 can with one or more non-volatile memory components 1564 be implemented. The one or more non-volatile memory components 1564 For example, each may employ a storage technology capable of storing data and / or routines stored therein, whether or not electrical power continues to be provided but is unable to provide access to data and / or routines, such fast is like that provided by various volatile memory technologies on which the volatile memory 1561 and or 1661 can be based. Such technologies include, but are not limited to, any of a variety of technologies employing ferromagnetic and / or optical storage media.

Aufgrund der Unterschiede in ihren jeweiligen Technologien kann der nicht-flüchtige Speicher 1563 eine wesentlich größere Speicherkapazität aufweisen als einer der flüchtigen Speicher 1561 oder 1661. Somit können Seiten von Daten und/oder Routinen, die innerhalb des nicht-flüchtigen Speichers 1563 gespeichert sind, in jeden der flüchtigen Speicher 1561 und 1661 als ein Mechanismus, um die CPU 1550 und die GPU 1650 zu aktivieren, hinein und hinaus getauscht werden, um den schnelleren Zugriff auf die jeweiligen flüchtigen Speicher 1561 und 1661 zu nutzen, während die begrenzteren Speicherkapazitäten von jedem überwunden werden. Insbesondere, und wie auch dargestellt, kann die CPU 1550 durch die Ausführung einer Seitenkomponente 1541 der Steuerroutine 1540 veranlasst werden, einen derartigen Seitenaustausch zu bewirken, um sowohl den eigenen Betrieb als auch den Betrieb der GPU 1650 zu unterstützen. Die Notwendigkeit, die CPU 1550 einzusetzen, um einen Seitenaustausch im Auftrag der GPU 1650 durchzuführen, kann aus der Verwendung der einen oder mehreren Treiberroutinen (nicht gezeigt) resultieren, die von der CPU 1550 ausgeführt werden, um es der CPU 1550 zu ermöglichen, auf die eine oder mehreren nicht-flüchtigen Speicherkomponenten 1564 zuzugreifen.Due to the differences in their respective technologies, the non-volatile memory can 1563 have a much larger storage capacity than one of the volatile memory 1561 or 1661 , Thus, pages of data and / or routines within the non-volatile memory 1563 stored in each of the volatile memories 1561 and 1661 as a mechanism to the CPU 1550 and the GPU 1650 to be activated, swapped in and out, for faster access to the respective volatile memory 1561 and 1661 while overcoming the more limited storage capacities of each. In particular, and as shown, the CPU can 1550 by the execution of a page component 1541 the control routine 1540 to cause such a page swap to both its own operation and the operation of the GPU 1650 to support. The need for the CPU 1550 to use a page exchange on behalf of the GPU 1650 may result from the use of the one or more driver routines (not shown) provided by the CPU 1550 run it to the CPU 1550 to allow access to one or more non-volatile memory components 1564 access.

Unter Rückbezug auf 11A integriert die Betrachtungsvorrichtung 1800 in verschiedenen Ausführungsformen eines oder mehrere von einem Prozessor 1850, einem Speicher 1860, einer Eingabevorrichtung 1820, einer Anzeige 1880 und einer Netzschnittstelle 1890, um die Betrachtungsvorrichtung 1800 mit dem Netz 1999 zu koppeln. Der Speicher 1860 kann eine oder mehrere von einer Steuerroutine 1840, der Analyseroutine 1210 und den Ergebnisdaten 1830 speichern. Die Steuerroutine 1840 kann eine Sequenz von Anweisungen integrieren, die auf dem Prozessor 1850 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen auszuführen. Der Prozessor 1850 kann durch seine Ausführung der Steuerroutine 1840 veranlasst werden, die Netzschnittstelle 1890 zu betreiben, um die Ergebnisdaten 1830 von einer der Knotenvorrichtungen 1500 oder von der Koordinierungsvorrichtung 1300 über das Netz 1999 nach Abschluss der Ausführung der Analyseroutine 1210 zu empfangen. In einigen Ausführungsformen kann der Prozessor 1850 auch veranlasst werden, eine Visualisierung basierend auf den Ergebnisdaten 1830 zu erzeugen, um eine Darstellung der Ergebnisse der Durchführung durch mehrere der Knotenvorrichtungen 1500 der Aufgaben der Taskroutinen 1211 der Analyseroutine 1210 auf der Anzeige 1880 zu präsentieren. With reference to 11A Integrates the viewing device 1800 in various embodiments, one or more of a processor 1850 , a store 1860 , an input device 1820 , an ad 1880 and a network interface 1890 to the viewing device 1800 with the net 1999 to pair. The memory 1860 can be one or more of a control routine 1840 , the analysis routine 1210 and the result data 1830 to save. The control routine 1840 can integrate a sequence of instructions on the processor 1850 are operable to implement logic to perform various functions. The processor 1850 can through its execution of the control routine 1840 be initiated, the network interface 1890 operate the results data 1830 from one of the node devices 1500 or from the coordinator 1300 over the net 1999 after completion of the analysis routine 1210 to recieve. In some embodiments, the processor 1850 also caused a visualization based on the result data 1830 to generate a representation of the results of performance by a plurality of the node devices 1500 the tasks of the task routines 1211 the analysis routine 1210 on the display 1880 showcase.

Alternativ oder zusätzlich kann der Prozessor 1850 durch seine Ausführung der Steuerroutine 1840 veranlasst werden, die Anzeige 1880 und/oder die Eingabevorrichtung 1820 zu betreiben, um eine Benutzerschnittstelle bereitzustellen, durch die ein Bediener der Betrachtungsvorrichtung 1800 eine Eingabe darin bereitstellen kann. Diese Eingabe kann einen Befehl für die Ausführung der Analyseroutine 1210 über mehrere der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 einschließen, um eine Analyse mit wenigstens einem der Datensätze 1130 durchzuführen, die von der einen oder den mehreren Speichervorrichtungen 1100 gespeichert werden. In Reaktion auf den Empfang des Eingabebefehls kann der Prozessor 1850 veranlasst werden, die Netzschnittstelle 1890 zu betreiben, um den Befehl und/oder die Analyseroutine 1210 über das Netz 1999 an die Koordinierungsvorrichtung 1300 zu übermitteln.Alternatively or additionally, the processor 1850 by its execution of the control routine 1840 be prompted the ad 1880 and / or the input device 1820 to provide a user interface by which an operator of the viewing device 1800 can provide an input therein. This input may issue a command to run the parsing routine 1210 over several of the node devices 1500 of the node device grid 1005 Include an analysis with at least one of the records 1130 performed by the one or more storage devices 1100 get saved. In response to receipt of the input command, the processor may 1850 be initiated, the network interface 1890 operate on the command and / or the analysis routine 1210 over the net 1999 to the coordinator 1300 to convey.

Unter Bezugnahme auf 11B unterscheidet sich das alternative Ausführungsbeispiel des verteilten Verarbeitungssystems 1000, das darin dargestellt ist, vom Ausführungsbeispiel aus 11A, indem die eine oder mehreren Speichervorrichtungen 1100 nicht eingeschlossen sind. Stattdessen können die Knotenvorrichtungen 1500 des alternativen Ausführungsbeispiels aus 11B direkt die Funktion des Speicherns des einen oder der mehreren Datensätze 1130 durchführen, wodurch die Notwendigkeit für die eine oder mehreren Speichervorrichtungen 1100 des Ausführungsbeispiels des verteilten Verarbeitungssystems 1000 aus 11A ausgeschlossen wird.With reference to 11B the alternative embodiment of the distributed processing system differs 1000 Illustrated therein, from the embodiment 11A by placing the one or more storage devices 1100 not included. Instead, the node devices 1500 of the alternative embodiment 11B directly the function of storing the one or more records 1130 perform, eliminating the need for one or more storage devices 1100 the embodiment of the distributed processing system 1000 out 11A is excluded.

Unter Bezugnahme auf beide Ausführungsformen der beiden 11A und 11B ist anzumerken, dass in einigen Ausführungsformen die von der Koordinierungsvorrichtung 1300 ausgeführten Funktionen von einer der Knotenvorrichtungen 1500 anstelle der Koordinierungsvorrichtung 1300 ausgeführt werden können (z. B. Ausführungsformen, die die Koordinierungsvorrichtung 1300 nicht einschließen). In derartigen Ausführungsformen kann eine solche der Knotenvorrichtungen 1500 zusätzlich die Metadaten 1135 eines der Datensätze 1130 von einer der Speichervorrichtungen 1100 (oder von einer der anderen Knotenvorrichtungen 1500 in Ausführungsformen, in denen die Knotenvorrichtungen 1500 die Speicherfunktion der einen oder mehreren Speichervorrichtungen 1100 durchführen) empfangen. Darüber hinaus kann eine solche der Knotenvorrichtungen 1500 zusätzlich die Knotenstatus 1535 von anderen der Knotenvorrichtungen 1500 empfangen. Ferner kann eine solche der Knotenvorrichtungen 1300 zusätzlich die Taskroutinen 1211, die CPU-Taskroutinen 1571 und/oder die GPU-Taskroutinen 1671 an andere der Knotenvorrichtungen 1500 übertragen.With reference to both embodiments of the two 11A and 11B It should be noted that in some embodiments, that of the coordinator 1300 performed functions of one of the node devices 1500 instead of the coordinator 1300 can be executed (eg, embodiments, the coordination device 1300 do not include). In such embodiments, one of the node devices 1500 additionally the metadata 1135 one of the records 1130 from one of the storage devices 1100 (or from one of the other node devices 1500 in embodiments in which the node devices 1500 the storage function of the one or more storage devices 1100 perform). In addition, such one of the node devices 1500 additionally the node status 1535 from other of the node devices 1500 receive. Further, such one of the node devices 1300 additionally the task routines 1211 , the CPU task routines 1571 and / or the GPU task routines 1671 to other of the node devices 1500 transfer.

13A veranschaulicht ein Ausführungsbeispiel der Zuweisung von Aufgaben und Kompilierung von Taskroutinen, die durch die Koordinierungsvorrichtung 1300 in einem der Ausführungsbeispiele des verteilten Verarbeitungssystems 1000 aus einer von 11A oder 11B durchgeführt werden können. 13B veranschaulicht ein alternatives Ausführungsbeispiel der Zuweisung von Aufgaben, die durch die Koordinierungsvorrichtung durchgeführt werden kann, während die Kompilierung von Taskroutinen durch die Knotenvorrichtungen 1500 durchgeführt werden kann, die ausgewählt werden, um zugewiesen zu werden, die Aufgaben in einem der Ausführungsbeispiele des verteilten Verarbeitungssystems 1000 aus einer von 11A oder 11B durchzuführen. 13A FIG. 12 illustrates one embodiment of assignment of tasks and compilation of task routines performed by the coordinator 1300 in one of the embodiments of the distributed processing system 1000 from one of 11A or 11B can be performed. 13B Figure 12 illustrates an alternative embodiment of assigning tasks that may be performed by the coordinator while compiling task routines through the node devices 1500 which are selected to be assigned, the tasks in one of the embodiments of the distributed processing system 1000 from one of 11A or 11B perform.

Unter Bezugnahme auf 13A kann bei der Ausführung der Steuerroutine 1340 der Prozessor 1350 der Koordinierungsvorrichtung 1300 veranlasst werden, Metadaten 1135 zu empfangen, die indikativ für strukturelle Merkmale eines der Datensätze 1130 und/oder der Analyseroutine 1210 von der einen oder mehreren Speichervorrichtungen 1100 und/oder der Betrachtungsvorrichtung 1700 sind. Der Prozessor 1350 kann auch veranlasst werden, von den Knotenvorrichtungen 1500 die Knotenstatus 1535 zu empfangen, die indikativ für die Verarbeitungs-, Speicher- und/oder Netzzugriffsressourcen sind, die in jede der Knotenvorrichtungen 1500 integriert sind, sowie das Ausmaß, in dem jede dieser Ressourcen aktuell verfügbar ist. Der Prozessor 1350 kann die Metadaten 1135, die Analyseroutine 1210 und/oder die Knotenstatus 1535 einsetzen, um anfängliche Zuweisungen von wenigstens einer anfänglichen Aufgabe der Analyseroutine 1210 an ausgewählte der Knotenvorrichtungen 1500 sowie eine anfängliche Verteilung der Datensatzpartitionen 1131 an die ausgewählten der Knotenvorrichtungen 1500 abzuleiten.With reference to 13A can during the execution of the control routine 1340 the processor 1350 the coordinator 1300 be prompted for metadata 1135 to receive indicative of structural features of any of the records 1130 and / or the analysis routine 1210 from the one or more storage devices 1100 and / or the viewing device 1700 are. The processor 1350 can also be caused by the node devices 1500 the node status 1535 which are indicative of the processing, storage and / or network access resources that are in each of the node devices 1500 integrated, and the extent to which each of these resources is currently available. The processor 1350 can the metadata 1135 , the analysis routine 1210 and / or the node status 1535 to initial assignments of at least one initial task of the analysis routine 1210 to selected ones of the node devices 1500 and an initial distribution of the record partitions 1131 to the selected one of the node devices 1500 derive.

Beim Ausführen der Kompilierroutine 1440 kann der Prozessor 1350 veranlasst werden, die ausführbaren Anweisungen innerhalb jeder der Taskroutinen 1211 der Analyseroutine 1210 zu analysieren, um diejenigen der Taskroutinen 1211 zu identifizieren, die zur peinlich parallelen Ausführung durch die GPUs 1650 kompiliert werden können, die in wenigstens eine Teilmenge der Knotenvorrichtungen 1500 integriert sein können. Diejenigen der Taskroutinen 1211, die für die GPUs 1650 so kompiliert werden können, können durch den Prozessor 1350 in entsprechende GPU-Taskroutinen 1671 kompiliert werden, die von den GPUs 1650 ausgeführt werden können. Jedoch können diejenigen der Taskroutinen 1211, die für die GPUs 1650 so nicht kompiliert werden können, durch den Prozessor 1350 in entsprechende CPU-Taskroutinen 1571 kompiliert werden, die von den CPUs 1550 der Knotenvorrichtungen 1500 ausgeführt werden können. Der Prozessor 1350 kann dann veranlasst werden, die eine oder mehreren CPU-Taskroutinen 1571 und/oder die eine oder mehreren GPU-Taskroutinen 1671 für die wenigstens eine anfängliche Aufgabe an die ausgewählten der Knotenvorrichtungen 1500 als Teil der Zuweisung der wenigstens einen anfänglichen Aufgabe zu verteilen.When executing the compile routine 1440 can the processor 1350 the executable statements within each of the task routines 1211 the analysis routine 1210 to analyze those of the task routines 1211 to identify the embarrassingly parallel execution by the GPUs 1650 which can be compiled into at least a subset of the node devices 1500 can be integrated. Those of the task routines 1211 that for the GPUs 1650 can be compiled by the processor 1350 in appropriate GPU task routines 1671 compiled by the GPUs 1650 can be executed. However, those of the task routines can 1211 that for the GPUs 1650 so can not be compiled by the processor 1350 in corresponding CPU task routines 1571 compiled by the CPUs 1550 the node devices 1500 can be executed. The processor 1350 can then be caused to the one or more CPU task routines 1571 and / or the one or more GPU task routines 1671 for the at least one initial task to the selected one of the node devices 1500 as part of the assignment of the at least one initial task.

Beim Ausführen der Steuerroutine 1540 kann die CPU 1550 von jeder der ausgewählten der Knotenvorrichtungen 1500 die eine oder mehreren CPU-Taskroutinen 1571 und/oder die eine oder mehreren GPU-Taskroutinen 1671 für die wenigstens eine anfängliche Aufgabe empfangen und speichern, sowie wenigstens eine der anfänglich verteilten Datensatzpartitionen 1131. Wenn eine CPU-Taskroutine 1571 empfangen wird, kann die CPU 1550 veranlasst werden, die CPU-Taskroutine 1571 auszuführen, um eine Aufgabe mit der wenigstens einen empfangenen Datensatzpartition 1131 durchzuführen. Wenn eine GPU-Taskroutine 1671 empfangen wird, kann die CPU 1550 veranlasst werden, die GPU-Taskroutine 1671 an die GPU 1650 innerhalb des Grafikcontrollers 1600 der Knotenvorrichtung 1500 zusammen mit der wenigstens einen empfangenen Datensatzpartition 1131 weiterzuleiten, wobei die GPU 1650 durch die Steuerroutine 1640 veranlasst werden kann, die GPU-Taskroutine 1671 auszuführen, um eine Aufgabe mit der wenigstens einen empfangenen Datensatzpartition 1131 durchzuführen.When executing the control routine 1540 can the CPU 1550 from each of the selected ones of the node devices 1500 the one or more CPU task routines 1571 and / or the one or more GPU task routines 1671 for the at least one initial task, and at least one of the initially distributed record partitions 1131 , When a CPU task routine 1571 is received, the CPU can 1550 be initiated, the CPU task routine 1571 execute a task with the at least one received record partition 1131 perform. When a GPU task routine 1671 is received, the CPU can 1550 be initiated, the GPU task routine 1671 to the GPU 1650 within the graphics controller 1600 the node device 1500 along with the at least one received record partition 1131 forward, with the GPU 1650 through the control routine 1640 can be initiated, the GPU task routine 1671 execute a task with the at least one received record partition 1131 perform.

Unabhängig davon, ob die CPU 1550 oder eine GPU 1650 von jeder Knotenvorrichtung 1500 eine Aufgabe mit einer entsprechenden Datensatzpartition 1131 durchführt, kann die CPU 1550 und/oder die GPU 1650 veranlasst werden, wiederkehrend einen entsprechenden der Knotenstatus 1535 mit Anzeigen zu aktualisieren, welche Aufgabe(n) aktuell durchgeführt wird/werden und/oder des Ausmaßes, in dem verschiedene Ressourcen aktuell als Ergebnis zur Verfügung stehen. Die CPU 1550 von jeder Knotenvorrichtung 1500 kann durch eine weitere Ausführung der Steuerroutine 1540 veranlasst werden, den entsprechenden Knotenstatus 1535 wiederkehrend an die Koordinierungsvorrichtung 1300 zu übertragen.Regardless of whether the CPU 1550 or a GPU 1650 from each node device 1500 a task with a corresponding record partition 1131 performs, the CPU can 1550 and / or the GPU 1650 causing a corresponding of the node status 1535 update with ads which task (s) is currently being performed and / or the extent to which various resources are currently available as a result. The CPU 1550 from each node device 1500 can by another execution of the control routine 1540 be prompted for the corresponding node status 1535 returning to the coordinator 1300 transferred to.

Bei einer weiteren Ausführung der Steuerroutine 1340 kann der Prozessor 1350 der Koordinierungsvorrichtung 1300 die Anzeigen in den wiederkehrend empfangenen Knotenstatus 1535 der aktuell ausgeführten Aufgaben und/oder der aktuellen Ausmaße der Verfügbarkeit verschiedener Ressourcen innerhalb jeder Knotenvorrichtung 1500 einsetzen, um die Zeit zu bestimmen, die erforderlich ist, um verschiedene Aufgaben abzuschließen. Der Prozessor 1350 kann Anzeigen von derartigen Zeitdauern speichern, die für jede Aufgabe als Teil der Aufgabenverzögerungsdaten 1535 erforderlich sind. Wenn eine oder mehrere der Knotenvorrichtungen 1500 früher zugewiesene Aufgaben abschließen, kann der Prozessor 1350 veranlasst werden, solche gespeicherten Anzeigen von Zeitdauern einzusetzen, um eine vorbestimmte Zeitperiode zu bestimmen, um die die Zuweisung einer oder mehrerer nächster Aufgaben an eine oder mehrere der Knotenvorrichtungen 1500 verzögert werden soll.In a further embodiment of the control routine 1340 can the processor 1350 the coordinator 1300 the ads in the recurrently received node status 1535 the currently running tasks and / or the current levels of availability of various resources within each node device 1500 to determine the time required to complete various tasks. The processor 1350 may store indications of such durations as for each task as part of the task delay data 1535 required are. If one or more of the node devices 1500 To complete previously assigned tasks, the processor may 1350 to set such stored indications of durations to determine a predetermined period of time to assign the one or more next tasks to one or more of the node devices 1500 should be delayed.

Derartige Verzögerungen bei der Zuweisung der nächsten Aufgaben können die Zuweisung dieser nächsten Aufgaben an diejenigen der Knotenvorrichtungen 1500 in einer Weise ermöglichen, die bestimmte Datensatzpartitionen 1131 nutzt, die bereits innerhalb der Speicher 1560 und/oder 1660 von einer oder mehreren der Knotenvorrichtungen 1500 gespeichert sind. Ferner kann dies die zeitlich begrenzte Speicherung von Datensatzpartitionen 1131 innerhalb der flüchtigen Speicher 1561 und/oder 1661 nutzen und kann den Austausch von Datensatzpartitionen 1131 durch das Netz 1999 minimieren, der längere Zeitdauern verbrauchen kann als die Längen der Verzögerungen bei der Zuweisung der nächsten Aufgaben. Weiterhin können in Ausführungsformen, in denen bestimmte Datensatzpartitionen 1131 ursprünglich an Knotenvorrichtungen zugewiesen wurden, die eine oder mehrere GPUs 1650 integrieren, wobei sowohl die früher zugewiesenen Aufgaben als auch die nächsten Aufgaben unter Verwendung der einen oder mehreren GPUs 1650 durchgeführt werden sollen, derartige Verzögerungen bei der Zuweisung von nächsten Aufgaben Instanzen minimieren, bei denen die nächsten Aufgaben veranlasst werden, in anderen Knotenvorrichtungen verarbeitet zu werden, die keine GPU 1650 integrieren, so dass eine oder mehrere CPUs 1550 veranlasst werden, die nächsten Aufgaben durchzuführen.Such delays in the assignment of the next tasks may be assigned to those of the node devices 1500 in a way that allows specific record partitions 1131 that already works within the memory 1560 and or 1660 from one or more of the node devices 1500 are stored. Furthermore, this may be the time-limited storage of record partitions 1131 within the volatile memory 1561 and or 1661 use and can exchange record partitions 1131 through the net 1999 which can consume longer durations than the lengths of the delays in assigning the next tasks. Furthermore, in embodiments where certain data set partitions 1131 originally assigned to node devices containing one or more GPUs 1650 integrating both the previously assigned tasks and the next tasks using the one or more GPUs 1650 such delays in the allocation of next task instances minimize, where the next tasks are caused to be processed in other node devices that do not have a GPU 1650 integrate so that one or more CPUs 1550 be prompted to carry out the next tasks.

Unter Bezugnahme auf 13B ist die Zuweisung von Aufgaben an ausgewählte der Knotenvorrichtungen 1500 im Wesentlichen dem Ausführungsbeispiel der Zuweisung von Aufgaben aus 13A ähnlich, mit der Ausnahme, dass die Kompilierung der Taskroutinen 1211 der Analyseroutine 1210 innerhalb der ausgewählten Knotenvorrichtungen 1500 statt innerhalb der Koordinierungsvorrichtung 1300 auftreten kann. Insbesondere kann bei der Ableitung von anfänglichen Zuweisungen von wenigstens einer anfänglichen Aufgabe der Analyseroutine 1210 an die ausgewählten Knotenvorrichtungen 1500 der Prozessor 1350 der Koordinierungsvorrichtung 1300 die Taskroutine(n) 1211 der wenigstens einen anfänglichen Aufgabe an die ausgewählten Knotenvorrichtungen 1500 anstelle von CPU-Taskroutinen 1571 oder GPU-Taskroutinen 1671 verteilen. Die CPU 1550 von jedem der ausgewählten Knoten 1500 kann die Kompilierroutine 1440 ausführen, um die verteilte(n) Taskroutine(n) 1211 zu kompilieren, um die entsprechende(n) CPU-Taskroutine(n) 1571 und/oder GPU-Taskroutine(n) 1671 innerhalb der ausgewählten Knotenvorrichtungen 1500 zu erzeugen, statt dass der Prozessor 1350 der Koordinierungsvorrichtung 1300 dies tut.With reference to 13B is the assignment of tasks to selected ones of the node devices 1500 essentially the embodiment of the assignment of tasks 13A similar, except that the compilation of the task routines 1211 the analysis routine 1210 within the selected node devices 1500 instead of within the coordinator 1300 can occur. In particular, in deriving initial assignments from at least one initial task of the analysis routine 1210 to the selected node devices 1500 the processor 1350 the coordinator 1300 the task routine (s) 1211 the at least one initial task to the selected node devices 1500 instead of CPU task routines 1571 or GPU task routines 1671 to distribute. The CPU 1550 from each of the selected nodes 1500 can the compile routine 1440 execute the distributed task routine (s) 1211 to compile the appropriate CPU task routine (s) 1571 and / or GPU Task Routine (s) 1671 within the selected node devices 1500 instead of the processor 1350 the coordinator 1300 this does.

14A, 14B und 14C veranschaulichen zusammen ein Ausführungsbeispiel einer Zuweisung von Aufgaben, die als Teil der Ausführung einer Analyseroutine durchgeführt werden sollen, an ausgewählte der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005. 14A und 14B veranschaulichen die Sammlung und Verwendung von Daten, die mit einer Analyseroutine 1210, den Metadaten 1135 eines Datensatzes 1130 und/oder Knotenstatus 1535 assoziiert sind, die von den Knotenvorrichtungen 1500 bereitgestellt werden, um die Zuweisungen abzuleiten. 14C veranschaulicht die Verteilung der Taskroutinen 1211, 1571 und/oder 1671 an die ausgewählten Knotenvorrichtungen 1500. 14A . 14B and 14C together illustrate an embodiment of assigning tasks to be performed as part of the execution of an analysis routine to selected ones of the node devices 1500 of the node device grid 1005 , 14A and 14B illustrate the collection and use of data with an analysis routine 1210 , the metadata 1135 a record 1130 and / or node status 1535 associated with the node devices 1500 provided to derive the assignments. 14C illustrates the distribution of task routines 1211 . 1571 and or 1671 to the selected node devices 1500 ,

Unter Bezugnahme auf 14A, wie dargestellt, kann die Steuerroutine 1340, die durch den Prozessor 1350 der Koordinierungsvorrichtung 1300 ausgeführt wird, eine Überwachungskomponente 1345 einschließen, um zu bewirken, dass der Prozessor 1350 wiederkehrend die Netzschnittstelle 1390 betreibt, um die Knotenstatus 1535 zu empfangen, die wiederkehrend von jedem der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 über das Netz 1999 übertragen werden können. In einigen Ausführungsformen kann jede der Knotenvorrichtungen 1500 wiederkehrend einen Knotenstatus 1535 in einem regelmäßigen Zeitintervall und unabhängig von anderen laufenden Aktivitäten als eine Form des „Heartbeat-Signals” an die Koordinierungsvorrichtung 1300 übertragen, der fortgesetzte Funktionalität anzeigt, sowie Informationen über aktuell verfügbare Ressourcen und/oder aktuelle Aktivitäten übermittelt. In derartigen Ausführungsformen kann ein fehlender Empfang des Knotenstatus 1535 durch die Koordinierungsvorrichtung 1300 von einer Knotenvorrichtung 1500, wenn erwartet, als eine Anzeige einer Fehlfunktion durch die Knotenvorrichtung 1500 genommen werden, so dass die Ressourcen der Knotenvorrichtung als nicht verfügbar angesehen werden können, und jede Aufgabe, die aktuell zugewiesen ist, kann einer anderen Knotenvorrichtung 1500 zugewiesen werden.With reference to 14A as shown, the control routine 1340 that through the processor 1350 the coordinator 1300 is executed, a monitoring component 1345 to cause the processor 1350 recurring the network interface 1390 operates to the node status 1535 to receive the recurring from each of the node devices 1500 of the node device grid 1005 over the net 1999 can be transmitted. In some embodiments, each of the node devices may 1500 Recurring a node status 1535 at a regular time interval and independent of other ongoing activities as a form of "heartbeat signal" to the coordinator 1300 which displays continued functionality, and communicates information about currently available resources and / or current activities. In such embodiments, a lack of reception of the node status 1535 through the coordinator 1300 from a node device 1500 when expected, as an indication of malfunction by the node device 1500 may be taken so that the resources of the node device may be considered unavailable and any task currently assigned may be to another node device 1500 be assigned to.

Wie auch dargestellt, kann die Steuerroutine 1340 auch eine Zuweisungskomponente 1341 einschließen, um zu bewirken, dass der Prozessor 1350 Datensatzpartitionen 1131 eines Datensatzes 1130 zusammen mit Aufgaben einer Analyseroutine 1210, die mit den zugewiesenen Datensatzpartitionen 1131 durchgeführt werden, an ausgewählte der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 zuweist. Zur Vorbereitung derartiger Zuweisungen kann der Prozessor 1350 veranlasst werden, die Netzschnittstelle 1390 zu betreiben, um die Metadaten 1135 des Datensatzes 1130 sowie die Analyseroutine 1210 von einer oder mehreren anderen Vorrichtungen über das Netz 1999 zur Verwendung durch die Zuweisungskomponente 1341 abzurufen. In Ausführungsformen, in denen das verteilte Verarbeitungssystem 1000 eine oder mehrere unterschiedliche Speichervorrichtungen 1100 einschließt (wie beispielsweise das beispielhafte verteilte Verarbeitungssystem 1000 aus 11A), können die Metadaten 1135 und/oder die Analyseroutine 1210 an die Koordinierungsvorrichtung 1300 über das Netz 1999 von der einen oder den mehreren Speichervorrichtungen 1100 bereitgestellt werden. In Ausführungsformen, in denen das verteilte Verarbeitungssystem 1000 jedoch keine derartigen unterschiedlichen Speichervorrichtungen einschließt und die Knotenvorrichtungen 1500 eine verteilte Speicherung von Datensätzen 1130 bereitstellen (wie beispielsweise das beispielhafte verteilte Verarbeitungssystem 1000 aus 11B), können die Metadaten 1135 und/oder die Analyseroutine 1210 an die Koordinierungsvorrichtung 1300 über das Netz 1999 von einer oder mehreren der Knotenvorrichtungen 1500 bereitgestellt werden.As also shown, the control routine 1340 also an assignment component 1341 to cause the processor 1350 Record partitions 1131 a record 1130 along with tasks of an analysis routine 1210 that with the assigned record partitions 1131 to selected ones of the node devices 1500 of the node device grid 1005 assigns. To prepare such assignments, the processor 1350 be initiated, the network interface 1390 to operate the metadata 1135 of the record 1130 as well as the analysis routine 1210 from one or more other devices via the network 1999 for use by the assignment component 1341 retrieve. In embodiments in which the distributed processing system 1000 one or more different storage devices 1100 includes (such as the exemplary distributed processing system 1000 out 11A ), the metadata can 1135 and / or the analysis routine 1210 to the coordinator 1300 over the net 1999 from the one or more storage devices 1100 to be provided. In embodiments in which the distributed processing system 1000 however, does not include such different memory devices and the node devices 1500 a distributed storage of records 1130 (such as the exemplary distributed processing system 1000 out 11B ), the metadata can 1135 and / or the analysis routine 1210 to the coordinator 1300 over the net 1999 from one or more of the node devices 1500 to be provided.

In noch anderen Ausführungsformen kann die Betrachtungsvorrichtung 1800 der Koordinierungsvorrichtung 1300 die Analyseroutine 1210 bereitstellen. In derartigen Ausführungsformen kann die Betrachtungsvorrichtung 1800 eine Benutzerschnittstelle bereitstellen, durch die die Betrachtungsvorrichtung 1800 gesteuert werden kann, um einen Befehl an die Koordinierungsvorrichtung 1300 über das Netz 1999 zu übertragen, um die Ausführung der Analyseroutine 1210 in einer verteilten Weise zu veranlassen, um eine Analyse mit dem Datensatz 1130 durchzuführen. Teil des Übertragens des Befehls an die Koordinierungsvorrichtung 1300 kann die Übertragung der Analyseroutine 1210 von der Betrachtungsvorrichtung 1700 an die Koordinierungsvorrichtung 1300 sein.In still other embodiments, the viewing device 1800 the coordinator 1300 the analysis routine 1210 provide. In such embodiments, the viewing device 1800 provide a user interface through which the viewing device 1800 can be controlled to send a command to the coordinator 1300 over the net 1999 to transfer the execution of the analysis routine 1210 in a distributed manner to initiate an analysis with the record 1130 perform. Part of transmitting the command to the coordinator 1300 may be the transmission of the analysis routine 1210 from the viewing device 1700 to the coordinator 1300 be.

Wie ferner dargestellt, kann in Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompilieren soll, die Kompilierroutine 1440 durch den Prozessor 1350 ausgeführt werden und kann eine Analysekomponente 1441 einschließen, um diejenigen der Taskroutinen 1211 zu identifizieren, die zugänglich für die Umwandlung und Kompilierung für eine peinlich parallele Ausführung durch eine oder mehrere GPUs 1650 sind. Hierzu kann die Analysekomponente 1441 auch auf die empfangene Analyseroutine 1210 zugreifen, ebenso wie die Zuweisungskomponente 1341 der Steuerroutine 1340.As further shown, in embodiments where the coordinating device 1300 the task routines 1211 the analysis routine 1210 compile, the compile routine 1440 through the processor 1350 and can be an analysis component 1441 include those of the task routines 1211 to identify, accessible for conversion and compilation for embarrassing parallel execution by one or more GPUs 1650 are. For this purpose, the analysis component 1441 also to the received analysis routine 1210 access, as well as the assignment component 1341 the control routine 1340 ,

Unter Bezugnahme auf 14B, wie dargestellt, können die Knotenstatus 1535 angeben, welche Verarbeitungs-, Speicher- und/oder Netzzugriffsressourcen in jede Knotenvorrichtung 1500 integriert sind. Wie bereits erwähnt, können die Knotenstatus 1535 wiederkehrend aktualisiert werden, um auch das aktuelle Ausmaß der gegenwärtigen Verfügbarkeit (z. B. den aktuellen Prozentsatz der Nutzung) jeder derartigen Ressource anzugeben.With reference to 14B As shown, the node states 1535 indicate which processing, storage and / or network access resources in each node device 1500 are integrated. As mentioned earlier, the node statuses 1535 be updated on a recurring basis to also indicate the current extent of the current availability (e.g., the current percentage of usage) of each such resource.

Beispielhaft können die Knotenstatus 1535 Anzeigen von Mengen, Typen, Versionen und/oder anderen internen Architekturdetails der Prozessoren bereitstellen, die in jede der Knotenvorrichtungen 1500 integriert sein können. Somit können die Knotenstatus 1535 für jede Knotenvorrichtung 1500 die Mengen an vorhandenen CPUs 1550 und/oder GPUs 1650 sowie Typinformationen für jeden Prozessor angeben, einschließlich unter anderem Anweisungssatzkompatibilität, Revisionsstand, Cachegröße(n), Menge an Verarbeitungskernen und/oder Menge an Threads, die pro Verarbeitungskern ausgeführt werden können. Wie detaillierter erläutert wird, kann die Bereitstellung derartiger Informationen dazu beitragen, einen heterogenen Satz von Knotenvorrichtungen 1500 innerhalb des Knotenvorrichtungsgitters 1005 zu unterstützen, die eine Vielzahl von verschiedenen Prozessoren unter ihnen nutzen. Zusammen mit Informationen über Verarbeitungsressourcen, die in jede der Knotenvorrichtungen 1500 integriert sind, können die Knotenstatus 1535 wiederkehrend aktualisiert werden, um Anzeigen für die aktuellen Nutzungsniveaus von verschiedenen Prozessoren (z. B. unterschiedlichen CPUs 1550 und/oder GPUs 1650 innerhalb einer einzelnen Knotenvorrichtung 1500), aktuellen Nutzungsniveaus von Threads und/oder aktuellen Nutzungsniveaus von anderen bestimmten Verarbeitungsmerkmalen (z. B. Nutzungsniveaus von beliebigen spezialisierten Verarbeitungskernen, Logikeinheiten, Erweiterungen zu Anweisungssätzen, verschiedenen Levels von Cache usw.) bereitzustellen.By way of example, the node statuses 1535 To provide displays of quantities, types, versions, and / or other internal architectural details of the processors included in each of the node devices 1500 can be integrated. Thus, the node statuses 1535 for each node device 1500 the amounts of existing CPUs 1550 and / or GPUs 1650 and specify type information for each processor, including, but not limited to, instruction set compatibility, revision level, cache size (s), amount of processing cores, and / or amount of threads that can be executed per processing core. As will be explained in more detail, the provision of such information may help to provide a heterogeneous set of node devices 1500 within the node device grid 1005 to support a variety of different processors among them. Along with information about processing resources flowing into each of the node devices 1500 can be integrated, the node status 1535 be refreshed periodically to display for the current usage levels of different processors (eg different CPUs 1550 and / or GPUs 1650 within a single node device 1500 ) to provide current usage levels of threads and / or current usage levels of other particular processing features (eg, usage levels of any specialized processing cores, logic units, statements of instruction sets, various levels of cache, etc.).

Ebenso beispielhaft können die Knotenstatus 1535 Anzeigen für Speicherkapazitäten der flüchtigen Speicher 1561 und/oder 1661 und/oder des nicht-flüchtigen Speichers 1563 bereitstellen, die in jede der Knotenvorrichtungen 1500 integriert sein können. Somit können die Knotenstatus 1535 für jede Knotenvorrichtung 1500 Mengen und/oder verschiedene Parameter von Speicherkomponenten angeben, die verwendet werden, um jeden der Speicher 1561, 1661 und/oder 1563 zu implementieren, einschließlich unter anderem Typen von verwendeten Schnittstellen, Seiten- und/oder Zeilengrößen, Zugriffsgeschwindigkeiten und/oder -latenzen und/oder verwendeter Speichertechnologien. Zusammen mit Informationen bezüglich der Speicherressourcen, die in jede der Knotenvorrichtungen 1500 integriert sind, können die Knotenstatus 1535 wiederkehrend aktualisiert werden, um Anzeigen für die aktuellen Nutzungsniveaus von verschiedenen flüchtigen und/oder nicht-flüchtigen Speichern bereitzustellen.Likewise by way of example, the node statuses 1535 Ads for volatile storage capacities 1561 and or 1661 and / or non-volatile memory 1563 provide in each of the node devices 1500 can be integrated. Thus, the node statuses 1535 for each node device 1500 Specify quantities and / or various parameters of storage components that are used to store each of them 1561 . 1661 and or 1563 including, but not limited to, types of interfaces used, page and / or line sizes, access speeds and / or latencies, and / or storage technologies used. Along with information regarding the memory resources that are in each of the node devices 1500 can be integrated, the node status 1535 are updated on a recurring basis to provide indications of the current usage levels of various volatile and / or non-volatile memories.

Ferner beispielhaft können die Knotenstatus 1535 Anzeigen von Netzzugriffsfähigkeiten und/oder Bandbreiten der Netzschnittstelle(n) 1590 bereitstellen, die in jede der Knotenvorrichtungen 1500 integriert sein können. Somit können die Knotenstatus 1535 für jede Knotenvorrichtung 1500 unterstützte drahtgebundene und/oder drahtlose Netzschnittstellen, unterstützte Protokolle, Eingabe- und/oder Ausgabepuffergrößen usw. angeben. Zusammen mit Informationen bezüglich der Netzzugriffsressourcen, die in jede der Knotenvorrichtungen 1500 integriert sind, können die Knotenstatus 1535 wiederkehrend aktualisiert werden, um Anzeigen für die aktuellen Nutzungsniveaus der Bandbreite und/oder Puffer für jede Schnittstelle bereitzustellen.Further, by way of example, the node statuses 1535 Display Network Access Capabilities and / or Bandwidths of the Network Interface (s) 1590 provide in each of the node devices 1500 can be integrated. Thus, the node statuses 1535 for each node device 1500 provide supported wired and / or wireless network interfaces, supported protocols, input and / or output buffer sizes, and so forth. Along with information regarding the network access resources entering each of the node devices 1500 can be integrated, the node status 1535 are updated on a recurring basis to provide indications of the current usage levels of bandwidth and / or buffers for each interface.

Wie auch dargestellt, können die Metadaten 1135 Anzeigen für verschiedene strukturelle Merkmale bereitstellen, durch die Datenelemente innerhalb des Datensatzes 1130 organisiert werden können und/oder auf sie zugegriffen werden kann. Beispielsweise können die Metadaten 1135 Anzeigen der Gesamtgröße, des Typs der Datenstruktur des Datensatzes 1130 (z. B. Binärbaum, mehrdimensionales Array, verknüpfte Liste usw.), Datentyp(en) der Datenelemente (z. B. Gleitkomma, Ganzzahl, Textzeichen usw.), Aspekte des Indexierungsschemas, das für den Zugriff auf Datenelemente verwendet wird (z. B. Anzahl der Dimensionen, verwendete Kennzeichnungen usw.), und/oder noch weitere strukturelle Aspekte einschließen. Auch können die Metadaten 1135 beispielsweise Anzeigen für verschiedene Einschränkungen für die Art und Weise, in der der Datensatz 1130 in die Datensatzpartitionen 1131 aufgeteilt werden können, einschließen, wie beispielsweise ein beliebiges Partitionierungsschema, in das die Datenelemente des Datensatzes 1130 bereits organisiert sind, und/oder eine minimale Größe der kleinsten atomaren Einheit von Daten, in die der Datensatz 1130 partitioniert werden kann, die noch eine unabhängige Verarbeitung der resultierenden Datensatzpartitionen 1131 ermöglicht (z. B. die Größe einer Zeile oder Draw in einem zweidimensionalen Array usw.). Wie Fachleuten auf dem Gebiet bekannt ist, können derartige Beschränkungen hinsichtlich der Art und Weise, in der der Datensatz 1130 aufgeteilt werden kann, eine Obergrenze für die Menge der Datensatzpartitionen 1131, in die der Datensatz 1130 aufgeteilt werden kann, auferlegen, wodurch effektiv ein Obergrenze für die Menge der Knotenvorrichtungen 1500 auferlegt werden kann, auf die die resultierenden Datensatzpartitionen 1131 verteilt werden können.As also shown, the metadata 1135 Provide displays for various structural features through the data elements within the record 1130 can be organized and / or accessed. For example, the metadata 1135 View the total size, the type of data structure of the record 1130 (eg binary tree, multidimensional array, linked list, etc.), data type (s) of the data elements (eg, floating point, integer, text character, etc.), aspects of Indexing schemes used to access data elements (eg, number of dimensions, labels used, etc.), and / or other structural aspects. Also, the metadata can 1135 For example, ads for various restrictions on the way in which the record is 1130 into the record partitions 1131 include, such as any partitioning scheme, into which the data elements of the record 1130 are already organized, and / or a minimum size of the smallest atomic unit of data in which the dataset 1130 can be partitioned, which still requires independent processing of the resulting record partitions 1131 allows (for example, the size of a line or draw in a two-dimensional array, etc.). As is known to those skilled in the art, such limitations may exist with regard to the manner in which the data set 1130 can be split, an upper limit on the set of record partitions 1131 into which the record 1130 can be allocated, thereby effectively setting an upper limit on the amount of node devices 1500 can be imposed on the resulting record partitions 1131 can be distributed.

Die Analyseroutine 1210 kann in eine beliebige Anzahl von Taskroutinen 1211 aufgeteilt werden, die jeweils Anweisungen einschließen, die Aspekte einer entsprechenden Aufgabe angeben, die als Ergebnis der Ausführung dieser Taskroutine 1211 als Teil der Ausführung der Analyseroutine 1210 durchgeführt werden soll. Die Anweisungen innerhalb jeder der verschiedenen Taskroutinen 1211 können Anzeigen von erforderlichen Verarbeitungsressourcen (z. B. ob Unterstützung für eine bestimmte Erweiterung zu einem Anweisungssatz erforderlich ist) und/oder Speicherkapazitäten, die erforderlich sind, um Datenstrukturen zu unterstützen, die während der Ausführung instanziiert werden, bereitstellen. Die Analyseroutine 1210 kann auch Anzeigen für eine Reihenfolge bereitstellen, in der die Taskroutinen 1211 ausgeführt werden sollen. Alternativ oder zusätzlich kann die Analyseroutine 1210 Definitionen von Eingaben, die für die Durchführung jeder Aufgabe erforderlich sind, und/oder Definitionen von Ausgaben, die durch jede Aufgabe erzeugt werden, einschließen. Die Bereitstellung von Anzeigen einer Reihenfolge, in der die Taskroutinen 1211 ausgeführt werden sollen, können Anzeigen von Abhängigkeiten zwischen den Taskroutinen 1211 einschließen, wie beispielsweise Anzeigen darüber, wo eine Ausgabe einer Taskroutine 1211 vorhanden ist, die als eine Eingabe für eine andere Taskroutine 1211 erforderlich ist. Die Bereitstellung von Anzeigen von erforderlichen Eingaben und/oder Ausgaben, die erzeugt werden sollen, kann Teil einer Implementierung einer Many-Task-Computing(MTC)-Architektur sein, bei der die Aufgaben der Analyseroutine 1210 jeweils unabhängig voneinander ausgedrückt werden, wenigstens durch ihre Eingaben und Ausgaben, um wenigstens eine Teilmenge der Aufgaben der Analyseroutine 1210 für eine peinlich parallele Ausführung zugänglich zu machen.The analysis routine 1210 can work in any number of task routines 1211 each containing instructions that indicate aspects of a corresponding task that result from the execution of this task routine 1211 as part of the execution of the analysis routine 1210 to be carried out. The instructions within each of the various task routines 1211 may provide indication of required processing resources (eg, whether support for a particular instruction set extension is needed) and / or storage capacities required to support data structures instantiated during execution. The analysis routine 1210 can also provide displays for an order in which the task routines 1211 to be executed. Alternatively or additionally, the analysis routine 1210 Definitions of inputs required to perform each task and / or definitions of outputs generated by each task. Providing ads of an order in which the task routines 1211 You can display dependencies between the task routines 1211 such as displaying where an output of a task routine 1211 that is present as an input to another task routine 1211 is required. The provision of indications of required inputs and / or outputs to be generated may be part of an implementation of a many-task-computing (MTC) architecture that performs the tasks of the analysis routines 1210 are expressed independently of each other, at least by their inputs and outputs, by at least a subset of the tasks of the analysis routine 1210 for an embarrassingly parallel execution.

Die Art und Weise, in der Definitionen von Eingaben und/oder Ausgaben, Anzeigen der Reihenfolge der Aufgabenausführung und/oder Anzeigen von Abhängigkeiten bereitgestellt werden, kann abhängig von Attributen der Programmiersprache(n) variieren, in der die Analyseroutine 1210 erzeugt wird. Beispielhaft können in einigen Ausführungsformen Deklarationsheader für diejenigen der Taskroutinen 1211, die als aufrufbare Funktionen in einer Weise geschrieben sind, die den Konventionen einer ausgewählten Programmiersprache folgt, ausreichend sein, um derartige Definitionen bereitzustellen. Jedoch kann in anderen Ausführungsformen eine unterschiedliche Datei oder andere Datenstruktur entweder innerhalb der Analyseroutine 1210 oder die Analyseroutine 1210 begleitend erzeugt werden, um derartige Definitionen und/oder Anzeigen bereitzustellen. Insbesondere kann beispielhaft ein Array erzeugt werden, in dem jeder Eintrag erforderliche Eingaben, Ausgaben, die erzeugt werden sollen, und/oder eine Position innerhalb einer Reihenfolge der Ausführung angibt. Unabhängig von der genauen Art und Weise, in der Definitionen von Eingaben und/oder Ausgaben und/oder Anzeigen von Abhängigkeiten und/oder die Reihenfolge in einer Datei oder einer anderen Datenstruktur dargestellt sind, können in einigen Ausführungsformen derartige Definitionen und/oder Anzeigen eine Darstellung eines gerichteten azyklischen Graphen (Directed Acyclic Graph, DAG) der Aufgaben der Analyseroutine 1210 ausbilden.The manner in which definitions of inputs and / or outputs, showing the order of execution of tasks, and / or displaying dependencies, may vary depending on attributes of the programming language (s) in which the analysis routine 1210 is produced. By way of example, in some embodiments, declaration headers may be for those of the task routines 1211 that are written as callable functions in a manner that follows the conventions of a selected programming language should be sufficient to provide such definitions. However, in other embodiments, a different file or other data structure may exist either within the analysis routine 1210 or the analysis routine 1210 concomitantly to provide such definitions and / or indications. In particular, an array may be generated by way of example in which each entry indicates required inputs, outputs to be generated, and / or a position within an order of execution. Regardless of the precise manner in which definitions of inputs and / or outputs and / or dependency representations and / or order are presented in a file or other data structure, in some embodiments such definitions and / or displays may be illustrative of a directed acyclic graph (DAG) of the tasks of the analysis routine 1210 form.

Beim Ausführen der Zuweisungskomponente 1341 kann der Prozessor 1350 veranlasst werden, die Knotenstatus 1535, die Metadaten 1135 und/oder Teile der Analyseroutine 1210 zu verwenden, um anfängliche Zuweisungen von wenigstens einer anfänglichen Aufgabe der Analyseroutine 1210 an ausgewählte der Knotenvorrichtungen 1500 und eine anfängliche Verteilung von wenigstens einer Datensatzpartition 1131 an jede der ausgewählten der Knotenvorrichtungen 1500 abzuleiten. Bei der Ableitung derartiger anfänglicher Zuweisungen kann der Prozessor 1350 veranlasst werden, anufänglich die Art und Weise abzuleiten, in der der Datensatz 1130 in Datensatzpartitionen 1131 aufgeteilt werden soll, wenigstens teilweise basierend auf irgendwelchen angegebenen Einschränkungen dabei, die innerhalb der Metadaten 1135 vorhanden sein können, und/oder auf der Anzahl der Knotenvorrichtungen 1500, die gegenwärtig als ausreichend Speicherressourcen aufweisend in den Knotenstatus 1535 angezeigt sind. Der Prozessor 1350 kann alternativ oder zusätzlich veranlasst werden, die ausführbaren Anweisungen innerhalb einer oder mehrerer der Taskroutinen 1211 der Analyseroutine 1210 zu analysieren, um eine oder mehrere bestimmte erforderliche Verarbeitungsressourcen zu identifizieren (z. B. Gleitkomma-Mathematik, Single-Instruction-Multiple-Data(SIMD)-Anweisungsunterstützung usw.), und kann einen der Knoten 1500 auswählen, dem eine anfängliche Aufgabe bzw. anfängliche Aufgaben basierend auf Anzeigen in den Knotenstatus 1535 von denjenigen der Knotenvorrichtungen 1500, die gegenwärtig derartige Verarbeitungsressourcen als verfügbar aufweisen, zugewiesen werden soll(en). Unabhängig von der exakten Logik, die bei der Ableitung der anfänglichen Zuweisungen von Aufgaben und/oder Datensatzpartitionen 1131 an die ausgewählten der Knotenvorrichtungen 1500 verwendet wird, kann der Prozessor 1350 Anzeigen derartiger anfänglicher Zuweisungen als Teil der Zuweisungsdaten 1330 speichern.When executing the assignment component 1341 can the processor 1350 be initiated, the node status 1535 , the metadata 1135 and / or parts of the analysis routine 1210 to use initial assignments of at least one initial task of the analysis routine 1210 to selected ones of the node devices 1500 and an initial distribution of at least one record partition 1131 to each of the selected ones of the node devices 1500 derive. In deriving such initial assignments, the processor may 1350 be prompted to deduce the way in which the record is made 1130 in record partitions 1131 to be split, at least in part, based on any specified constraints, within the metadata 1135 may be present, and / or on the number of node devices 1500 currently having sufficient memory resources in the node status 1535 are displayed. The processor 1350 Alternatively or additionally, the executable instructions may be initiated within one or more of the task routines 1211 of the analysis routine 1210 to identify one or more particular required processing resources (eg, floating-point math, single-instruction-multiple-data (SIMD) instruction support, etc.), and may be one of the nodes 1500 Select an initial task or tasks based on views in the node status 1535 from those of the node devices 1500 that currently have such processing resources as available should be assigned. Regardless of the exact logic used in deriving the initial assignments of tasks and / or record partitions 1131 to the selected one of the node devices 1500 used, the processor can 1350 Displaying such initial assignments as part of the assignment data 1330 to save.

In Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompilieren soll, kann die Koordinierungsvorrichtung 1300 die Kompilierregeln 1434 zur Verwendung bei der Ausführung der Kompilierroutine 1440 durch den Prozessor 1350 speichern. Die Kompilierregeln 1434 können verschiedene Aspekte des Kompilierens von Taskroutinen 1211 der Analyseroutinen 1210 spezifizieren, um die CPU-Taskroutinen 1571 zur Ausführung durch eine oder mehrere der CPUs 1550 und/oder die GPU-Taskroutinen 1671 zur Ausführung durch eine oder mehrere der GPUs 1650 zu erzeugen. Unter dem, was durch die Kompilierregeln 1434 spezifiziert wird, können auch Aspekte der Umwandlung von Anweisungen der Taskroutinen 1211, die ursprünglich nicht erzeugt wurden, um die peinlich parallelen Ausführungsfähigkeiten der GPUs 1650 zu nutzen (durch die Bereitstellung einer relativ großen Menge von Threads der Ausführung), in Anweisungen sein, die dazu erzeugt werden. Somit können die Kompilierregeln 1434 Aspekte der Umwandlung und Kompilierung von Anweisungen von Taskroutinen 1211, die ursprünglich für die Ausführung durch die CPUs 1550 erzeugt wurden, in Anweisungen, die für die Ausführung durch die GPUs 1650 erzeugt werden, spezifizieren.In embodiments in which the coordinating device 1300 the task routines 1211 the analysis routine 1210 should be able to compile the coordinating device 1300 the compilation rules 1434 for use in executing the compile routine 1440 through the processor 1350 to save. The compilation rules 1434 can different aspects of compiling task routines 1211 the analysis routines 1210 specify the CPU task routines 1571 for execution by one or more of the CPUs 1550 and / or the GPU task routines 1671 for execution by one or more of the GPUs 1650 to create. Under what, by the compilation rules 1434 may also be aspects of transforming instructions of the task routines 1211 that were not originally created to handle the embarrassingly parallel execution capabilities of the GPUs 1650 to use (by providing a relatively large amount of threads of execution) in statements that are generated to it. Thus, the compilation rules 1434 Aspects of transforming and compiling instructions from task routines 1211 originally for execution by the CPUs 1550 were generated in instructions required for execution by the GPUs 1650 be generated.

Jede der einen oder mehreren CPUs 1550 von jeder der Knotenvorrichtungen 1500 kann eine interne Verarbeitungsarchitektur verwenden, die als gut geeignet für die sequentielle Verarbeitung von Taskroutinen 1211 befunden wird, die verschiedene Eingabe-/Ausgabeoperationen und/oder Verzweigungsoperationen einschließen, die die Ausführung verschiedener Sätze von Anweisungen innerhalb der Taskroutinen 1211 auf den Ergebnissen von verschiedenen Bestimmungen bedingen. Jede der CPUs 1550 kann jeweils einen oder mehrere Verarbeitungskerne 1555 umfassen (unter Bezugnahme auf 12), die jeweils einen relativ begrenzten Grad an paralleler Ausführung von Anweisungen auf einer relativ begrenzten Anzahl von Threads der Ausführung unterstützen können. Im Gegensatz dazu können die eine oder mehreren GPUs 1650, die in wenigstens einer Teilmenge der Knotenvorrichtungen 1500 vorhanden sein können, eine interne Verarbeitungsarchitektur verwenden, die für eine peinlich parallele Verarbeitung der Taskroutinen 1211 als gut geeignet erachtet wird, die einen relativ begrenzten Satz von Anweisungen für mathematische und/oder bitweise Operationen einschließen, die unabhängig voneinander ausgeführt werden können, so dass es keine Abhängigkeiten zwischen zahlreichen Instanzen einer parallel ausgeführten Taskroutine 1211 gibt. In der Tat kann in einigen Ausführungsformen jede der GPUs 1650 in der Lage sein, eine Parallelverarbeitung über Hunderte, Tausende oder eine noch größere Anzahl von Threads der Ausführung zu unterstützen.Each of the one or more CPUs 1550 from each of the node devices 1500 can use an internal processing architecture that is well-suited for the sequential processing of task routines 1211 which includes various input / output and / or branch operations involving the execution of different sets of instructions within the task routines 1211 on the results of various provisions. Each of the CPUs 1550 can each have one or more processing cores 1555 include (with reference to 12 ), each of which can support a relatively limited degree of parallel execution of instructions on a relatively limited number of threads of execution. In contrast, the one or more GPUs 1650 in at least a subset of the node devices 1500 may be present, using an internal processing architecture that allows for embarrassingly parallel processing of the task routines 1211 are considered to be well suited, including a relatively limited set of instructions for mathematical and / or bitwise operations that can be performed independently so that there are no dependencies between multiple instances of a parallel executed task routine 1211 gives. In fact, in some embodiments, each of the GPUs may 1650 to be able to support parallel processing across hundreds, thousands or even more threads of execution.

Wenn die Anweisungen einer Taskroutine 1211 zugänglich sind, für eine derartige parallele Ausführung über eine so große Anzahl von Threads hinweg umgewandelt zu werden, kann die von einer derartigen Taskroutine 1211 ausgeführte Aufgabe in wesentlich kürzerer Zeit ausführbar sein. Beispielhaft kann eine Aufgabe einer der Taskroutinen 1211, deren Durchführung unter Verwendung der CPUs 1550 der Knotenvorrichtungen 1500 mehrere Tage in Anspruch nehmen kann, stattdessen unter Verwendung der GPUs 1650 für die Durchführung nur Stunden eines einzigen Tages in Anspruch nehmen. Für Aufgaben, die unter Verwendung des begrenzteren Anweisungssatzes der GPUs 1650 implementiert werden können, kann eine einzelne der GPUs 1650 innerhalb einer einzelnen der Knotenvorrichtungen 1500 die äquivalente Arbeit zahlreicher CPUs 1550 über zahlreiche der Knoten 1500 hinweg in kürzerer Zeit mit wesentlich weniger Kostenaufwand durchführen. Eine derartige Verbesserung der Geschwindigkeit der Durchführung wird noch größer, wenn mehrere der GPUs 1650 innerhalb mehrerer der Knotenvorrichtungen 1500 parallel betrieben werden, um eine Aufgabe als eine peinlich parallele Aufgabe über die zahlreichen Threads hinweg durchzuführen, die von jeder unterstützt werden, wodurch eine noch höher parallele Form der Durchführung dieser Aufgabe bereitgestellt wird.If the instructions of a task routine 1211 can be accessed to be transformed over such a large number of threads for such a parallel execution can be that of such a task routine 1211 executed task can be executed in a much shorter time. By way of example, a task may be one of the task routines 1211 whose implementation using the CPUs 1550 the node devices 1500 can take several days, instead using the GPUs 1650 to complete only one hour per day. For tasks using the more limited instruction set of GPUs 1650 can be implemented by a single one of the GPUs 1650 within a single one of the node devices 1500 the equivalent work of many CPUs 1550 over many of the nodes 1500 in less time at a much lower cost. Such an improvement in the speed of implementation becomes even greater when more than one of the GPUs 1650 within several of the node devices 1500 operate concurrently to perform a task as an embarrassingly parallel task across the numerous threads supported by each, providing an even more highly parallel way of performing this task.

Es kann jedoch diejenigen der Taskroutinen 1211 der Analyseroutine 1210 geben, die bestimmte Anweisungen einschließen und/oder bestimmte Operationen durchführen, die die Anweisungen dieser Taskroutinen 1211 für eine derartige peinlich parallele Ausführung durch die GPUs 1650 nicht-umwandelbar und nicht-kompilierbar machen. Wie bereits erwähnt, können die GPUs 1650 einen relativ begrenzten Anweisungssatz unterstützen. Beispielhaft müssen viele Typen von Eingabe/Ausgabe-Operationen zwangsläufig in einer Einzel-Thread-Weise durchgeführt werden, da verschiedene Protokoll-Handshakes und/oder andere Merkmale eine sequentielle Durchführung von Schritten auferlegen. Infolgedessen ist vorgesehen, dass die Analyseroutine 1210 sowohl Taskroutinen 1211, in denen die Anweisungen für die Umwandlung und Kompilierung für die peinlich parallele Ausführung durch die GPUs 1650 zugänglich sind, als auch Taskroutinen 1211, in denen die Anweisungen nicht so sind, dass sie zur Ausführung durch die CPUs 1550 kompiliert werden müssen, einschließen kann.It may, however, be those of the task routines 1211 the analysis routine 1210 which include certain instructions and / or perform certain operations that follow the instructions of these task routines 1211 for such embarrassingly parallel execution by the GPUs 1650 non-convertible and non-compilable. As mentioned earlier, the GPUs 1650 support a relatively limited instruction set. By way of example, many types of input / output operations must necessarily be performed in a single thread fashion, as various protocol handshakes and / or other features impose sequential performance of steps. As a result, it is envisaged that the analysis routine 1210 both task routines 1211 where are the instructions for the conversion and compilation for the embarrassingly parallel execution by the GPUs 1650 are accessible, as well as task routines 1211 in which the instructions are not such that they are to be executed by the CPUs 1550 can be compiled.

Die Kompilierregeln 1434 können eine Liste von Anweisungen einschließen, die, falls sie in einer Taskroutine 1211 vorhanden sind, wenigstens nicht die Umwandlung und Kompilierung der Anweisungen der Taskroutine 1211 verhindern, um eine entsprechende GPU-Taskroutine 1671 zu erstellen, in der die Anweisungen die Durchführung der Aufgabe der Taskroutine 1211 als eine peinlich parallele Aufgabe unter Verwendung von vielen Threads von wenigstens einer GPU 1650 bei der Ausführung veranlassen. Alternativ oder zusätzlich können die Kompilierregeln 1434 eine Liste von Anweisungen einschließen, die, falls sie innerhalb einer Taskroutine 1211 vorhanden sind, eine derartige Umwandlung der Taskroutine 1211 verhindern, um eine derartige peinlich parallele Ausführung durch die GPUs 1650 zu unterstützen. Zusätzlich können die Kompilierregeln 1434 bestimmte Umstände spezifizieren, unter denen bestimmte Anweisungen, die eine derartige Umwandlung anderweitig nicht verhindern würden, in einer Taskroutine 1211 so verwendet werden können (z. B. als Teil einer Eingabe/Ausgabe-Operation oder einer anderen Operation), dass eine derartige Umwandlung verhindert wird.The compilation rules 1434 can include a list of statements that, if they are in a task routine 1211 at least not the conversion and compilation of the instructions of the task routine 1211 Prevent a corresponding GPU task routine 1671 to create in which the instructions perform the task task task 1211 as a painstakingly parallel task using many threads from at least one GPU 1650 in the execution cause. Alternatively or additionally, the compilation rules 1434 include a list of instructions that, if they are within a task routine 1211 are present, such a transformation of the task routine 1211 Prevent such embarrassing parallel execution by the GPUs 1650 to support. In addition, the compilation rules 1434 specify certain circumstances under which certain instructions that would otherwise not prevent such conversion, in a task routine 1211 can be used (e.g., as part of an input / output operation or other operation) to prevent such conversion.

Für diejenigen der Taskroutinen 1211 der Analyseroutine 1210, die Anweisungen aufweisen, die die Umwandlung in andere Anweisungen unterstützen können, die kompilierbar sind, um die Aufgabe(n) als peinlich parallele Aufgabe(n) auf den GPUs 1650 durchzuführen, können die Kompilierregeln 1434 verschiedene Regeln für die Durchführung einer derartigen Umwandlung spezifizieren. Beispielhaft können die Kompilierregeln 1434 eine oder mehrere Regeln für die Umwandlung von Indexwerten einschließen, die in Schleifen verwendet werden, die in einer Weise instanziiert werden sollen, die für eine peinlich parallele Ausführung zugänglich ist, bei der Kollisionen von Indexwerten und Abhängigkeiten zwischen Instanzen einer Aufgabe, die parallel ausgeführt werden, vermieden werden. Alternativ oder zusätzlich kann es eine oder mehrere Regeln für die Umwandlung von Anweisungen, die innerhalb einer Schleife implementiert wurden, um zu veranlassen, dass eine Operation mehrmals sequentiell durchgeführt wird, in Anweisungen, die veranlassen, dass mehrere Durchführungen dieser Operation parallel über mehrere Threads von wenigstens einer der GPUs 1650 hinweg auftreten, geben. In einigen solcher Umwandlungen; die eine Schleife beinhalten, in der die Anzahl der Durchführungen der Operation groß genug sein kann, dass nicht alle parallel auftreten können, kann die Schleife möglicherweise nicht eliminiert werden und kann stattdessen umgewandelt werden, um weniger Iterationen zu verwenden, wenn eine Teilmenge der Durchführungen der Operation parallel während jeder Iteration auftritt. Beispielhaft können die Kompilierregeln 1434 eine oder mehrere Regeln für die Umwandlung einer Datenstruktur, die innerhalb einer Taskroutine 1211 instanziiert wird, auf deren Datenelemente sequentiell zugegriffen wird, in eine andere Datenstruktur, auf deren Datenelemente parallel über mehrere Threads von wenigstens einer der GPUs 1650 hinweg zugegriffen wird, einschließen.For those of the task routines 1211 the analysis routine 1210 that have instructions that can support conversion to other instructions that are compilable to the task (s) as embarrassing parallel task (s) on the GPUs 1650 can perform the compile rules 1434 specify different rules for performing such a transformation. By way of example, the compilation rules 1434 include one or more index value conversion rules used in loops that should be instantiated in a way that is accessible to embarrassingly parallel execution, collisions of index values, and dependencies between instances of a task that are executed in parallel , be avoided. Alternatively or additionally, one or more rules for converting instructions implemented within a loop to cause an operation to be performed multiple times sequentially may be instructions that cause multiple executions of that operation in parallel across multiple threads of at least one of the GPUs 1650 occur, give. In some such transformations; which include a loop in which the number of times the operation can be performed is large enough that not all can occur in parallel, the loop may not be eliminated, and instead may be converted to use fewer iterations if a subset of the runs are Operation occurs in parallel during each iteration. By way of example, the compilation rules 1434 One or more rules for transforming a data structure within a task routine 1211 is instantiated, whose data elements are accessed sequentially, in another data structure, on their data elements in parallel across multiple threads of at least one of the GPUs 1650 is accessed.

In einigen Ausführungsformen kann die Umwandlung zur Folge haben, dass Anweisungen der Taskroutine 1211, die ursprünglich in einer bestimmten Programmiersprache erzeugt wurden, in andere Anweisungen umgewandelt werden, die in der gleichen Programmiersprache erzeugt werden. In einigen solcher Ausführungsformen können jedoch die Anweisungen, die für die Verwendung in der jeweiligen Sprache definiert werden, durch eine oder mehrere zusätzliche Anweisungen ergänzt werden, die mit Aspekten der internen Architektur, die für die GPU 1650 spezifisch sind, assoziiert sind (z. B. bestimmte Typen von Operanden, bestimmte Typen für zurückgegebene Werte, Organisation von Bits und/oder Bytes von Variablen für eine Registerimplementierung usw.). In anderen Ausführungsformen kann die Umwandlung zur Folge haben, dass Anweisungen der Taskroutine 1211, die ursprünglich in einer Programmiersprache erzeugt wurden, in andere Anweisungen umgewandelt werden, die in einer anderen Programmiersprache erzeugt werden. In einigen solcher Ausführungsformen kann die andere Programmiersprache von einem Anbieter der GPUs 1650 erstellt worden sein, um eine Programmiersprache bereitzustellen, die ausgelegt ist, um die Merkmale der GPUs 1650 optimal zu nutzen.In some embodiments, the conversion may result in instructions of the task routine 1211 that were originally created in a particular programming language, are converted into other statements that are generated in the same programming language. However, in some such embodiments, the instructions that are defined for use in the particular language may be supplemented by one or more additional instructions associated with aspects of the internal architecture common to the GPU 1650 are specific (e.g., certain types of operands, certain types for returned values, organization of bits and / or bytes of variables for register implementation, etc.). In other embodiments, the conversion may result in instructions of the task routine 1211 that were originally created in one programming language, are converted into other instructions that are generated in a different programming language. In some such embodiments, the other programming language may be from a provider of the GPUs 1650 have been created to provide a programming language designed to match the features of the GPUs 1650 to use optimally.

Nachfolgend wird ein Beispiel für eine Umwandlung von Teilen einer Taskroutine 1211 dargestellt, die vom Prozessor 1350 der Koordinierungsvorrichtung 1300 und/oder von einer oder mehreren CPUs 1550 der Knotenvorrichtungen 1500 durchgeführt werden kann. Zuerst werden Teile einer beispielhaften Taskroutine 1211 dargestellt, die in FCMP erzeugt wird, einer Programmiersprache, die in verschiedenen Produkten vom SAS Institute Inc., Cary, NC, USA, angeboten wird. Insbesondere wurden beispielsweise die Deklarationen der Subroutine „income_statement_kernel” und der Datenstruktur „d_matrix_is” zwischen den Programmiersprachen FCMP und C umgewandelt.The following is an example of converting parts of a task routine 1211 represented by the processor 1350 the coordinator 1300 and / or one or more CPUs 1550 the node devices 1500 can be carried out. First, parts of an example task routine 1211 produced in FCMP, a programming language offered in various products by SAS Institute Inc., Cary, NC, USA. In particular, for example, the declarations of the sub-routine "income_statement_kernel" and the data structure "d_matrix_is" have been converted between the programming languages FCMP and C.

Figure DE102017213160A1_0002
Figure DE102017213160A1_0002

Als Nächstes werden entsprechende Teile einer entsprechenden GPU-Taskroutine dargestellt, die im Umwandlungsprozess, der vom Prozessor 1350 oder von einer oder mehreren der CPUs 1550 durchgeführt wird, erzeugt wird. Insbesondere wurden die obigen Teile der in FCMP erzeugten beispielhaften Taskroutine 1211 umgewandelt, um eine Programmiersprachenerweiterung zu verwenden, die Teil des Programmiermodells Compute Unified Device Architecture (CUDA) ist, um Funktionen von GPUs (z. B. den GPUs 1650) aufzurufen, das von der Nvidia Corporation, Santa Clara, CA, USA, verbreitet wird, einem Anbieter von GPUs, die als die GPUs 1650 eingesetzt werden können.Next, corresponding parts of a corresponding GPU task routine are shown in the conversion process executed by the processor 1350 or one or more of the CPUs 1550 is performed is generated. In particular, the above parts have become the example task routine created in FCMP 1211 To use a programming language extension that is part of the Compute Unified Device Architecture (CUDA) programming model to transform functions of GPUs (such as the GPUs 1650 ), which is distributed by Nvidia Corporation of Santa Clara, CA, a provider of GPUs called the GPUs 1650 can be used.

Figure DE102017213160A1_0003
Figure DE102017213160A1_0003

Wie Fachleute auf dem Gebiet leicht erkennen können, ist es häufig der Fall, dass Programmiercode, der ursprünglich für die Ausführung unter Verwendung einer ersten Verarbeitungsarchitektur erzeugt wurde, wahrscheinlich effizienter durch einen Prozessor der ersten Architektur ausgeführt wird als Programmiercode, der ursprünglich für die Ausführung unter Verwendung einer zweiten Verarbeitungsarchitektur erzeugt wurde und dann für die Ausführung unter Verwendung der ersten Verarbeitungsarchitektur umgewandelt wird. Trotzdem haben Tests bestätigt, dass durch die Umwandlung der Taskroutinen 1211 durch die Kompilierroutine 1440 signifikante Steigerungen der Geschwindigkeit der Durchführung von einigen Aufgaben einer Analyseroutine 1210 realisiert werden können, von der Erzeugung für eine Ausführung durch die CPUs 1550 bis zur Erzeugung für eine peinlich parallele Ausführung durch die GPUs 1650. As those skilled in the art can readily appreciate, it is often the case that programming code originally created for execution using a first processing architecture is likely to be more efficiently executed by a first architecture processor than programming code originally intended for execution under Using a second processing architecture and then converted for execution using the first processing architecture. Nevertheless, tests have confirmed that by transforming the task routines 1211 through the compile routine 1440 significant increases in the speed of performing some tasks of an analysis routine 1210 can be realized by the generation for execution by the CPUs 1550 until creation for embarrassing parallel execution by the GPUs 1650 ,

Nachfolgend ist eine Tabelle mit Vergleichen der Ausführungszeiten aus dem Testen einer beispielhaften stochastischen Berechnung dargestellt. Eine derartige Berechnung kann eine Aufgabe sein, die als eine der Taskroutinen 1211 innerhalb einer beispielhaften Analyseroutine 1210 implementiert wird. Wie dargestellt, wurde, wenn die stochastische Berechnung in SAS Macro Code (eine weitere Programmiersprache, die in verschiedenen Produkten von SAS Institute Inc. angeboten wird) zur Ausführung durch eine CPU (z. B. eine der CPUs 1550 von einem der Knoten 1500) geschrieben wird, die resultierende Zeitdauer, die zur Ausführung erforderlich ist, von etwa 93.600 Sekunden gemessen. Wenn die gleiche stochastische Berechnung stattdessen in FCMP für die Ausführung durch mehrere CPUs geschrieben wird (z. B. mehrere der CPUs 1550 innerhalb eines oder mehrerer der Knoten 1500), ergab sich eine gemessene Ausführungszeit von 763 Sekunden. Wenn der gleiche FCMP-Code der stochastischen Berechnung jedoch dann für eine peinlich parallele Ausführung durch eine der von Nvidia Corporation angebotenen GPUs (z. B. eine der GPUs 1650 eines der Knoten 1500) zu CUDA umgewandelt wird, ergab sich eine gemessene Ausführungszeit von 73 Sekunden. Obwohl 73 Sekunden langsamer sind als die gemessene Ausführungszeit von 11 Sekunden, die erreicht wird, wenn die gleiche stochastische Berechnung für eine peinlich parallele Ausführung durch eine der von Nvidia Corporation angebotenen GPUs direkt in CUDA geschrieben wird, ist die gemessene Ausführungszeit von 73 Sekunden, die durch die Verwendung der Umwandlung von FCMP zu CUDA erreicht wird, immer noch eine sehr signifikante Verbesserung gegenüber der gemessenen Ausführungszeit von 763 Sekunden, die durch die Ausführung des FCMP-Codes durch mehrere CPUs erreicht wird. Eingesetzte Technologie Stochastische Berechnung – Zeit in Sekunden CPU SAS Macro Code 93.600 In FCMP geschriebener Code 763 GPU In FCMP geschriebener Code, und dann zu CUDA umgewandelt 73 Direkt in CUDA geschriebener Code 11 The following is a table comparing execution times from testing an exemplary stochastic calculation. Such a calculation may be a task that is considered one of the task routines 1211 within an exemplary analysis routine 1210 is implemented. As shown, if the stochastic calculation in SAS Macro Code (another programming language offered in various products by SAS Institute Inc.) was executed by a CPU (eg, one of the CPUs 1550 from one of the nodes 1500 ), the resulting amount of time required to execute is measured at about 93,600 seconds. Instead, the same stochastic calculation is written in FCMP for execution by multiple CPUs (for example, several of the CPUs 1550 within one or more of the nodes 1500 ) resulted in a measured execution time of 763 seconds. However, if the same stochastic computation FCMP code is then scrupulously executed in parallel by one of the GPUs offered by Nvidia Corporation (eg, one of the GPUs 1650 one of the nodes 1500 ) was converted to CUDA, resulting in a measured execution time of 73 seconds. Even though 73 Seconds slower than the 11 second execution time that is achieved when the same stochastic calculation for scrupulous parallel execution by one of the GPUs offered by Nvidia Corporation is written directly to CUDA is the 73 second execution time measured by the Using the conversion from FCMP to CUDA still achieves a very significant improvement over the measured execution time of 763 seconds achieved by the execution of the FCMP code by multiple CPUs. Used technology Stochastic calculation - time in seconds CPU SAS macro code 93,600 Code written in FCMP 763 GPU Code written in FCMP, and then converted to CUDA 73 Code written directly in CUDA 11

Somit ermöglicht, wie an diesen gemessenen Ausführungszeiten zu erkennen ist, eine derartige Verwendung der Umwandlung von Code, um die Kompilierung für eine derartige peinlich parallele Ausführung zu ermöglichen, dem Personal, das nicht über die Fähigkeiten oder Schulung verfügt, die Taskroutinen 1211 der Analyseroutine 1210 nativ in CUDA zu schreiben, trotzdem noch die Vorteile einer peinlich parallelen Ausführung des Codes zu nutzen, den sie schreiben können.Thus, as can be seen from these measured execution times, such use of the conversion of code to allow compilation for such embarrassingly parallel execution allows the personnel, who lack the skills or training, to have the task routines 1211 the analysis routine 1210 natively write in CUDA, but still to take advantage of an embarrassingly parallel execution of the code that they can write.

In Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompilieren soll, kann der Prozessor 1350 die Analysekomponente 1441 als Teil der Ableitung der anfänglichen Zuweisungen von Datensatzpartitionen 1131 und der anfänglichen Aufgabe(n) ausführen. Insbesondere kann der Prozessor 1350 durch die Analysekomponente 1441 veranlasst werden, jede Taskroutine 1211 der Analyseroutine 1210 zu analysieren, um diejenigen der Taskroutinen 1211 zu identifizieren, bei denen die Anweisungen zugänglich für die Umwandlung und Kompilierung in entsprechende GPU-Taskroutinen 1671 sind, um eine peinlich parallele Durchführung ihrer entsprechenden Aufgaben durch die GPUs 1650 zu ermöglichen. Auf diese Weise kann der Prozessor 1350 veranlasst werden, die Anzeigen innerhalb der Kompilierregeln 1434 zu verwenden, welche Anweisungen derartige Umwandlungen verhindern und/oder welche Anweisungen derartige Umwandlungen nicht verhindern. Der Prozessor 1350 kann dann veranlasst werden, die Ergebnisse einer derartigen Analyse der Taskroutinen 1211 bei der Auswahl von Knotenvorrichtungen 1500 als Teil der Ableitung der anfänglichen Zuweisungen zu verwenden. Insbesondere, falls die Analyse der Taskroutinen 1211 zu einer Bestimmung durch den Prozessor 1350 fährt, dass keine der Taskroutinen 1211 in entsprechende GPU-Taskroutinen 1671 kompiliert werden können, kann der Prozessor 1350 die Auswahl der Knotenvorrichtungen 1500 auf diejenigen beschränken, die eine oder mehrere der CPUs 1550 integrieren, da aus den Taskroutinen 1211 keine GPU-Taskroutinen 1671 erzeugt werden. Falls die Analyse der Taskroutinen 1211 jedoch zu einer Bestimmung führt, dass einige der Taskroutinen 1211 in entsprechende GPU-Taskroutinen 1671 kompiliert werden können, während andere nicht kompiliert werden können, dann kann der Prozessor 1350 die Auswahl der Knotenvorrichtungen 1500 auf diejenigen beschränken, die sowohl eine oder mehrere CPUs 1550 als auch eine oder mehrere GPUs 1650 integrieren und daher die Ausführung sowohl der CPU-Taskroutinen 1571 als auch der GPU-Taskroutinen 1671 unterstützen können, die aus verschiedenen der Taskroutinen 1211 erzeugt werden. Ferner, falls die Analyse der Taskroutinen 1211 zu einer Bestimmung führt, dass alle der Taskroutinen 1211 in die entsprechenden GPU-Taskroutinen 1671 kompiliert werden können, kann der Prozessor 1350 die Auswahl der Knotenvorrichtungen 1500 auf diejenigen beschränken, die eine oder mehrere der GPUs 1650 integrieren.In embodiments in which the coordinating device 1300 the task routines 1211 the analysis routine 1210 should be able to compile, the processor 1350 the analysis component 1441 as part of deriving the initial allocations of record partitions 1131 and perform the initial task (s). In particular, the processor can 1350 through the analysis component 1441 be initiated every task routine 1211 the analysis routine 1210 to analyze those of the task routines 1211 identify where the instructions are accessible for conversion and compilation into appropriate GPU task routines 1671 are to do an embarrassingly parallel execution of their respective tasks by the GPUs 1650 to enable. That way, the processor can 1350 caused the ads within the compile rules 1434 which statements prevent such conversions and / or which instructions do not prevent such conversions. The processor 1350 can then be made the results of such an analysis of the task routines 1211 in the selection of node devices 1500 to be used as part of the derivation of the initial assignments. In particular, if the analysis of the task routines 1211 to a determination by the processor 1350 drives that none of the task routines 1211 in appropriate GPU task routines 1671 can be compiled, the processor 1350 the selection of node devices 1500 to restrict those to one or more of the CPUs 1550 integrate, there from the task routines 1211 no GPU task routines 1671 be generated. If the analysis of the task routines 1211 However, this leads to a determination that some of the task routines 1211 in appropriate GPU task routines 1671 While others can not be compiled, then the processor can 1350 the selection of node devices 1500 restrict to those who have both one or more CPUs 1550 as well as one or more GPUs 1650 integrate and therefore the execution of both the CPU task routines 1571 as well as the GPU task routines 1671 can support from different of the task routines 1211 be generated. Further, if the analysis of the task routines 1211 leading to a determination that all of the task routines 1211 into the appropriate GPU task routines 1671 can be compiled, the processor 1350 the selection of node devices 1500 restrict to those who have one or more of the GPUs 1650 integrate.

Unter Bezugnahme auf 14C kann in Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 nicht kompiliert, der Prozessor 1350 durch die Zuweisungskomponente 1341 der Steuerroutine 1340 veranlasst werden, die Netzschnittstelle 1390 zu betreiben, um die Taskroutine(n) 1211 der zugewiesenen anfänglichen Aufgaben auf die ausgewählten Knotenvorrichtungen 1500 zu verteilen. In derartigen Ausführungsformen kann jede der ausgewählten Knotenvorrichtungen 1500 die Taskroutine(n) 1211, die an jeden der ausgewählten Knoten 1500 verteilt ist/sind, unabhängig in die entsprechende(n) CPU-Taskroutine(n) 1571 und/oder GPU-Taskroutine(n) 1671 kompilieren, in Vorbereitung für die Durchführung der anfänglichen Aufgabe(n), die jedem der ausgewählten Knoten 1500 zugewiesen ist/sind.With reference to 14C may in embodiments in which the coordinating device 1300 the task routines 1211 the analysis routine 1210 not compiled, the processor 1350 through the assignment component 1341 the control routine 1340 be initiated, the network interface 1390 to run the task routine (s) 1211 the assigned initial tasks to the selected node devices 1500 to distribute. In such embodiments, each of the selected node devices 1500 the task routine (s) 1211 to each of the selected nodes 1500 is distributed independently to the corresponding CPU task routine (s) 1571 and / or GPU Task Routine (s) 1671 Compile, in preparation for performing the initial task (s) that each of the selected nodes 1500 is assigned / are.

Alternativ kann in Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompilieren soll, so dass die Koordinierungsvorrichtung 1300 die Kompilierroutine 1440 zur Ausführung durch den Prozessor 1350 speichert, die Kompilierroutine 1440 eine Kompilierkomponente 1444 zur Durchführung der Kompilierung der Taskroutinen 1211 einschließen. Insbesondere kann der Prozessor 1350 durch die Kompilierkomponente 1444 veranlasst werden, wenigstens die eine oder mehreren Taskroutinen 1211 zu kompilieren, die mit der einen oder den mehreren anfänglichen Aufgaben assoziiert sind, die den ausgewählten der Knotenvorrichtungen 1500 zugewiesen wurden. Für eine Taskroutine 1211, die vom Prozessor 1350 (während der Ausführung der Analysekomponente 1441) als nicht zugänglich bestimmt wurde, um umgewandelt und kompiliert zu werden, um eine entsprechende GPU-Taskroutine 1671 zu erzeugen, kann der Prozessor 1350 veranlasst werden, die Taskroutine 1211 ohne eine derartige Umwandlung zu kompilieren, um eine entsprechende CPU-Taskroutine 1571 zu erzeugen. Für eine Taskroutine 1211, die vom Prozessor 1350 als zugänglich für die Umwandlung und Kompilierung bestimmt wurde, um eine entsprechende GPU-Taskroutine 1671 zu erzeugen, kann der Prozessor 1350 veranlasst werden, eine derartige Umwandlung und Kompilierung zu bewirken, um die entsprechende GPU-Taskroutine 1671 zu erzeugen.Alternatively, in embodiments where the coordinating device 1300 the task routines 1211 the analysis routine 1210 should compile, so that the coordinating device 1300 the compile routine 1440 for execution by the processor 1350 stores, the compile routine 1440 a compilation component 1444 to perform the compilation of the task routines 1211 lock in. In particular, the processor can 1350 through the compilation component 1444 be initiated, at least one or more task routines 1211 Compile the one or more initial tasks associated with the selected one of the node devices 1500 have been assigned. For a task routine 1211 that from the processor 1350 (during the execution of the analysis component 1441 ) has been determined inaccessible to be converted and compiled to a corresponding GPU task routine 1671 The processor can generate 1350 be initiated, the task routine 1211 without compiling such a conversion to a corresponding CPU task routine 1571 to create. For a task routine 1211 that from the processor 1350 was determined to be accessible for conversion and compilation to a corresponding GPU task routine 1671 The processor can generate 1350 be caused to effect such conversion and compilation, the corresponding GPU task routine 1671 to create.

In einigen Ausführungsformen, bei denen eine Taskroutine 1211 vom Prozessor 1350 als zugänglich für die Umwandlung und Kompilierung bestimmt wurde, um eine entsprechende GPU-Taskroutine 1671 zu erzeugen, kann der Prozessor 1350 durch die Kompilierkomponente 1444 veranlasst werden, mehr als eine Kompilierung der gleichen Taskroutine 1211 durchzuführen. Beispielsweise kann der Prozessor 1350 in einigen solcher Ausführungsformen zusätzlich die gleiche Taskroutine 1211 kompilieren, um zusätzlich zur entsprechenden GPU-Taskroutine 1671 auch eine entsprechende CPU-Taskroutine 1571 zu erzeugen. Dies kann als wünschenswert erachtet werden, um eine Situation anzusprechen, in der eine unzureichende Anzahl verfügbarer Knotenvorrichtungen 1500 vorhanden sein kann, die eine oder mehrere der GPUs 1650 integrieren, so dass die Aufgabe(n) der Taskroutine 1211 von einer oder mehreren der Knotenvorrichtungen 1500 durchgeführt werden muss/müssen, basierend auf der Ausführung der entsprechenden CPU-Taskroutine 1571 durch eine oder mehrere CPUs 1550. Alternativ oder zusätzlich kann dies als wünschenswert erachtet werden, um eine Situation anzusprechen, in der eine Knotenvorrichtung 1500, die eine oder mehrere GPUs 1650 integriert, beim Ausführen der entsprechenden GPU-Taskroutine 1650 ausfällt und die Durchführung der Aufgabe(n) der Taskroutine 1211 mit der/den jeweiligen Datensatzpartition(en) 1131, die dieser Knotenvorrichtung 1500 zugewiesen ist/sind, einer anderen Knotenvorrichtung 1500 zugewiesen werden muss, die keine GPU 1650 integriert.In some embodiments, where a task routine 1211 from the processor 1350 was determined to be accessible for conversion and compilation to a corresponding GPU task routine 1671 The processor can generate 1350 through the compilation component 1444 causing more than one compilation of the same task routine 1211 perform. For example, the processor 1350 In addition, in some such embodiments, the same task routine 1211 compile in addition to the appropriate GPU task routine 1671 also a corresponding CPU task routine 1571 to create. This may be considered desirable to address a situation where there is an insufficient number of available node devices 1500 There may be one or more of the GPUs 1650 integrate so that the task (s) of the task routine 1211 from one or more of the node devices 1500 must be performed based on the execution of the corresponding CPU task routine 1571 through one or more CPUs 1550 , Alternatively or additionally, this may be considered desirable to address a situation in which a node device 1500 containing one or more GPUs 1650 integrated when running the appropriate GPU task routine 1650 fails and performing the task (s) of the task routine 1211 with the respective record partition (s) 1131 , this node device 1500 is assigned to another node device 1500 must be assigned, no GPU 1650 integrated.

Als weiteres Beispiel für mehr als eine Kompilierung der gleichen Taskroutine 1211 kann das Knotenvorrichtungsgitter 1005 in einigen dieser Ausführungsformen einen heterogenen Satz von Knotenvorrichtungen 1500 einschließen, die verschiedene GPUs 1650 integrieren, die keinen Anweisungssatz teilen, so dass die Erzeugung einer einzelnen entsprechenden GPU-Taskroutine 1671 für alle verschiedenen GPUs 1650 nicht möglich sein kann. Somit kann der Prozessor 1350 veranlasst werden, mehrere Umwandlungen und Kompilierungen der gleichen Taskroutine 1211 in jede der verschiedenen Versionen der GPU-Taskroutine 1671 durchzuführen, die für jede der verschiedenen GPUs 1650, die unter den Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 erforderlich sind.As another example of more than one compilation of the same task routine 1211 can the node device grid 1005 in some of these embodiments, a heterogeneous set of node devices 1500 Include different GPUs 1650 integrate that does not share an instruction set, allowing the generation of a single corresponding GPU task routine 1671 for all different GPUs 1650 can not be possible. Thus, the processor can 1350 cause several conversions and compilations of the same task routine 1211 in each of the different versions of the GPU task routine 1671 perform for each of the various GPUs 1650 that under the node devices 1500 of the node device grid 1005 required are.

Jedoch kann in einigen der Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompilieren soll, egal ob die Analyse der Taskroutinen 1211 zur Identifizierung derjenigen, die für eine Kompilierung für eine oder mehrere verschiedene GPUs 1650 zugänglich sind, stattfindet und/oder egal ob eine derartige Kompilierung zur Erzeugung entsprechender GPU-Taskroutinen 1671 stattfindet, konditioniert werden, ob Anzeigen vorhanden sind, dass irgendwelche Knotenvorrichtungen 1500 vorhanden sind, die eine GPU 1650 integrieren. Insbesondere kann in einer Situation, in der die aktuellen Knotenstatus 1535 anzeigen, dass keine der Knotenvorrichtungen, die eine oder mehrere der GPUs 1650 integrieren, aktuell verfügbar sind, um überhaupt eine Aufgabe zugewiesen zu bekommen, der Prozessor 1350 durch die Zuweisungskomponente 1341 veranlasst werden, von der Durchführung einer Analyse der Taskroutinen 1211 abzusehen, um zu bestimmen, ob irgendwelche für die Kompilierung zur Ausführung durch eine GPU 1650 zugänglich sind. Alternativ oder zusätzlich kann in Ausführungsformen, in denen verschiedene Knotenvorrichtungen 1500 unterschiedliche Typen von GPUs 1650 integrieren, so dass mehrere Kompilierungen zur Erzeugung von GPU-Taskroutinen 1671 für alle der unterschiedlichen Typen von GPUs 1650 erforderlich sind, eine Situation auftreten, in der die Knotenstatus 1535 anzeigen, dass alle der GPUs 1650 einer der Typen aktuell nicht für die Durchführung von Aufgaben verfügbar sind. In einer derartigen Situation kann der Prozessor 1350 durch die Zuweisungsroutine veranlasst werden, von der Kompilierung einer beliebigen Taskroutine 1211 abzusehen, um eine GPU-Taskroutine 1671 für die Ausführung durch GPUs 1650 dieses bestimmten Typs zu erzeugen. However, in some of the embodiments where the coordinating device 1300 the task routines 1211 the analysis routine 1210 compile, no matter if the analysis of the task routines 1211 to identify those who are compiling for one or more different GPUs 1650 are accessible, take place and / or whether such a compilation for generating corresponding GPU task routines 1671 be conditioned, whether there are indications that any node devices 1500 present are a GPU 1650 integrate. In particular, in a situation where the current node status 1535 indicate that none of the node devices containing one or more of the GPUs 1650 integrate, are currently available to ever assigned a task, the processor 1350 through the assignment component 1341 be induced by performing an analysis of the task routines 1211 to determine if any for compilation to be executed by a GPU 1650 are accessible. Alternatively or additionally, in embodiments in which various node devices 1500 different types of GPUs 1650 integrate, allowing multiple compilations to generate GPU task routines 1671 for all of the different types of GPUs 1650 are required to encounter a situation where the node status 1535 show all of the GPUs 1650 one of the types currently not available for performing tasks. In such a situation, the processor can 1350 be caused by the assignment routine, by the compilation of any task routine 1211 foresee a GPU task routine 1671 for execution by GPUs 1650 of this particular type.

Die Erzeugung der GPU-Taskroutinen 1671 in einer Weise, die die Umwandlung der Anweisungen der Taskroutinen 1211 in andere Anweisungen einschließt, die die peinlich parallelen Verarbeitungsmerkmale der GPUs 1650 nutzen, gefolgt von der Kompilierung, kann als wünschenswert erachtet werden, um die Leichtigkeit zu verbessern, mit der peinlich parallele Merkmale der GPUs 1650 verwendet werden können. Durch eine derartige Verwendung von Umwandlungen von Anweisungen kann dem Personal die Möglichkeit gegeben werden, die GPUs 1650 zu nutzen, die in wenigstens einigen der Knotenvorrichtungen 1500 vorhanden sein können, ohne die Notwendigkeit, die Anweisungen der Taskroutinen 1211 in einer Weise zu architektieren und zu schreiben, die für eine derartige peinlich parallele Ausführung ausgelegt ist. Anders ausgedrückt, kann diesem Personal die Notwendigkeit erspart bleiben, die zusätzlichen Fähigkeiten und Erfahrungen zu erwerben, um die Anweisungen zu architektieren und zu schreiben, die die Aufgaben der Analyseroutine 1210 in einer Weise implementieren, die für eine peinlich parallele Ausführung durch die GPUs 1650 ausgelegt ist. Zusätzlich kann, wenn das Knotenvorrichtungsgitter 1005 Knotenvorrichtungen 1500 einschließt, die unterschiedliche der GPUs 1650 integrieren, die keinen Anweisungssatz teilen, derartigem Personal ferner die Notwendigkeit erspart bleiben, verschiedene Versionen von Anweisungen zu architektieren und zu schreiben, die die Aufgaben der Analyseroutine 1210 in einer Weise implementieren, die für die unterschiedlichen Eigenheiten der Weise, in der eine hochparallele Ausführung durch jede der unterschiedlichen der GPUs 1650 bereitgestellt wird, ausgelegt ist.The generation of the GPU task routines 1671 in a way that the conversion of the instructions of the task routines 1211 includes in other instructions the embarrassingly parallel processing features of the GPUs 1650 use, followed by compilation, may be considered desirable to improve the ease with the embarrassingly parallel features of the GPUs 1650 can be used. Through such use of instructions conversions staff can be given the opportunity to use the GPUs 1650 to be used in at least some of the node devices 1500 can be present without the need to follow the instructions of the task routines 1211 to architect and write in a manner designed for such embarrassingly parallel execution. In other words, this staff may be spared the need to acquire the additional skills and experience to architect the instructions and write the tasks of the analysis routine 1210 implement in a way that is embarrassing for parallel execution by the GPUs 1650 is designed. Additionally, if the node device grid 1005 node devices 1500 includes, the different of the GPUs 1650 Further, such personnel will be spared the need to architect and write different versions of instructions that will perform the tasks of the analysis routine 1210 implement in a manner appropriate to the different peculiarities of the way in which a highly parallel execution by each of the different ones of the GPUs 1650 is provided is designed.

15A und 15B veranschaulichen zusammen ein Ausführungsbeispiel der Durchführung von Aufgaben, die ausgewählten der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 zugewiesen sind. 15A veranschaulicht Aspekte der Vorbereitung der Durchführung, die das Kompilieren einer Taskroutine 1211 innerhalb einer beispielhaften Knotenvorrichtung 1500 einschließen können, und 15B veranschaulicht Aspekte der Durchführung einer Aufgabe innerhalb der beispielhaften Knotenvorrichtung 1500 durch Ausführung der entsprechenden CPU-Taskroutine 1571 oder entsprechenden GPU-Taskroutine 1671. 15A and 15B together illustrate one embodiment of performing tasks, the selected ones of the node devices 1500 of the node device grid 1005 are assigned. 15A illustrates aspects of preparing for the implementation that involves compiling a task routine 1211 within an exemplary node device 1500 can include, and 15B illustrates aspects of performing a task within the example node device 1500 by executing the corresponding CPU task routine 1571 or equivalent GPU task routine 1671 ,

Unter Bezugnahme auf 15A können, wie zuvor erörtert, in Ausführungsformen, in denen das verteilte Verarbeitungssystem 1000 eine oder mehrere unterschiedliche Speichervorrichtungen 1100 einschließt (wie beispielsweise das beispielhafte verteilte Verarbeitungssystem 1000 aus 11A), eine oder mehrere Datensatzpartitionen 1131 an die Knotenvorrichtungen 1500 über das Netz 1999 bereitgestellt werden, einschließlich an die dargestellte beispielhafte Knotenvorrichtung 1500. Jedoch können in Ausführungsformen, in denen das verteilte Verarbeitungssystem 1000 keine derartigen unterschiedlichen Speichervorrichtungen einschließt und die Knotenvorrichtungen 1500 eine verteilte Speicherung der Datensätze 1130 bereitstellen (wie beispielsweise das beispielhafte verteilte Verarbeitungssystem 1000 aus 11B), eine oder mehr Datensatzpartitionen 1131, mit denen eine Aufgabe innerhalb der beispielhaften Knotenvorrichtung 1500 durchgeführt werden soll, bereits innerhalb der beispielhaften Knotenvorrichtung 1500 gespeichert sein. Ansonsten können eine derartige oder mehrere Datensatzpartitionen 1131 an die beispielhafte Knotenvorrichtung 1500 über das Netz 1999 von einer anderen der Knotenvorrichtungen 1500 bereitgestellt werden.With reference to 15A may, as previously discussed, in embodiments in which the distributed processing system 1000 one or more different storage devices 1100 includes (such as the exemplary distributed processing system 1000 out 11A ), one or more record partitions 1131 to the node devices 1500 over the net 1999 be provided, including to the illustrated exemplary node device 1500 , However, in embodiments where the distributed processing system 1000 does not include such different memory devices and the node devices 1500 a distributed storage of the records 1130 (such as the exemplary distributed processing system 1000 out 11B ), one or more record partitions 1131 with which a task within the exemplary node device 1500 is to be performed already within the exemplary node device 1500 be saved. Otherwise, one or more record partitions 1131 to the exemplary node device 1500 over the net 1999 from another of the node devices 1500 to be provided.

Wie zuvor erörtert, kann in Ausführungsformen, in der die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 nicht kompiliert, die Koordinierungsvorrichtung 1300 die eine oder mehreren Taskroutinen 1211 der einen oder mehreren zugewiesenen anfänglichen Aufgaben an die ausgewählten Knotenvorrichtungen 1500 verteilen. In derartigen Ausführungsformen, und wie dargestellt, kann jede der Knotenvorrichtungen 1500 die Kompilierroutine 1440 zur Ausführung durch eine CPU 1550 von jeder der Knotenvorrichtungen 1500 speichern. Somit kann nach dem Empfang einer Taskroutine 1211 von der Koordinierungsvorrichtung 1300 eine CPU 1550 der beispielhaften Knotenvorrichtung 1500 die Kompilierroutine 1440 ausführen, um zuerst die Taskroutine 1211 zu analysieren, um zu bestimmen, ob sie für die Umwandlung und Kompilierung zugänglich ist, um eine entsprechende GPU-Taskroutine 1671 zu erzeugen. Falls dies der Fall ist, kann die CPU 1550 veranlasst werden, eine derartige Umwandlung und Kompilierung der Taskroutine 1211 durchzuführen, um so die entsprechende GPU-Taskroutine 1671 zur Ausführung durch eine GPU 1650 der beispielhaften Knotenvorrichtung 1500 zu erzeugen. Falls die Taskroutine 1211 jedoch nicht so zugänglich ist, kann die CPU 1550 veranlasst werden, die Taskroutine 1211 ohne eine derartige Umwandlung zu kompilieren, um die entsprechende CPU-Taskroutine 1571 zu erzeugen.As previously discussed, in embodiments in which the coordinating device 1300 the task routines 1211 the analysis routine 1210 not compiled, the coordinator 1300 the one or more task routines 1211 the one or more assigned initial tasks to the selected node devices 1500 to distribute. In such embodiments, and as illustrated, each of the node devices may 1500 the compile routine 1440 for execution by a CPU 1550 from each of the node devices 1500 to save. Thus, after receiving a task routine 1211 from the coordinator 1300 a CPU 1550 the exemplary node device 1500 the compile routine 1440 Run to the task routine first 1211 to analyze whether it is accessible for conversion and compilation to a corresponding GPU task routine 1671 to create. If so, the CPU can 1550 such a conversion and compilation of the task routine 1211 to perform the appropriate GPU task routine 1671 for execution by a GPU 1650 the exemplary node device 1500 to create. If the task routine 1211 However, not as accessible, the CPU can 1550 be initiated, the task routine 1211 without compiling such conversion to the appropriate CPU task routine 1571 to create.

Alternativ kann in Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 der Analyseroutine 1210 kompiliert, die Koordinierungsvorrichtung 1300 die eine oder mehreren entsprechenden CPU-Taskroutinen 1571 und/oder GPU-Taskroutinen 1671 verteilen, die innerhalb der Koordinierungsvorrichtung 1300 von der einen oder den mehreren Taskroutinen 1211 erzeugt wurden. Infolgedessen kann der beispielhafte Knoten 1500 eine CPU-Taskroutine 1571, die von der CPU 1550 ausgeführt werden soll, oder eine GPU-Taskroutine 1671, die von der GPU 1650 ausgeführt werden soll, empfangen, anstelle der entsprechenden Taskroutine 1211, von der eine erzeugt wird.Alternatively, in embodiments where the coordinating device 1300 the task routines 1211 the analysis routine 1210 compiled, the coordinator 1300 the one or more corresponding CPU task routines 1571 and / or GPU task routines 1671 distribute that within the coordinator 1300 from the one or more task routines 1211 were generated. As a result, the example node may 1500 a CPU task routine 1571 that from the CPU 1550 to be executed, or a GPU task routine 1671 that from the GPU 1650 to be executed, instead of the corresponding task routine 1211 one of which is generated.

Wie dargestellt, kann die Steuerroutine 1640, die durch die GPU 1650 ausgeführt wird, eine Ausführungskomponente 1641 einschließen, um die GPU 1650 zu veranlassen, die entsprechende GPU-Taskroutine 1671 auszuführen, falls die entsprechende GPU-Taskroutine 1671 von der Taskroutine 1211 der anfänglichen Aufgabe, die der beispielhaften Knotenvorrichtung 1500 zugewiesen ist, erzeugt werden kann (ob innerhalb der Koordinierungsvorrichtung 1300 oder der beispielhaften Knotenvorrichtung 1500). Wie auch dargestellt, kann die Steuerroutine 1540, die durch die CPU 1550 ausgeführt wird, jedoch eine Ausführungskomponente 1541 einschließen, um die CPU 1550 zu veranlassen, die entsprechende CPU-Taskroutine 1571 auszuführen, falls die entsprechende GPU-Taskroutine 1671 nicht von der Taskroutine 1211 der anfänglichen Aufgabe erzeugt werden kann, die der beispielhaften Knotenvorrichtung 1500 zugewiesen ist, so dass die Erzeugung der entsprechenden CPU-Taskroutine 1571 notwendig ist.As shown, the control routine 1640 by the GPU 1650 is executed, an execution component 1641 include to the GPU 1650 to initiate the appropriate GPU task routine 1671 if the appropriate GPU task routine 1671 from the task routine 1211 the initial task, that of the exemplary node device 1500 is assigned (whether within the coordinator 1300 or the exemplary node device 1500 ). As also shown, the control routine 1540 that through the CPU 1550 is executed, but an execution component 1541 include to the CPU 1550 to initiate the appropriate CPU task routine 1571 if the appropriate GPU task routine 1671 not from the task routine 1211 the initial task, that of the exemplary node device 1500 is assigned, so that the generation of the corresponding CPU task routine 1571 necessary is.

Unter Bezugnahme auf 15B, und unter kurzer Bezugnahme auf 12, wo die GPU 1650 durch die Ausführungskomponente 1641 veranlasst wird, die GPU-Taskroutine 1671 auszuführen, um die zugewiesene anfängliche Aufgabe mit einer Datensatzpartition 1131 durchzuführen, können Seiten sowohl von der GPU-Taskroutine 1671 als auch der Datensatzpartition 1131 zwischen dem nicht-flüchtigen Speicher 1563 und dem flüchtigen Speicher 1661, mit dem die GPU 1650 gekoppelt ist, ausgetauscht werden. Alternativ, wo die CPU 1550 durch die Ausführungskomponente 1541 veranlasst wird, die CPU-Taskroutine 1571 auszuführen, um die zugewiesene anfängliche Aufgabe mit einer Datensatzpartition 1131 durchzuführen, können Seiten sowohl von der CPU-Taskroutine 1571 als auch der Datensatzpartition 1131 zwischen dem nicht-flüchtigen Speicher 1563 und dem flüchtigen Speicher 1561, mit dem die CPU 1550 gekoppelt ist, ausgetauscht werden. Wie zuvor im Zusammenhang mit 12 erörtert, kann jeder der flüchtigen Speicher 1561 und 1661 einen wesentlich schnelleren Zugriff als der nicht-flüchtige Speicher 1563 auf darin gespeicherte Daten und/oder Routinen erlauben, so dass die CPU 1550 und die GPU 1650 effizienter Routinen ausführen können und Operationen mit Daten durchführen können, die jeweils innerhalb der flüchtigen Speicher 1561 und 1661 gespeichert sind. Jedoch kann jeder der flüchtigen Speicher 1561 und 1661 eine wesentlich geringere Speicherkapazität als der nicht-flüchtige Speicher 1563 aufweisen. Infolgedessen kann die Situation wiederholt auftreten, wenn signifikant mehr (wenn nicht alles) einer relativ großen Datensatzpartition 1131 innerhalb des nicht-flüchtigen Speichers 1563 speicherbar ist, während nur ein relativ kleiner Teil dieser Datensatzpartition 1131 innerhalb eines der flüchtigen Speicher 1561 und 1661 speicherbar ist, wodurch die Verwendung eines Seitenaustausches erforderlich ist.With reference to 15B , and with brief reference to 12 where the GPU 1650 through the execution component 1641 causes the GPU task routine 1671 to execute the assigned initial task with a record partition 1131 can perform pages both from the GPU task routine 1671 as well as the record partition 1131 between the non-volatile memory 1563 and the volatile memory 1661 with which the GPU 1650 is coupled, exchanged. Alternatively, where the CPU 1550 through the execution component 1541 is the CPU task routine 1571 to execute the assigned initial task with a record partition 1131 can perform pages from both the CPU task routine 1571 as well as the record partition 1131 between the non-volatile memory 1563 and the volatile memory 1561 with which the CPU 1550 is coupled, exchanged. As previously related to 12 Everyone can discuss the volatile memory 1561 and 1661 a much faster access than the non-volatile memory 1563 allow data and / or routines stored therein so that the CPU 1550 and the GPU 1650 can execute more efficient routines and perform operations on data, each within the volatile memory 1561 and 1661 are stored. However, everyone can use the volatile memory 1561 and 1661 a much smaller storage capacity than the non-volatile memory 1563 exhibit. As a result, the situation can occur repeatedly if significantly more (if not all) of a relatively large data set partition 1131 within the non-volatile memory 1563 is storable while only a relatively small part of this record partition 1131 within one of the volatile memory 1561 and 1661 is storable, whereby the use of a page exchange is required.

Wie dargestellt, kann die Steuerroutine 1540 auch eine Statuskomponente 1543 einschließen, um die CPU 1550 zu veranlassen, die Netzschnittstelle 1590 des beispielhaften Knotens 1500 zu betreiben, um wiederkehrend aktualisierte Anzeigen des aktuellen Status der Verarbeitungs-, Speicher- und/oder Netzzugriffsressourcen des beispielhaften Knotens 1500 als aktualisierte Instanzen des Knotenstatus 1535 an die Koordinierungsvorrichtung 1300 zu übertragen. Wie zuvor im Zusammenhang mit 12 erörtert, kann die GPU 1650 innerhalb des Grafikcontrollers 1600 keinen Zugriff auf die Netzschnittstelle 1590 haben und/oder kann die erforderlichen Treiberroutinen nicht ausführen, um die Netzschnittstelle 1590 direkt zu betreiben. Somit kann die CPU 1550 durch die Statuskomponente 1543 veranlasst werden, wiederkehrend Anzeigen des Status der GPU 1650 und/oder des flüchtigen Speichers 1661 von der GPU 1650 abzurufen, um sie zu den Anzeigen des Status hinzuzufügen, die im übertragenen Knotenstatus 1535 eingeschlossen sind.As shown, the control routine 1540 also a status component 1543 include to the CPU 1550 to initiate the network interface 1590 of the exemplary node 1500 to periodically update the current status of the processing, storage, and / or network access resources of the example node 1500 as updated instances of node status 1535 to the coordinator 1300 transferred to. As previously related to 12 discussed, the GPU can 1650 within the graphics controller 1600 no access to the network interface 1590 have and / or can not run the required driver routines to the network interface 1590 to operate directly. Thus, the CPU can 1550 through the status component 1543 be prompted to periodically display the status the GPU 1650 and / or volatile memory 1661 from the GPU 1650 to add them to the status indicators in the transmitted node status 1535 are included.

16 veranschaulicht ein Ausführungsbeispiel einer Zuweisung von nächsten Aufgaben, die als Teil der Ausführung einer Analyseroutine durchgeführt werden sollen, an ausgewählte der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005. Wie zuvor in Verbindung mit 14A–B und 15B erörtert, kann der Prozessor 1350 der Koordinierungsvorrichtung 1300 durch die Überwachungskomponente 1545 veranlasst werden, die Netzschnittstelle 1390 wiederkehrend zu betreiben, um die Knotenstatus 1535 zu empfangen, die wiederkehrend von den Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 über das Netz 1999 übertragen werden. 16 FIG. 12 illustrates an embodiment of an assignment of next tasks to be performed as part of the execution of an analysis routine to selected ones of the node devices 1500 of the node device grid 1005 , As previously in connection with 14A -Federation 15B discussed, the processor can 1350 the coordinator 1300 through the monitoring component 1545 be initiated, the network interface 1390 operate recurrently to the node status 1535 to receive the recurring from the node devices 1500 of the node device grid 1005 over the net 1999 be transmitted.

In einigen Ausführungsformen kann der Prozessor 1350 auch durch die Überwachungskomponente 1545 veranlasst werden, Anzeigen der Zeitdauern, die für den Abschluss von Aufgaben, die den Knotenvorrichtungen 1500 zugewiesen sind, erforderlich sind, beizubehalten und wiederkehrend zu aktualisieren. In einigen solcher Ausführungsformen können die Aufgabenverzögerungsdaten 1335 eine getrennte Pro-Aufgabe-Zeit für den Abschluss einschließen, die wiederkehrend als ein Durchschnitt der Zeitdauern, die für jede der mehreren Knotenvorrichtungen 1500 erforderlich sind, um die gleiche Aufgabe abzuschließen, berechnet wird. In Ausführungsformen, in denen die Aufgabe möglicherweise verschiedenen der Knotenvorrichtungen 1500 zugewiesen wurde, in denen sie mit verschiedenen Prozessortypen (z. B. einer CPU 1550 vs. einer GPU 1650 oder verschiedenen Typen von GPUs 1650) ausgeführt werden kann, können innerhalb der Aufgabenverzögerungsdaten 1335 für jeden verschiedenen Typ von Prozessor, der zur Ausführung einer Aufgabe verwendet wird, unterschiedliche Durchschnittszeiten beibehalten werden. Alternativ oder zusätzlich können als ein Mechanismus zur Berücksichtigung von Unterschieden in Ressourcen (einschließlich Verarbeitungsressourcen) zwischen den Knotenvorrichtungen 1500 Durchschnitte relativer Unterschiede in den Zeitdauern für jede Knotenvorrichtung 1500, um zugewiesene Aufgaben abzuschließen, im Vergleich zu anderen Knotenvorrichtungen 1500 in den Aufgabenverzögerungsdaten 1335 eingeschlossen werden.In some embodiments, the processor 1350 also by the monitoring component 1545 be prompted to display the time periods required for completion of tasks involving the node devices 1500 are assigned, required, maintained and updated on a recurring basis. In some such embodiments, the task delay data may be 1335 include a separate per-task time for completion, recurring as an average of the time durations for each of the multiple node devices 1500 are required to complete the same task is calculated. In embodiments in which the task may be different to the node devices 1500 in which they are used with different processor types (eg a CPU 1550 vs. a GPU 1650 or different types of GPUs 1650 ) can be executed within the task delay data 1335 for each different type of processor used to perform a task, different average times are maintained. Alternatively or additionally, as a mechanism to account for differences in resources (including processing resources) between the node devices 1500 Averages of relative differences in durations for each node device 1500 to complete assigned tasks compared to other node devices 1500 in the task delay data 1335 be included.

In derartigen Ausführungsformen kann der Prozessor 1350 durch die Zuweisungskomponente 1541 veranlasst werden, die gespeicherten Anzeigen der Zeitdauern zum Abschluss zugewiesener Aufgaben innerhalb der Aufgabenverzögerungsdaten 1335 zu verwenden, um eine oder mehrere Zeitperioden abzuleiten, um die der Prozessor 1350 die Zuweisung einer nächsten Aufgabe mit einer bestimmten Datensatzpartition 1131 an eine Knotenvorrichtung 1500 verzögern kann, die nicht bereits die bestimmte Datensatzpartition 1131 darin gespeichert hat. Bei mehreren Zeitperioden der Verzögerung kann jede von ihnen auf einem anderen Durchschnitt der Abschlusszeiten basieren, die innerhalb der Aufgabenverzögerungsdaten 1335 für eine unterschiedliche Aufgabe gespeichert sind. Wenn Unterschiede in den Ressourcen zwischen den Knotenvorrichtungen 1500 durch Durchschnitte relativer Unterschiede in den Zeitdauern berücksichtigt werden, können derartige Durchschnitte vom Prozessor 1350 verwendet werden, um jede der Zeitperioden für die Verzögerung für eine bestimmte Knotenvorrichtung 1500 zu modifizieren.In such embodiments, the processor 1350 through the assignment component 1541 causes the stored indications of time durations to be completed for assigned tasks within the task delay data 1335 to use one or more time periods to deduce the processor 1350 the assignment of a next task with a specific record partition 1131 to a node device 1500 may not delay the particular record partition 1131 stored in it. For multiple time periods of delay, each of them may be based on a different average of completion times, within the task delay data 1335 stored for a different task. When differences in resources between the node devices 1500 may be accounted for by averages of relative differences in durations, such averages may be from the processor 1350 used to time each of the delay periods for a particular node device 1500 to modify.

17A, 17B und 17C, zusammen genommen in der Reihenfolge von 17A bis 17C, veranschaulichen ein Ausführungsbeispiel der Durchführung von Aufgaben unter mehreren ausgewählten der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005. Insbesondere stellen 17A–C eine beispielhafte Dreiergruppe von Knotenvorrichtungen 1500x, 1500y und 1500z dar, die eine erste Aufgabe mit einem beispielhaften Datensatz 1130a durchführen und dann eine zweite Aufgabe in Verbindung mit der ersten Aufgabe mit dem gleichen beispielhaften Datensatz 1130a durchführen. Auf diese Weise soll jede der beispielhaften Knotenvorrichtungen 1500x–z einen weiteren beispielhaften Datensatz 1130b und dann noch einen weiteren beispielhaften Datensatz 1130c erzeugen. Es sei anzumerken, dass dieses Beispiel, das auf den nur drei Knotenvorrichtungen 1500x–z basiert und die drei Datensätze 1130a–c beinhaltet, die in der Größe klein genug sein können, um auf die nur drei Knotenvorrichtungen 1500 verteilt zu werden, ein bewusst vereinfachtes Beispiel darstellt und hierin für Zwecke der Erklärung und des Verständnisses erörtert wird und nicht als Beschränkung angesehen werden sollte. Insbesondere ist vorgesehen, dass Ausführungsformen wahrscheinlich die Durchführung von Aufgaben mit wesentlich größeren Datensätzen 1130 beinhalten und damit wahrscheinlich die Verwendung von wesentlich mehr Knotenvorrichtungen 1500 beinhalten. 17A . 17B and 17C taken together in the order of 17A to 17C 12 illustrate an embodiment of performing tasks among a plurality of selected ones of the node devices 1500 of the node device grid 1005 , In particular, ask 17A C is an exemplary triad of node devices 1500x . 1500y and 1500Z This is a first task with an example record 1130a and then perform a second task in conjunction with the first task with the same example record 1130a carry out. In this way, each of the exemplary node devices should 1500x -Z another example record 1130b and then another example record 1130c produce. It should be noted that this example is based on the only three node devices 1500x -Z based and the three records 1130a C includes, which may be small enough in size to access the only three node devices 1500 being a deliberately simplified example and discussed herein for purposes of explanation and understanding, and should not be construed as limiting. In particular, it is envisioned that embodiments are likely to perform tasks with significantly larger data sets 1130 and thus probably the use of significantly more node devices 1500 include.

Ausgehend von 17A wurde jede der drei Knotenvorrichtungen 1500x–z zugewiesen, um die erste Aufgabe mit einer entsprechenden von drei Datensatzpartitionen 1131ax–az des Datensatzes 1130a durchzuführen, um jeweils eine entsprechende der drei Datensatzpartitionen 1131bx–bz des Datensatzes 1130b zu erzeugen. Darüber hinaus wurde jede der drei Knotenvorrichtungen 1500x–z mit ihrer entsprechenden der drei Datensatzpartitionen 1131ax–az des Datensatzes 1130a von der einen oder den mehreren Speichervorrichtungen 1100 über das Netz 1999 versehen.Starting from 17A became each of the three node devices 1500x -Z assigned the first task with a corresponding one of three record partitions 1131ax -Az of the record 1130a to perform a respective one of the three record partitions 1131bx -Bz of the record 1130b to create. In addition, each of the three node devices 1500x -Z with its corresponding one of the three record partitions 1131ax -Az of the record 1130a from the one or more storage devices 1100 over the net 1999 Mistake.

Wie dargestellt, läuft bei einem oder mehreren Prozessoren der Knotenvorrichtung 1500x (z. B. einer oder mehreren CPUs 1550 und/oder einer oder mehreren GPUs 1650) noch die Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax, so dass die Datensatzpartition 1131bx noch immer innerhalb der Knotenvorrichtung 1500x erzeugt wird. Zusätzlich kann es sein, dass die Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax ausreichend Verarbeitungs- und/oder Speicherressourcen der Knotenvorrichtung 1500x verbraucht, dass erachtet wird, dass die Knotenvorrichtung 1500x möglicherweise unzureichende Verarbeitungs- und/oder Speicherressourcen aufweist, um zugewiesen zu werden, eine andere Aufgabe durchzuführen, bis die erste Aufgabe mit der Datensatzpartition 1131ax abgeschlossen wurde. Bei der Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax, um die Datensatzpartition 1131bx zu erzeugen, kann wenigstens eine Teilmenge von jeder dieser Partitionen innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert werden. Darüber hinaus können Seiten dieser beiden Partitionen zwischen dem nichtflüchtigen Speicher 1563 und dem einen oder anderen der flüchtigen Speicher 1561 oder 1661 ausgetauscht werden, abhängig davon, ob die erste Aufgabe durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500x durchgeführt wird. As illustrated, one or more processors of the node device are running 1500x (eg one or more CPUs 1550 and / or one or more GPUs 1650 ) nor the execution of the first task with the record partition 1131ax so that the record partition 1131bx still within the node device 1500x is produced. Additionally, it may be that performing the first task with the record partition 1131ax sufficient processing and / or storage resources of the node device 1500x consumes that it is considered that the node device 1500x may have insufficient processing and / or memory resources to be assigned to perform another task until the first task with the record partition 1131ax was completed. When performing the first task with the record partition 1131ax to the record partition 1131bx may generate at least a subset of each of these partitions within the non-volatile memory 1563 the node device 1500x get saved. In addition, pages of these two partitions can be used between the non-volatile memory 1563 and one or the other of the volatile memory 1561 or 1661 be exchanged, depending on whether the first task by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500x is carried out.

Wie auch dargestellt, haben ein oder mehrere Prozessoren der Knotenvorrichtung 1500y bereits die Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ay abgeschlossen, so dass die Datensatzpartition 1131by bereits innerhalb der Knotenvorrichtung 1500y erzeugt und dann zur Speicherung an die eine oder mehreren Speichervorrichtungen 1100 übertragen wurde. Zusätzlich wurde nach dem Abschluss dieser Durchführung der ersten Aufgabe die Knotenvorrichtung 1500y zugewiesen, um die zweite Aufgabe mit der Datensatzpartition 1131ay durchzuführen, um eine Datensatzpartition 1131cy des Datensatzes 1130c zu erzeugen. Wie dargestellt, läuft bei einem oder mehreren Prozessoren der Knotenvorrichtung 1500y noch die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ay, so dass die Datensatzpartition 1131cy noch immer innerhalb der Knotenvorrichtung 1500y erzeugt wird. Zusätzlich kann es sein, dass die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ay ausreichend Verarbeitungs- und/oder Speicherressourcen der Knotenvorrichtung 1500y verbraucht, dass erachtet wird, dass die Knotenvorrichtung 1500y möglicherweise unzureichende Verarbeitungs- und/oder Speicherressourcen aufweist, um zugewiesen zu werden, eine andere Aufgabe durchzuführen, bis die zweite Aufgabe mit der Datensatzpartition 1131ay abgeschlossen wurde. Da die erste Aufgabe mit der Datensatzpartition 1131ay durchgeführt wurde, um die Datensatzpartition 1131by zu erzeugen, kann wenigstens eine Teilmenge der Partition 1131by eine begrenzte Zeitperiode lang innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500y gespeichert bleiben. Bei der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ay, um die Datensatzpartition 1131cy zu erzeugen, kann wenigstens eine Teilmenge von jeder dieser Partitionen innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert werden. Darüber hinaus können Seiten dieser beiden Datensatzpartitionen zwischen dem nicht-flüchtigen Speicher 1563 und dem einen oder anderen der flüchtigen Speicher 1561 oder 1661 ausgetauscht werden, abhängig davon, ob die zweite Aufgabe durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500y durchgeführt wird. Ferner kann es infolge eines derartigen Austausches unwahrscheinlich sein, dass eine beliebige Seite der Datensatzpartition 1131by noch innerhalb des flüchtigen Speichers 1561 oder 1661 gespeichert ist.As also shown, one or more processors have the node device 1500y already performing the first task with the record partition 1131ay completed, leaving the record partition 1131by already within the node device 1500y and then stored for storage by the one or more memory devices 1100 was transferred. In addition, after completing this execution of the first task, the node device became 1500y assigned the second task with the record partition 1131ay to perform a record partition 1131cy of the record 1130c to create. As illustrated, one or more processors of the node device are running 1500y still performing the second task with the record partition 1131ay so that the record partition 1131cy still within the node device 1500y is produced. Additionally, it may be that performing the second task with the record partition 1131ay sufficient processing and / or storage resources of the node device 1500y consumes that it is considered that the node device 1500y may have insufficient processing and / or memory resources to be assigned to perform another task until the second task with the record partition 1131ay was completed. As the first task with the record partition 1131ay was performed to the record partition 1131by can generate at least a subset of the partition 1131by for a limited period of time within the non-volatile memory 1563 the node device 1500y stay saved. When performing the second task with the record partition 1131ay to the record partition 1131cy may generate at least a subset of each of these partitions within the non-volatile memory 1563 the node device 1500x get saved. Additionally, pages of these two record partitions can be between the non-volatile memory 1563 and one or the other of the volatile memory 1561 or 1661 be exchanged, depending on whether the second task by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500y is carried out. Furthermore, as a result of such exchanges, it may be unlikely that any page of the record partition 1131by still within the volatile memory 1561 or 1661 is stored.

Wie ferner dargestellt, haben ein oder mehrere Prozessoren der Knotenvorrichtung 1500z bereits die Durchführung der ersten Aufgabe mit der Datensatzpartition 1131az abgeschlossen, so dass die Datensatzpartition 1131bz bereits innerhalb der Knotenvorrichtung 1500z erzeugt und dann zur Speicherung an die eine oder mehreren Speichervorrichtungen 1100 übertragen wurde. Auf ähnliche Weise haben der eine oder die mehreren Prozessoren der Knotenvorrichtung 1500z bereits die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131az abgeschlossen, so dass die Datensatzpartition 1131cz auch bereits innerhalb der Knotenvorrichtung 1500z erzeugt und dann zur Speicherung an die eine oder mehreren Speichervorrichtungen 1100 übertragen wurde. Daher kann im Gegensatz zu den Knotenvorrichtungen 1500x und 1500y erachtet werden, dass die Knotenvorrichtung 1500z ausreichend verfügbare Verarbeitungs- und Speicherressourcen aufweist, damit die Knotenvorrichtung 1500z zugewiesen werden kann, um eine andere Aufgabe durchzuführen. Infolge der Durchführung der ersten Aufgabe mit der Datensatzpartition 1131az zur Erzeugung der Datensatzpartition 1131bz und infolge der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131az zur Erzeugung der Datensatzpartition 1131cz kann wenigstens eine Teilmenge von einer oder mehreren der Datensatzpartitionen 1131az, 1131bz und 1131cz eine begrenzte Zeitperiode lang innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500z gespeichert bleiben. Auch infolge der Durchführung der zweiten Aufgabe in jüngerer Zeit als die erste Aufgabe können Seiten von einer oder beiden der Datensatzpartitionen 1131az und 1131cz immer noch innerhalb des einen oder des anderen der flüchtigen Speicher 1561 oder 1661 gespeichert sein, abhängig davon, ob die zweite Aufgabe durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500z durchgeführt wurde. Es kann jedoch unwahrscheinlich sein, dass eine beliebige Seite der Partition 1131bz immer noch innerhalb des flüchtigen Speichers 1561 oder 1661 gespeichert ist.As further illustrated, one or more processors of the node device 1500Z already performing the first task with the record partition 1131az completed, leaving the record partition 1131bz already within the node device 1500Z and then stored for storage by the one or more memory devices 1100 was transferred. Similarly, the one or more processors of the node device 1500Z already performing the second task with the record partition 1131az completed, leaving the record partition 1131cz also already within the node device 1500Z and then stored for storage by the one or more memory devices 1100 was transferred. Therefore, in contrast to the node devices 1500x and 1500y be considered that the node device 1500Z has enough available processing and memory resources to allow the node device 1500Z can be assigned to perform another task. As a result of performing the first task with the record partition 1131az to generate the record partition 1131bz and as a result of performing the second task with the record partition 1131az to generate the record partition 1131cz may be at least a subset of one or more of the record partitions 1131az . 1131bz and 1131cz for a limited period of time within the non-volatile memory 1563 the node device 1500Z stay saved. Also, as a result of performing the second task more recently than the first task, pages of one or both of the record partitions 1131az and 1131cz still within one or the other of the volatile memory 1561 or 1661 be stored, depending on whether the second task by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500Z was carried out. It may, however, be unlikely that any side of the partition 1131bz still inside the volatile memory 1561 or 1661 is stored.

Somit ist die Knotenvorrichtung 1500z, unter den eben beschriebenen Umständen und wie anhand von gestrichelten Linien in 17B dargestellt, verfügbar, so dass sie zugewiesen werden könnte, um die zweite Aufgabe mit der Datensatzpartition 1131ax des Datensatzes 1130a durchzuführen, um die Datensatzpartition 1131cx des Datensatzes 1130c zu erzeugen. Wie gerade oben bereits erörtert, ist es jedoch die Knotenvorrichtung 1500x, die ursprünglich mit der Datensatzpartition 1131ax von der einen oder den mehreren Speichervorrichtungen 1100 bereitgestellt wurde. Daher wird die Datensatzpartition 1131ax bereits innerhalb des nichtflüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert, so dass die Datensatzpartition 1131ax nicht erneut über das Netz 1999 von der einen oder den mehreren Speichervorrichtungen 1100 übertragen werden müsste, falls die Knotenvorrichtung 1500x zugewiesen werden könnte, um die zweite Aufgabe mit der Datensatzpartition 1131ax durchzuführen. Auch gibt es, wie bereits erwähnt, infolge der laufenden Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax innerhalb der Knotenvorrichtung 1500x aktuell ein Austauschen von Seiten der Datensatzpartition 1131ax zwischen dem nicht-flüchtigen Speicher 1563 und entweder dem flüchtigen Speicher 1561 oder 1661. Somit sind eine oder mehrere Seiten der Datensatzpartition 1131ax aktuell innerhalb des flüchtigen Speichers 1561 oder 1661 der Knotenvorrichtung 1500x gespeichert, und die relativ schnelle Zuweisung der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ax an die Knotenvorrichtung 1500x, nachdem die Knotenvorrichtung 1500x ihre Durchführung der ersten Aufgabe abschließt, kann die zeitlich begrenzte Speicherung von dieser einen oder diesen mehreren Seiten innerhalb des flüchtigen Speichers 1561 oder 1661 nutzen, wodurch der Knotenvorrichtung 1500x ermöglicht werden kann, die Durchführung der zweiten Aufgabe wesentlich schneller zu beginnen.Thus, the node device 1500Z , under the circumstances just described and as indicated by dashed lines in FIG 17B presented, available so that it could be assigned to the second task with the record partition 1131ax of the record 1130a to perform the record partition 1131cx of the record 1130c to create. However, as already discussed above, it is the node device 1500x originally with the record partition 1131ax from the one or more storage devices 1100 was provided. Therefore, the record partition becomes 1131ax already inside the non-volatile memory 1563 the node device 1500x saved, leaving the record partition 1131ax not again over the network 1999 from the one or more storage devices 1100 would have to be transmitted if the node device 1500x could be assigned to the second task with the record partition 1131ax perform. Also, as already mentioned, due to the ongoing execution of the first task with the record partition 1131ax within the node device 1500x currently exchanging pages of the record partition 1131ax between the non-volatile memory 1563 and either the volatile memory 1561 or 1661 , Thus, one or more pages of the record partition 1131ax currently within the volatile memory 1561 or 1661 the node device 1500x stored, and the relatively fast assignment of the implementation of the second task with the record partition 1131ax to the node device 1500x after the node device 1500x completing their execution of the first task may be the temporary storage of that one or more pages within the volatile memory 1561 or 1661 use, which makes the node device 1500x can be made to start the implementation of the second task much faster.

Daher wird, wie anhand von gestrichelten Linien in 17B dargestellt, trotz der Verfügbarkeit der Knotenvorrichtung 1500z, um zugewiesen zu werden, um die zweite Aufgabe mit der Datensatzpartition 1131ax durchzuführen, die Knotenvorrichtung 1500z nicht zugewiesen, dies zu tun. Stattdessen wird der Prozessor 1350 der Koordinierungsvorrichtung 1300 durch die Zuweisungskomponente 1341 veranlasst (unter Bezugnahme auf 16), die Zuweisung der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ax an eine beliebige der Knotenvorrichtungen 1500x–z eine Zeitperiode lang zu verzögern, um der Knotenvorrichtung 1500x eine Möglichkeit bereitzustellen, ihre Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax abzuschließen.Therefore, as indicated by dashed lines in 17B shown, despite the availability of the node device 1500Z to be assigned to the second task with the record partition 1131ax to perform the node device 1500Z not assigned to do this. Instead, the processor becomes 1350 the coordinator 1300 through the assignment component 1341 caused (with reference to 16 ), the assignment of performing the second task with the record partition 1131ax to any of the node devices 1500x -Z for a period of time to delay the node device 1500x to provide a way of carrying out the first task with the record partition 1131ax complete.

Wie bereits erörtert, kann die Dauer der Zeitperiode einer derartigen Verzögerung in einigen Ausführungsformen auf Anzeigen in den wiederkehrend empfangenen Knotenstatus 1535 basieren, wie lange es gedauert hat, bis ein oder mehrere Knoten die gleiche Aufgabe abgeschlossen haben, für die die Zuweisung verzögert wird (z. B. basierend auf einem Durchschnitt, der aus den Zeitdauern erzeugt wird, die für einen oder mehrere Knoten erforderlich sind, um die gleiche Aufgabe abzuschließen). Wie auch erörtert worden ist, kann die Zeitperiode der Verzögerung jedoch auch auf Bestimmungen von Unterschieden in den Zeitdauern basieren, die der Knoten benötigt, wenn er die Möglichkeit erhält, eine Aufgabe abzuschließen, im Vergleich zu den Zeitdauern, die andere Knoten benötigen, um die gleiche Aufgabe abzuschließen. Wie bereits erwähnt, kann eine Berücksichtigung derartiger Unterschiede in den Zeitdauern als wünschenswert erachtet werden, um Unterschiede zu berücksichtigen, die in den verschiedenen Ressourcen vorhanden sind, die in verschiedenen Knotenvorrichtungen 1500 integriert sind. Somit kann im Beispiel aus 17A–C die Zeitperiode der Verzögerung, um der Knotenvorrichtung 1500x eine Möglichkeit zu geben, die erste Aufgabe mit der Datensatzpartition 1131ax abzuschließen, auf der Zeitdauer, die für eine oder beide der Knotenvorrichtungen 1500y und 1500z erforderlich war, um die erste Aufgabe mit ihren jeweiligen Datensatzpartitionen 1131ay und 1131az abzuschließen (z. B. ein Durchschnitt davon), und/oder auf Unterschieden in den Zeitdauern, die die Knotenvorrichtung 1500x benötigt, um Aufgaben abzuschließen, im Vergleich zu den Zeitdauern, die die Knotenvorrichtungen 1500y und/oder 1500z benötigen, um die gleichen Aufgaben abzuschließen, basieren.As discussed earlier, in some embodiments, the duration of the time period of such a delay may be indicative of indications of the recurrently received node status 1535 based on how long it took for one or more nodes to complete the same task for which the assignment is being delayed (eg, based on an average generated from the times required for one or more nodes) to complete the same task). However, as has also been discussed, the time period of the delay may also be based on determinations of differences in the time periods that the node needs, given the opportunity to complete a task, compared to the time periods that other nodes require to complete the task complete same task. As mentioned earlier, consideration of such differences in durations may be considered desirable to account for differences that exist in the various resources that exist in different node devices 1500 are integrated. Thus, in the example 17A -C the time period of the delay to the node device 1500x a way to give the first task with the record partition 1131ax to complete, on the time duration, for one or both of the node devices 1500y and 1500Z was required to complete the first task with their respective record partitions 1131ay and 1131az (eg an average of it), and / or on differences in durations that the node device 1500x needed to complete tasks, compared to the time periods that the node devices 1500y and or 1500Z need to complete the same tasks are based.

Unabhängig von der genauen Weise, in der die Zeitperiode der Verzögerung bei der Zuweisung der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ax an eine der Knotenvorrichtungen 1550x–z abgeleitet wird, kann der Prozessor 1350 der Koordinierungsvorrichtung 1300 einen Takt 1351 verwenden, der zur Überwachung des Zeitverlaufs in den Prozessor 1350 integriert sein kann (unter Bezugnahme auf 16), um zu bestimmen, wann die Zeitperiode der Verzögerung vollständig abgelaufen ist. Falls die Zeitperiode der Verzögerung vollständig abgelaufen ist, bevor die Knotenvorrichtung 1500x ihre Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax abschließen kann, dann kann der Prozessor 1350 durch die Zuweisungskomponente 1341 veranlasst werden, die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ax an die Knotenvorrichtung 1500z zuzuweisen. Falls, wie in 17C dargestellt, die Knotenvorrichtung 1500x jedoch ihre Durchführung der ersten Aufgabe mit der Datensatzpartition 1131ax abschließt, bevor die Zeitperiode der Verzögerung abläuft, dann kann der Prozessor 1350 veranlasst werden, die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131ax an die Knotenvorrichtung 1500x zuzuweisen. Wie bereits erwähnt, kann eine derartige Zuweisung der zweiten Aufgabe mit der Datensatzpartition 1131ax an die Knotenvorrichtung 1500x wenigstens die Speicherung wenigstens eines Teils der Datensatzpartition 1131ax innerhalb des nicht-flüchtigen Speichers 1563 nutzen, falls nicht auch noch die Speicherung von einer oder mehreren Seiten der Datensatzpartition 1131ax innerhalb des flüchtigen Speichers 1561 oder 1661.Regardless of the exact manner in which the time period of the delay in allocating the performance of the second task with the record partition 1131ax to one of the node devices 1550x -Z is derived, the processor can 1350 the coordinator 1300 a bar 1351 Use to monitor the timing in the processor 1350 can be integrated (with reference to 16 ) to determine when the time period of the delay has completely expired. If the time period of the delay has passed completely before the node device 1500x their performing the first task with the record partition 1131ax then the processor can 1350 through the assignment component 1341 be prompted to perform the second task with the record partition 1131ax to the node device 1500Z assign. If, as in 17C shown, the node device 1500x however, its performing the first task with the record partition 1131ax closes, before the time period of the delay expires, then the processor can 1350 be prompted to perform the second task with the record partition 1131ax to the node device 1500x assign. As already mentioned, such an assignment of the second task with the record partition 1131ax to the node device 1500x at least the storage of at least a part of the record partition 1131ax within the non-volatile memory 1563 if not also saving one or more pages of the record partition 1131ax within the volatile memory 1561 or 1661 ,

18A, 18B und 18C, zusammen genommen in der Reihenfolge aus 18A bis 18C, veranschaulichen ein weiteres Ausführungsbeispiel der Durchführung von Aufgaben unter mehreren ausgewählten der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005. Insbesondere stellen 18A–C die gleiche beispielhafte Dreiergruppe von Knotenvorrichtungen 1500x, 1500y und 1500z dar, die eine erste Aufgabe mit einem beispielhaften Datensatz 1130a durchführen, um einen beispielhaften Datensatz 1130b zu erzeugen, und dann eine zweite Aufgabe mit dem beispielhaften Datensatz 1130b durchführen, der durch die Durchführung der ersten Aufgabe erzeugt wird. Bei der Durchführung der zweiten Aufgabe mit dem beispielhaften Datensatz 1130b soll jede der beispielhaften Knotenvorrichtungen 1500x–z noch einen weiteren beispielhaften Datensatz 1130c erzeugen. Wie bei 17A–C sei anzumerken, dass dieses Beispiel, das auf nur drei Knotenvorrichtungen 1500 basiert und die drei Datensätze 1130a–c beinhaltet, die in der Größe klein genug sein können, um auf die nur drei Knotenvorrichtungen 1500x–z verteilt zu werden, ein bewusst vereinfachtes Beispiel darstellt und hierin für Zwecke der Erklärung und des Verständnisses erörtert wird und nicht als Beschränkung angesehen werden sollte. Wie bereits erwähnt, ist vorgesehen, dass Ausführungsformen wahrscheinlich die Durchführung von Aufgaben mit wesentlich größeren Datensätzen 1130 beinhalten und damit wahrscheinlich die Verwendung von wesentlich mehr der Knotenvorrichtungen 1500 beinhalten. 18A . 18B and 18C taken together in the order 18A to 18C 15 illustrate another embodiment of performing tasks among a plurality of selected ones of the node devices 1500 of the node device grid 1005 , In particular, ask 18A -C the same exemplary triad of node devices 1500x . 1500y and 1500Z This is a first task with an example record 1130a perform an exemplary record 1130b and then a second task with the example record 1130b performed by performing the first task. In performing the second task with the example record 1130b Let each of the exemplary node devices 1500x -Z yet another exemplary record 1130c produce. As in 17A -C, it should be noted that this example is based on only three node devices 1500 based and the three records 1130a C includes, which may be small enough in size to access the only three node devices 1500x Being a deliberately simplified example and discussed herein for purposes of explanation and understanding, and should not be considered as limiting. As mentioned earlier, it is envisioned that embodiments are likely to perform tasks with significantly larger datasets 1130 and thus probably the use of much more of the node devices 1500 include.

Ausgehend von 18A wurde jede der drei Knotenvorrichtungen 1500x–z zugewiesen, um die erste Aufgabe mit einer entsprechenden von drei Datensatzpartitionen 1131ax–az des Datensatzes 1130a durchzuführen, um jeweils eine entsprechende der drei Datensatzpartitionen 1131bx–bz des Datensatzes 1130b zu erzeugen. Wie dargestellt, haben alle drei der Knotenvorrichtungen 1500x–z ihre Durchführungen der ersten Aufgabe abgeschlossen, und jede hat ihre entsprechende der Datensatzpartitionen 1131bx–bz an die eine oder mehreren Speichervorrichtungen 1100 zur Speicherung als Datensatz 1130b übertragen. Um diese Durchführungen der ersten Aufgabe zu ermöglichen, wurde jede der drei Knotenvorrichtungen 1500x–z mit ihrer entsprechenden der drei Datensatzpartitionen 1131ax–az des Datensatzes 1130a von der einen oder den mehreren Speichervorrichtungen 1100 über das Netz 1999 versehen.Starting from 18A became each of the three node devices 1500x -Z assigned the first task with a corresponding one of three record partitions 1131ax -Az of the record 1130a to perform a respective one of the three record partitions 1131bx -Bz of the record 1130b to create. As illustrated, all three of the node devices 1500x -Z completed its completions of the first task, and each has its corresponding the record partitions 1131bx -Bz to the one or more storage devices 1100 for storage as a data record 1130b transfer. To enable these implementations of the first task, each of the three node devices became one 1500x -Z with its corresponding one of the three record partitions 1131ax -Az of the record 1130a from the one or more storage devices 1100 over the net 1999 Mistake.

Nach ihren Abschlüssen der ersten Aufgabe wurde jede der Knotenvorrichtungen 1500y und 1500z zugewiesen, um die zweite Aufgabe mit den Datensatzpartitionen 1131by und 1131bz durchzuführen, die die Knotenvorrichtungen 1500y und 1500z jeweils infolge ihrer Durchführungen der ersten Aufgabe erzeugten. Nach Abschluss der ersten Aufgabe wurde der Knotenvorrichtung 1500x jedoch zugewiesen, eine Aufgabe einer anderen und nicht verwandten Analyseroutine durchzuführen. Wie zuvor erörtert, kann die Zuweisung von Aufgaben unterschiedlicher und nicht verwandter Analyseroutinen in Ausführungsformen erfolgen, in denen das Knotenvorrichtungsgitter 1005 in dem Ausmaß geteilt wird, dass mehrere nicht verwandte Analyseroutinen unter Verwendung der Knotenvorrichtungen 1500 gleichzeitig durchgeführt werden.After their first task completes, each of the knot devices became 1500y and 1500Z assigned the second task with the record partitions 1131by and 1131bz perform the node devices 1500y and 1500Z each generated as a result of their implementations of the first task. After completion of the first task became the node device 1500x however, assigned to perform a task of another and unrelated parser. As previously discussed, the assignment of tasks of different and unrelated analysis routines may be done in embodiments in which the node device grid 1005 is shared to the extent that several unrelated analysis routines are using the node devices 1500 be carried out simultaneously.

Wie dargestellt, läuft bei einem oder mehreren Prozessoren der Knotenvorrichtung 1500x (z. B. einer oder mehreren CPUs 1550 und/oder einer oder mehreren GPUs 1650) noch die Durchführung der Aufgabe der nicht verwandten Analyseroutine. Zusätzlich kann es sein, dass die Durchführung der Aufgabe der nicht verwandten Analyseroutine ausreichend Verarbeitungs- und/oder Speicherressourcen der Knotenvorrichtung 1500x verbraucht, dass erachtet wird, dass die Knotenvorrichtung 1500x möglicherweise unzureichende Verarbeitungs- und/oder Speicherressourcen aufweist, um zugewiesen zu werden, eine andere Aufgabe durchzuführen, bis die Aufgabe der nicht verwandten Analyseroutine abgeschlossen wurde. Da die erste Aufgabe mit der Datensatzpartition 1131ax durchgeführt wurde, um die Datensatzpartition 1131bx zu erzeugen, kann wenigstens eine Teilmenge von einer oder beiden der Partitionen 1131ax und 1131bx eine begrenzte Zeitperiode lang innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert bleiben. Bei der Durchführung der Aufgabe der nicht verwandten Analyseroutine kann ein Austausch von Seiten einer nicht verwandten Datensatzpartition zwischen dem nicht-flüchtigen Speicher 1563 und dem einen oder anderen der flüchtigen Speicher 1561 oder 1661 erfolgen, abhängig davon, ob die Aufgabe der nicht verwandten Analyseroutine durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500x durchgeführt wurde. Ferner kann es infolge eines derartigen Austausches unwahrscheinlich sein, dass eine beliebige Seite der Datensatzpartitionen 1131ax oder 1131bx noch innerhalb des flüchtigen Speichers 1561 oder 1661 gespeichert ist. As illustrated, one or more processors of the node device are running 1500x (eg one or more CPUs 1550 and / or one or more GPUs 1650 ) nor the execution of the task of the unrelated analysis routine. In addition, performing the task of the unrelated analysis routine may be sufficient processing and / or memory resources of the node device 1500x consumes that it is considered that the node device 1500x may have insufficient processing and / or memory resources to be assigned to perform another task until the unrelated parsing routine task is completed. As the first task with the record partition 1131ax was performed to the record partition 1131bx can generate at least a subset of one or both of the partitions 1131ax and 1131bx for a limited period of time within the non-volatile memory 1563 the node device 1500x stay saved. In performing the task of the unrelated parsing routine, an exchange of pages of an unrelated record partition between the nonvolatile memory 1563 and one or the other of the volatile memory 1561 or 1661 Depending on whether the task of the unrelated analysis routine is performed by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500x was carried out. Furthermore, as a result of such exchanges, it may be unlikely that any page of the record partitions 1131ax or 1131bx still within the volatile memory 1561 or 1661 is stored.

Wie dargestellt, läuft bei einem oder mehreren Prozessoren der Knotenvorrichtung 1500y noch die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131by, so dass die Datensatzpartition 1131cy noch immer innerhalb der Knotenvorrichtung 1500y erzeugt wird. Zusätzlich kann es sein, dass die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131by ausreichend Verarbeitungs- und/oder Speicherressourcen der Knotenvorrichtung 1500y verbraucht, dass erachtet wird, dass die Knotenvorrichtung 1500y möglicherweise unzureichende Verarbeitungs- und/oder Speicherressourcen aufweist, um zugewiesen zu werden, eine andere Aufgabe durchzuführen, bis die zweite Aufgabe mit der Datensatzpartition 1131ay abgeschlossen wurde. Da die erste Aufgabe mit der Datensatzpartition 1131ay durchgeführt wurde, um die Datensatzpartition 1131by zu erzeugen, kann wenigstens eine Teilmenge der Partition 1131ay eine begrenzte Zeitperiode lang innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500y gespeichert bleiben. Bei der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131by, um die Datensatzpartition 1131cy zu erzeugen, kann wenigstens eine Teilmenge von jeder dieser Partitionen innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert werden. Darüber hinaus können Seiten dieser beiden Datensatzpartitionen zwischen dem nicht-flüchtigen Speicher 1563 und dem einen oder anderen der flüchtigen Speicher 1561 oder 1661 ausgetauscht werden, abhängig davon, ob die zweite Aufgabe durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500y durchgeführt wird. Ferner kann es infolge eines derartigen Austausches unwahrscheinlich sein, dass eine beliebige Seite der Datensatzpartition 1131ay noch innerhalb des flüchtigen Speichers 1561 oder 1661 gespeichert ist.As illustrated, one or more processors of the node device are running 1500y still performing the second task with the record partition 1131by so that the record partition 1131cy still within the node device 1500y is produced. Additionally, it may be that performing the second task with the record partition 1131by sufficient processing and / or storage resources of the node device 1500y consumes that it is considered that the node device 1500y may have insufficient processing and / or memory resources to be assigned to perform another task until the second task with the record partition 1131ay was completed. As the first task with the record partition 1131ay was performed to the record partition 1131by can generate at least a subset of the partition 1131ay for a limited period of time within the non-volatile memory 1563 the node device 1500y stay saved. When performing the second task with the record partition 1131by to the record partition 1131cy may generate at least a subset of each of these partitions within the non-volatile memory 1563 the node device 1500x get saved. Additionally, pages of these two record partitions can be between the non-volatile memory 1563 and one or the other of the volatile memory 1561 or 1661 be exchanged, depending on whether the second task by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500y is carried out. Furthermore, as a result of such exchanges, it may be unlikely that any page of the record partition 1131ay still within the volatile memory 1561 or 1661 is stored.

Wie ferner dargestellt, haben ein oder mehrere Prozessoren der Knotenvorrichtung 1500z bereits die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bz abgeschlossen, so dass die Datensatzpartition 1131cz bereits innerhalb der Knotenvorrichtung 1500z erzeugt und dann zur Speicherung an die eine oder mehreren Speichervorrichtungen 1100 übertragen wurde. Daher kann im Gegensatz zu den Knotenvorrichtungen 1500x und 1500y erachtet werden, dass die Knotenvorrichtung 1500z ausreichend verfügbare Verarbeitungs- und Speicherressourcen aufweist, damit die Knotenvorrichtung 1500z zugewiesen werden kann, um eine andere Aufgabe durchzuführen. Infolge der Durchführung der ersten Aufgabe mit der Datensatzpartition 1131az zur Erzeugung der Datensatzpartition 1131bz und infolge der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bz zur Erzeugung der Datensatzpartition 1131cz kann wenigstens eine Teilmenge von einer oder mehreren der Datensatzpartitionen 1131az, 1131bz und 1131cz eine begrenzte Zeitperiode lang innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500z gespeichert bleiben. Auch infolge der Durchführung der zweiten Aufgabe in jüngerer Zeit als die erste Aufgabe können Seiten von einer oder beiden der Datensatzpartitionen 1131bz und 1131cz immer noch innerhalb des einen oder des anderen der flüchtigen Speicher 1561 oder 1661 gespeichert sein, abhängig davon, ob die zweite Aufgabe durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 der Knotenvorrichtung 1500z durchgeführt wurde. Es kann jedoch unwahrscheinlich sein, dass eine beliebige Seite der Partition 1131az immer noch innerhalb des flüchtigen Speichers 1561 oder 1661 gespeichert ist.As further illustrated, one or more processors of the node device 1500Z already performing the second task with the record partition 1131bz completed, leaving the record partition 1131cz already within the node device 1500Z and then stored for storage by the one or more memory devices 1100 was transferred. Therefore, in contrast to the node devices 1500x and 1500y be considered that the node device 1500Z has enough available processing and memory resources to allow the node device 1500Z can be assigned to perform another task. As a result of performing the first task with the record partition 1131az to generate the record partition 1131bz and as a result of performing the second task with the record partition 1131bz to generate the record partition 1131cz may be at least a subset of one or more of the record partitions 1131az . 1131bz and 1131cz for a limited period of time within the non-volatile memory 1563 the node device 1500Z stay saved. Also, as a result of performing the second task more recently than the first task, pages of one or both of the record partitions 1131bz and 1131cz still within one or the other of the volatile memory 1561 or 1661 be stored, depending on whether the second task by one or more CPUs 1550 or one or more GPUs 1650 the node device 1500Z was carried out. However, it can be unlikely that any side of the partition 1131az still inside the volatile memory 1561 or 1661 is stored.

Somit ist, unter den eben beschriebenen Umständen und wie anhand von gestrichelten Linien in 18B dargestellt, die Knotenvorrichtung 1500z verfügbar, so dass sie für die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bx des Datensatzes 1130b zugewiesen werden könnte, um die Datensatzpartition 1131cx des Datensatzes 1130c zu erzeugen. Wie gerade oben bereits erörtert, ist es jedoch die Knotenvorrichtung 1500x, die ursprünglich die Datensatzpartition 1131bx erzeugte. Daher wird die Datensatzpartition 1131bx bereits innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x gespeichert, so dass die Datensatzpartition 1131bx nicht über das Netz 1999 von der einen oder den mehreren Speichervorrichtungen 1100 (oder von der Knotenvorrichtung 1500x) übertragen werden müsste, falls die Knotenvorrichtung 1500x zugewiesen werden könnte, um die zweite Aufgabe mit der Datensatzpartition 1131bx durchzuführen. Somit kann die relativ schnelle Zuweisung der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bx an die Knotenvorrichtung 1500x, nachdem die Knotenvorrichtung 1500x ihre Durchführung der Aufgabe der nicht verwandten Analyseroutine abschließt, die zeitlich begrenzte Speicherung der Datensatzpartition 1131bx innerhalb des nicht-flüchtigen Speichers 1563 der Knotenvorrichtung 1500x nutzen, was es der Knotenvorrichtung 1500x ermöglichen kann, die Durchführung der zweiten Aufgabe wesentlich schneller zu beginnen.Thus, under the circumstances just described and as indicated by dashed lines in FIG 18B shown, the node device 1500Z available, allowing them to perform the second task with the record partition 1131bx of the record 1130b could be assigned to the record partition 1131cx of the record 1130c to create. However, as already discussed above, it is the node device 1500x that was originally the record partition 1131bx produced. Therefore, the record partition becomes 1131bx already inside the non-volatile memory 1563 the node device 1500x saved, leaving the record partition 1131bx not over the net 1999 from the one or more storage devices 1100 (or from the node device 1500x ) would have to be transmitted if the node device 1500x could be assigned to the second task with the record partition 1131bx perform. Thus, the relatively fast allocation of the performance of the second task with the record partition 1131bx to the node device 1500x after the node device 1500x their completion of the task of the unrelated analysis routine completes the temporary storage of the record partition 1131bx within the non-volatile memory 1563 the node device 1500x use what it's the node device 1500x make it possible to start the second task much faster.

Daher wird, wie anhand von gestrichelten Linien in 18B dargestellt, trotz der Verfügbarkeit der Knotenvorrichtung 1500z, um zugewiesen zu werden, um die zweite Aufgabe mit der Datensatzpartition 1131bx durchzuführen, die Knotenvorrichtung 1500z nicht zugewiesen, dies zu tun. Stattdessen wird der Prozessor 1350 der Koordinierungsvorrichtung 1300 durch die Zuweisungskomponente 1341 veranlasst (unter Bezugnahme auf 16), die Zuweisung der Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bx an eine beliebige der Knotenvorrichtungen 1500x–z eine Zeitperiode lang zu verzögern, um der Knotenvorrichtung 1500x eine Möglichkeit bereitzustellen, ihre Durchführung der Aufgabe der nicht verwandten Analyseroutine abzuschließen. Ähnlich wie beim Ausführungsbeispiel aus 17A–C, falls die Zeitperiode der Verzögerung vollständig abgelaufen ist, bevor die Knotenvorrichtung 1500x in der Lage ist, ihre Durchführung der Aufgabe der nicht verwandten Analyseroutine abzuschließen, dann kann der Prozessor 1350 durch die Zuweisungskomponente 1341 veranlasst werden (unter Bezugnahme auf 16), die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bx an die Knotenvorrichtung 1500z zuzuweisen. Falls, wie in 18C dargestellt, die Knotenvorrichtung 1500x jedoch ihre Durchführung der Aufgabe der nicht verwandten Analyseroutine abschließt, bevor die Zeitperiode der Verzögerung abläuft, dann kann der Prozessor 1350 veranlasst werden, die Durchführung der zweiten Aufgabe mit der Datensatzpartition 1131bx an die Knotenvorrichtung 1500x zuzuweisen.Therefore, as indicated by dashed lines in 18B shown, despite the availability of the node device 1500Z to be assigned to the second task with the record partition 1131bx to perform the node device 1500Z not assigned to do this. Instead, the processor becomes 1350 the coordinator 1300 through the assignment component 1341 caused (with reference to 16 ), the assignment of performing the second task with the record partition 1131bx to any of the node devices 1500x -Z for a period of time to delay the node device 1500x to provide a way of performing their task of unrelated Complete analysis routine. Similar to the embodiment of 17A -C, if the time period of the delay has passed completely before the node device 1500x is able to complete their execution of the task of unrelated analysis routine, then the processor can 1350 through the assignment component 1341 be initiated (with reference to 16 ), performing the second task with the record partition 1131bx to the node device 1500Z assign. If, as in 18C shown, the node device 1500x however, completing its execution of the task of unrelated parsing routine before the time period of the delay expires, then the processor may 1350 be prompted to perform the second task with the record partition 1131bx to the node device 1500x assign.

19 veranschaulicht ein Ausführungsbeispiel eines Logikflusses 2100. Der Logikfluss 2100 kann repräsentativ für einige oder alle der Operationen sein, die von einer oder mehreren der hierin beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2100 Operationen veranschaulichen, die durch den Prozessor 1350 bei der Ausführung der Steuerroutine 1340 und/oder der Kompilierroutine 1440 und/oder andere Komponente(n) der Koordinierungsvorrichtung 1300 durchgeführt werden. 19 illustrates an embodiment of a logic flow 2100 , The logic flow 2100 may be representative of some or all of the operations performed by one or more of the embodiments described herein. In particular, the logic flow 2100 Illustrate operations by the processor 1350 during the execution of the control routine 1340 and / or the compile routine 1440 and / or other component (s) of the coordinator 1300 be performed.

Bei 2110 kann ein Prozessor einer Koordinierungsvorrichtung eines verteilten Verarbeitungssystems (z. B. der Prozessor 1350 der Koordinierungsvorrichtung 1300 des verteilten Verarbeitungssystems 1000) Knotenstatus analysieren, die die Koordinierungsvorrichtung wiederkehrend von Knotenvorrichtungen eines Gitters von Knotenvorrichtungen empfängt (z. B. die Knotenstatus 1535 der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005), um zu bestimmen, welche Verarbeitungsressourcen innerhalb jeder der Knotenvorrichtungen verfügbar sind. Wie bereits erörtert, können die Knotenstatus 1535, die wiederkehrend durch die Knotenvorrichtungen 1500 an die Koordinierungsvorrichtung 1300 übertragen werden, anzeigen, welche Verarbeitungsressourcen in jede der Knotenvorrichtungen 1500 integriert sind (z. B. welche CPU(s) 1500 und/oder GPU(s) 1600 eingeschlossen sind, welche Verarbeitungsmerkmale von jeder bereitgestellt werden usw.) und/oder in welchem Ausmaß diese Verarbeitungsressourcen aktuell innerhalb jeder der Knotenvorrichtungen 1500 verfügbar sind.at 2110 For example, a processor may be a coordinating device of a distributed processing system (eg, the processor 1350 the coordinator 1300 of the distributed processing system 1000 ) Analyze node status that the coordinator recursively receives from node devices of a grid of node devices (eg, node statuses 1535 the node devices 1500 of the node device grid 1005 ) to determine which processing resources are available within each of the node devices. As discussed earlier, the node states 1535 returning through the knot devices 1500 to the coordinator 1300 indicate which processing resources are in each of the node devices 1500 are integrated (eg which CPU (s) 1500 and / or GPU (s) 1600 including, what processing features are provided by each, etc.) and / or to what extent these processing resources are currently within each of the node devices 1500 Are available.

Bei 2120 kann der Prozessor der Koordinierungsvorrichtung prüfen, ob in den Knotenstatus irgendwelche GPUs als ausreichend verfügbar innerhalb irgendwelcher der Knotenvorrichtungen angezeigt sind, so dass diesen Knotenvorrichtungen eine Aufgabe zugewiesen werden könnte, um von derartigen verfügbaren GPUs durchgeführt zu werden. Falls keine GPUs so verfügbar sind, kann der Prozessor bei 2122 alle der Taskroutinen einer Analyseroutine kompilieren, die von den CPUs der Knotenvorrichtungen ausgeführt werden sollen (z. B. die Taskroutinen 1211 einer Analyseroutine 1210). Bei 2124 kann der Prozessor dann die Zuweisung aller der Aufgaben der Analyseroutine an Knotenvorrichtungen priorisieren, die ausgewählt wurden, da sie nur eine oder mehrere CPUs integrieren und/oder eine Kombination aus einer oder mehreren CPUs und einer oder mehreren GPUs integrieren.at 2120 For example, the processor of the coordinator may check whether any GPUs are displayed as sufficiently available within any of the node devices in the node status so that a task could be assigned to these node devices to be performed by such available GPUs. If no GPUs are so available, the processor at 2122 compile all of the task routines of an analysis routine to be executed by the CPUs of the node devices (eg, the task routines 1211 an analysis routine 1210 ). at 2124 For example, the processor may prioritize the assignment of all of the tasks of the analysis routine to node devices that have been selected because they integrate only one or more CPUs and / or integrate a combination of one or more CPUs and one or more GPUs.

Falls jedoch GPUs vorhanden sind, die bei 2120 als ausreichend verfügbar erachtet werden, dann kann der Prozessor bei 2130 jede der Taskroutinen der Analyseroutine analysieren, um zu bestimmen, ob irgendwelche der Taskroutinen für eine Umwandlung ihrer Anweisungen und eine Kompilierung zugänglich sind, die von den GPUs der Knotenvorrichtungen des Knotenvorrichtungsgitters ausgeführt werden soll. Falls bei 2140 keine derartigen zugänglichen Taskroutinen vorhanden sind, dann kann der Prozessor bei 2122 alle der Taskroutinen der Analyseroutine kompilieren, die durch die CPUs der Knotenvorrichtungen ausgeführt werden sollen. Dann kann der Prozessor bei 2124 erneut die Zuweisung aller der Aufgaben der Analyseroutine an Knotenvorrichtungen priorisieren, die ausgewählt wurden, da sie nur eine oder mehrere CPUs integrieren und/oder eine Kombination aus einer oder mehreren CPUs und einer oder mehreren GPUs integrieren. Wie zuvor erörtert, kann, wenn keine der Taskroutinen 1211 einer Analyseroutine 1210 für die Kompilierung zur Ausführung durch eine GPU 1650 zugänglich sind, die Priorisierung der Zuweisung der Aufgaben einer derartigen Analyseroutine 1210 an Knotenvorrichtungen 1500, die nur CPU(s) 1550 integrieren, falls möglich, und/oder Knotenvorrichtungen 1500, die eine Kombination aus der/den CPUs) 1550 und der/den GPU(s) 1650 integrieren, falls erforderlich, als wünschenswert erachtet werden, um die Zuweisungen von Aufgaben an Knotenvorrichtungen 1500, die GPUs 1650 integrieren, zu minimieren, wenn keine der Aufgaben von einer GPU 1650 ausgeführt werden sollen. Dies kann dazu beitragen, dass die GPUs 1650 der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005 zur Verwendung bei der Durchführung von Aufgaben einer anderen Analyseroutine, die von GPUs durchgeführt werden können, leichter verfügbar bleiben.However, if GPUs are present, the at 2120 can be considered sufficiently available, then the processor can 2130 Analyze each of the analysis routine's task routines to determine if any of the task routines are accessible for conversion of their instructions and compilation to be performed by the GPUs of the node devices of the node device grid. If at 2140 If there are no such accessible task routines, then the processor can 2122 compile all of the task routines of the analysis routines to be executed by the CPUs of the node devices. Then the processor at 2124 again prioritizing the assignment of all of the tasks of the analysis routines to node devices that have been selected because they integrate only one or more CPUs and / or integrate a combination of one or more CPUs and one or more GPUs. As previously discussed, if none of the task routines 1211 an analysis routine 1210 for compilation for execution by a GPU 1650 the prioritization of the assignment of the tasks of such an analysis routine 1210 to node devices 1500 that only CPU (s) 1550 integrate, if possible, and / or node devices 1500 that is a combination of the CPU (s)) 1550 and the GPU (s) 1650 integrate, if necessary, deemed desirable to the assignments of tasks to node devices 1500 , the GPUs 1650 integrate, minimize, if none of the tasks of a GPU 1650 to be executed. This can help make the GPUs 1650 the node devices 1500 of the node device grid 1005 remain more readily available for use in performing tasks of another analysis routine that can be performed by GPUs.

Falls bei 2140 jedoch wenigstens eine Taskroutine der Analyseroutine vorhanden ist, die für eine derartige Umwandlung und Kompilierung zugänglich ist, kann bei 2150 geprüft werden, ob alle der Taskroutinen der Analyseroutine so zugänglich sind. Falls dies der Fall ist, kann der Prozessor bei 2152 alle der Taskroutinen der Analyseroutine kompilieren, die von den GPUs der Knotenvorrichtungen ausgeführt werden sollen. Bei 2154 kann der Prozessor dann die Zuweisung aller der Aufgaben der Analyseroutine an Knotenvorrichtungen priorisieren, die ausgewählt wurden, da sie nur eine oder mehrere GPUs integrieren und/oder eine Kombination aus einer oder mehreren CPUs und einer oder mehreren GPUs integrieren.If at 2140 however, there is at least one task routine of the analysis routine that is accessible for such conversion and compilation, at 2150 It checks whether all of the task routines of the analysis routine are so accessible. If so, the processor may be at 2152 all of the Compile task routines of the analysis routines to be executed by the GPUs of the node devices. at 2154 For example, the processor may prioritize the assignment of all of the tasks of the analysis routine to node devices that have been selected because they integrate only one or more GPUs and / or integrate a combination of one or more CPUs and one or more GPUs.

Falls bei 2150 jedoch eine Mischung von Taskroutinen vorhanden ist, die für eine derartige Umwandlung und Kompilierung zugänglich und nicht zugänglich sind, dann kann der Prozessor bei 2160 alle der Taskroutinen der Analyseroutine kompilieren, die so zugänglich sind, um von den GPUs der Knotenvorrichtungen ausgeführt zu werden. Bei 2162 kann der Prozessor alle der Taskroutinen der Analyseroutine kompilieren, die nicht so zugänglich sind, um von den CPUs der Knotenvorrichtungen ausgeführt zu werden. Bei 2164 kann der Prozessor dann die Zuweisung aller der Aufgaben der Analyseroutine an Knotenvorrichtungen priorisieren, die ausgewählt wurden, da sie eine Kombination aus einer oder mehreren CPUs und einer oder mehreren GPUs integrieren.If at 2150 However, if there is a mix of task routines that are accessible and inaccessible for such conversion and compilation, then the processor may be unable to do so 2160 compile all of the analysis routine task routines that are accessible to be executed by the GPUs of the node devices. at 2162 For example, the processor may compile all of the task routines of the analysis routines that are not as accessible to be executed by the CPUs of the node devices. at 2164 For example, the processor may prioritize the assignment of all of the tasks of the analysis routine to node devices that have been selected because they integrate a combination of one or more CPUs and one or more GPUs.

20 veranschaulicht ein Ausführungsbeispiel eines Logikflusses 2200. Der Logikfluss 2200 kann repräsentativ für einige oder alle der Operationen sein, die von einer oder mehreren der hierin beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2200 Operationen veranschaulichen, die durch die eine oder mehreren CPUs 1550 bei der Ausführung der Steuerroutine 1540 und/oder der Kompilierroutine 1440 und/oder andere Komponente(n) der Knotenvorrichtungen 1500 durchgeführt werden. 20 illustrates an embodiment of a logic flow 2200 , The logic flow 2200 may be representative of some or all of the operations performed by one or more of the embodiments described herein. In particular, the logic flow 2200 Illustrate operations by the one or more CPUs 1550 during the execution of the control routine 1540 and / or the compile routine 1440 and / or other component (s) of the node devices 1500 be performed.

Bei 2210 kann eine CPU einer Knotenvorrichtung eines verteilten Verarbeitungssystems (z. B. eine CPU 1550 einer der Knotenvorrichtungen 1500 des verteilten Verarbeitungssystems 1000) eine Taskroutine (z. B. eine Taskroutine 1211 einer Analyseroutine 1210) analysieren, um zu bestimmen, ob sie für eine Umwandlung ihrer Anweisungen und eine Kompilierung zugänglich ist, um durch die eine oder mehreren GPUs der Knotenvorrichtung (z. B. eine oder mehrere der GPUs 1650) ausgeführt zu werden. Wie zuvor erörtert, können in Ausführungsformen, in denen die Koordinierungsvorrichtung 1300 die Taskroutinen 1211 nicht kompiliert, eine oder mehrere CPUs 1550 von jeder der Knotenvorrichtungen 1500 dies tun. Auch kann eine derartige Kompilierung eine Analyse jeder Taskroutine 1211 einschließen, die von jeder der Knotenvorrichtungen 1500 empfangen wird, die eine oder mehrere der GPUs 1650 integriert, um zu bestimmen, ob die Kompilierung zur Ausführung durch eine oder mehrere CPUs 1550 oder eine oder mehrere GPUs 1650 ausgeführt werden soll.at 2210 For example, a CPU of a node device of a distributed processing system (eg, a CPU 1550 one of the node devices 1500 of the distributed processing system 1000 ) a task routine (eg, a task routine 1211 an analysis routine 1210 ) to determine whether it is amenable to conversion of its instructions and compilation to be performed by the one or more GPUs of the node device (e.g., one or more of the GPUs 1650 ) to be executed. As previously discussed, in embodiments where the coordination device 1300 the task routines 1211 not compiled, one or more CPUs 1550 from each of the node devices 1500 to do this. Also, such a compilation may be an analysis of each task routine 1211 that of each of the node devices 1500 is received, the one or more of the GPUs 1650 integrated to determine if compilation is to be executed by one or more CPUs 1550 or one or more GPUs 1650 to be executed.

Falls die Taskroutine bei 2220 nicht so zugänglich ist, dann kann die CPU bei 2222 die Taskroutine der Analyseroutine kompilieren, um durch die eine oder mehreren CPUs der Knotenvorrichtung ausgeführt zu werden. Falls die Taskroutine bei 2220 jedoch so zugänglich ist, dann kann die CPU bei 2230 die Taskroutine der Analyseroutine kompilieren, um durch die eine oder mehreren GPUs der Knotenvorrichtung ausgeführt zu werden.If the task routine at 2220 not so accessible, then the CPU can 2222 compile the task routine of the parsing routine to be executed by the one or more CPUs of the node device. If the task routine at 2220 However, as accessible, then the CPU can 2230 compile the task routine of the parsing routine to be executed by the one or more GPUs of the node device.

21 veranschaulicht ein Ausführungsbeispiel eines Logikflusses 2300. Der Logikfluss 2300 kann repräsentativ für einige oder alle der Operationen sein, die von einer oder mehreren der hierin beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2300 Operationen veranschaulichen, die durch den Prozessor 1350 bei der Ausführung der Steuerroutine 1340 und/oder andere Komponente(n) der Koordinierungsvorrichtung 1300 durchgeführt werden. 21 illustrates an embodiment of a logic flow 2300 , The logic flow 2300 may be representative of some or all of the operations performed by one or more of the embodiments described herein. In particular, the logic flow 2300 Illustrate operations by the processor 1350 during the execution of the control routine 1340 and / or other component (s) of the coordinator 1300 be performed.

Bei 2310 kann ein Prozessor einer Koordinierungsvorrichtung eines verteilten Verarbeitungssystems (z. B. der Prozessor 1350 der Koordinierungsvorrichtung 1300 des verteilten Verarbeitungssystems 1000) Metadaten eines Datensatzes empfangen, die beschreibend für einen Datensatz von einer oder mehreren Speichervorrichtungen ist (z. B. die Metadaten 1135 von einer oder mehreren Speichervorrichtungen 1100). Bei 2312 kann der Prozessor eine Analyseroutine empfangen, die mehrere Taskroutinen von der einen oder den mehreren Speichervorrichtungen und/oder einer Betrachtungsvorrichtung einschließt (z. B. die Analyseroutine 1210, die mehrere Taskroutinen 1211 von der einen oder den mehreren Speichervorrichtungen 1100 oder von der Betrachtungsvorrichtung 1800 einschließt). Bei 2314 kann der Prozessor die letzten Übertragungen von Knotenstatusdaten von Knotenvorrichtungen eines Gitters von Knotenvorrichtungen des verteilten Verarbeitungssystems empfangen (z. B. die Knotenstatus 1535 der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005). Wie zuvor erörtert, kann die Koordinierungsvorrichtung 1300 in Ausführungsformen, in denen die Knotenvorrichtungen 1500 auch als Speichervorrichtungen wenigstens des einen oder der mehreren Datensätze 1130 dienen, die Metadaten 1135 und/oder die Analyseroutine von einer der Knotenvorrichtungen 1500 empfangen.at 2310 For example, a processor may be a coordinating device of a distributed processing system (eg, the processor 1350 the coordinator 1300 of the distributed processing system 1000 ) Receive metadata of a record descriptive of a record of one or more storage devices (e.g., the metadata 1135 of one or more storage devices 1100 ). at 2312 For example, the processor may receive an analysis routine that includes multiple task routines from the one or more storage devices and / or a viewer (eg, the analysis routine 1210 that have multiple task routines 1211 from the one or more storage devices 1100 or from the viewing device 1800 including). at 2314 For example, the processor may receive the most recent transmissions of node status data from node devices of a lattice from node devices of the distributed processing system (e.g., the node statuses 1535 the node devices 1500 of the node device grid 1005 ). As previously discussed, the coordinating device 1300 in embodiments in which the node devices 1500 also as storage devices of at least one or more data sets 1130 serve, the metadata 1135 and / or the analysis routine of one of the node devices 1500 receive.

Bei 2320 kann der Prozessor anfängliche Zuweisungen von Datensatzpartitionen (z. B. den Datensatzpartitionen 1131) und anfänglichen Aufgaben ableiten, einschließlich einer Auswahl von mehreren der Knotenvorrichtungen, auf die Datensatzpartitionen verteilt werden sollen, und anfängliche Zuweisungen der einen oder mehreren anfänglichen Aufgaben sollen vorgenommen werden. Bei 2322 kann der Prozessor Anzeigen über die zugewiesene Verteilung der Datensatzpartitionen an eine oder mehrere Speichervorrichtungen und/oder an die ausgewählten Knotenvorrichtungen übertragen. Wie bereits erörtert, kann die Verteilung von Datensatzpartitionen auf die ausgewählten Knotenvorrichtungen von der einen oder den mehreren Speichervorrichtungen unter der einen oder den mehreren Speichervorrichtungen, den ausgewählten Knotenvorrichtungen und/oder der Koordinierungsvorrichtung in einer beliebigen Vielzahl von Weisen koordiniert werden, wobei eine beliebige Vielzahl von Protokollen verwendet wird, um die Übertragung der Datensatzpartitionen an die ausgewählten Knotenvorrichtungen zu veranlassen.at 2320 For example, the processor may make initial allocations of record partitions (eg, record partitions 1131 ) and initial tasks, including a selection of several of them Node devices to which data set partitions are to be distributed and initial assignments of the one or more initial tasks are to be made. at 2322 For example, the processor may transmit displays via the assigned distribution of the record partitions to one or more storage devices and / or to the selected node devices. As previously discussed, the distribution of record partitions to the selected node devices may be coordinated by the one or more memory devices among the one or more memory devices, the selected node devices, and / or the coordinator device in any of a variety of ways Is used to initiate the transfer of the record partitions to the selected node devices.

Bei 2330 kann der Prozessor Anzeigen über die Zuweisung einer ersten Aufgabe an die ausgewählten Knotenvorrichtungen übertragen, die an den ausgewählten Knotenvorrichtungen mit entsprechenden der Datensatzpartitionen durchgeführt werden sollen. Wie bereits erörtert, kann die Übertragung von Taskroutinen der Analyseroutine oder die Übertragung von CPU-Taskroutinen und/oder GPU-Taskroutinen (z. B. der Taskroutinen 1211, der CPU-Taskroutinen 1571 und/oder der GPU-Taskroutinen 1671) an die ausgewählten Knotenvorrichtungen als Teil der Signalisierung von Zuweisungen von Aufgaben an die ausgewählten Knotenvorrichtungen erfolgen.at 2330 For example, the processor may transmit indications about the assignment of a first task to the selected node devices to be performed on the selected node devices with corresponding ones of the record partitions. As previously discussed, the transmission of task routines may be to the parsing routine or the transfer of CPU task routines and / or GPU task routines (eg, the task routines 1211 , the CPU task routines 1571 and / or the GPU task routines 1671 ) to the selected node devices as part of the signaling of assignments of tasks to the selected node devices.

Bei 2340 kann der Prozessor von einer ersten Knotenvorrichtung der ausgewählten Knotenvorrichtungen eine Anzeige über den Abschluss der ersten Aufgabe mit der ersten Datensatzpartition durch die erste Knotenvorrichtung empfangen. Wie bereits erörtert, können derartige Anzeigen als Teil der wiederkehrenden Übertragungen von Knotenstatus 1535 an die Koordinierungsvorrichtung übermittelt werden.at 2340 For example, the processor may receive, from a first node device of the selected node devices, an indication of completion of the first task with the first record partition by the first node device. As previously discussed, such displays may be considered part of the recurring transmissions of node status 1535 be transmitted to the coordinating device.

Bei 2350 kann der Prozessor die Zuweisung einer Durchführung einer zweiten Aufgabe, die eine zweite Datensatzpartition verwendet, an eine beliebige der ausgewählten Knotenvorrichtungen, einschließlich der ersten Knotenvorrichtung, eine vorbestimmte Zeitperiode der Verzögerung lang verzögern, um einer zweiten Knotenvorrichtung der ausgewählten Knotenvorrichtungen, in denen die zweite Datensatzpartition bereits gespeichert ist, eine Möglichkeit zu geben, verfügbar zu werden. Wie bereits erörtert, kann eine derartige Auferlegung einer Verzögerung bei der Zuweisung einer nächsten Aufgabe mit einer bestimmten Datensatzpartition sein, dass einer Knotenvorrichtung, die diese bestimmte Datensatzpartition bereits speichert, ermöglicht wird, verfügbar zu werden, um die Speicherung dieser bestimmten Datensatzpartition innerhalb dieser Knotenvorrichtung zu nutzen, indem die nächste Aufgabe mit der bestimmten Datensatzpartition dieser Knotenvorrichtung zugewiesen wird. Wie bereits erwähnt, können auf diese Weise die Netzbandbreitenressourcen und die Zeit, die für die Übertragung der bestimmten Datensatzpartition an eine andere Knotenvorrichtung benötigt werden, erspart werden, indem auf diese Weise gewartet wird, dass diese Knotenvorrichtung verfügbar wird.at 2350 For example, the processor may delay the assignment of a second task using a second record partition to any of the selected node devices, including the first node device, for a predetermined period of delay to a second node device of the selected node devices in which the second record partition already stored, to give a chance to become available. As previously discussed, such imposition of a delay in assigning a next task to a particular record partition may allow a node device that already stores that particular record partition to be made available to store that particular record partition within that node device by assigning the next task with the particular record partition to that node device. As already mentioned, in this way the network bandwidth resources and the time required for the transmission of the particular data record partition to another node device can be spared, thus waiting for this node device to become available.

Bei 2360 kann der Prozessor prüfen, ob die zweite Knotenvorrichtung, in der die zweite Datensatzpartition bereits gespeichert ist, am Ende der Zeitperiode der Verzögerung verfügbar wurde. Falls die zweite Knotenvorrichtung innerhalb der Zeitperiode der Verzögerung verfügbar wurde, dann kann der Prozessor eine Anzeige der Zuweisung, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen, bei 2362 an die zweite Knotenvorrichtung übertragen. Falls die zweite Knotenvorrichtung jedoch nicht innerhalb der Zeitperiode der Verzögerung verfügbar wurde, dann kann der Prozessor eine Anzeige der Zuweisung, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen, bei 2370 an die erste Knotenvorrichtung übertragen.at 2360 For example, the processor may check to see if the second node device in which the second data set partition has already been stored became available at the end of the time period of the delay. If the second node device became available within the time period of the delay, then the processor may provide an indication of the assignment to perform the second task with the second data set partition 2362 transmitted to the second node device. However, if the second node device did not become available within the time period of the delay, then the processor may provide an indication of the allocation to perform the second task with the second data set partition 2370 transmitted to the first node device.

22 veranschaulicht ein Ausführungsbeispiel eines Logikflusses 2400. Der Logikfluss 2300 kann repräsentativ für einige oder alle der Operationen sein, die von einer oder mehreren der hierin beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2400 Operationen veranschaulichen, die durch den Prozessor 1350 bei der Ausführung der Steuerroutine 1340 und/oder andere Komponente(n) der Koordinierungsvorrichtung 1400 durchgeführt werden. 22 illustrates an embodiment of a logic flow 2400 , The logic flow 2300 may be representative of some or all of the operations performed by one or more of the embodiments described herein. In particular, the logic flow 2400 Illustrate operations by the processor 1350 during the execution of the control routine 1340 and / or other component (s) of the coordinator 1400 be performed.

Bei 2410 kann ein Prozessor einer Koordinierungsvorrichtung eines verteilten Verarbeitungssystems (z. B. der Prozessor 1350 der Koordinierungsvorrichtung 1300 des verteilten Verarbeitungssystems 1000) eine Anzeige von einer Knotenvorrichtung eines Knotenvorrichtungsgitters des verteilten Verarbeitungssystems (z. B. einer der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005) empfangen, dass diese Knotenvorrichtung ihre Durchführung einer Taskroutine abgeschlossen hat, die eine Datensatzpartition eines Datensatzes (z. B. eine der Datensatzpartitionen 1131 des Datensatzes 1130) beinhaltet. Bei 2412 kann der Prozessor die Zeitdauer bestimmen, die zwischen seiner Übertragung eines Signals an die Knotenvorrichtung zur Durchführung der Aufgabe mit der Datensatzpartition und dem Empfang der Anzeige von der Knotenvorrichtung über den Abschluss dieser Durchführung dieser Aufgabe abgelaufen ist.at 2410 For example, a processor may be a coordinating device of a distributed processing system (eg, the processor 1350 the coordinator 1300 of the distributed processing system 1000 ) an indication from a node device of a node device grid of the distributed processing system (e.g., one of the node devices 1500 of the node device grid 1005 ) that this node device has completed its execution of a task routine containing a record partition of a record (eg, one of the record partitions 1131 of the record 1130 ) includes. at 2412 For example, the processor may determine the amount of time that has elapsed between its transmission of a signal to the node device to perform the task with the record partition and receipt of the indication from the node device upon the completion of this performance of that task.

Bei 2420 kann der Prozessor die neue abgelaufene Zeit mit vorherigen abgelaufenen Zeiten vergleichen, die von anderen Knotenvorrichtungen benötigt werden, um die gleiche Aufgabe mit ihren entsprechenden Datensatzpartitionen des gleichen Datensatzes durchzuführen. Bei 2422 kann der Prozessor prüfen, ob die neue abgelaufene Zeit ähnlich wie die vorherigen abgelaufenen Zeiten für diese Durchführungen der gleichen Aufgabe innerhalb eines vorbestimmten Schwellenwerts der Ähnlichkeit sind. Falls dies nicht der Fall ist, dann kann der Prozessor die neue abgelaufene Zeit zusammen mit den vorherigen abgelaufenen Zeiten verwenden, um erneut eine Zeitperiode der Verzögerung abzuleiten, um die eine neue Aufgabenzuweisung verzögert werden soll, um den Abschluss der Aufgabe durch einen anderen Knoten zu ermöglichen. Wie bereits erörtert, können derartige Bestimmungen einer Zeitperiode der Verzögerung eine Mittelwertbildung von Zeitdauern, die von verschiedenen der Knotenvorrichtungen 1500 benötigt werden, um die gleiche Aufgabe durchzuführen, zur Folge haben. at 2420 For example, the processor may compare the new elapsed time with previous elapsed times needed by other node devices to perform the same task with their corresponding record partitions of the same record. at 2422 For example, the processor may check whether the new elapsed time, similar to the previous elapsed times, for these implementations of the same task are within a predetermined threshold of similarity. If not, then the processor may use the new elapsed time along with the previous elapsed times to again derive a time period of delay by which a new task assignment should be delayed in order to complete completion of the task by another node enable. As previously discussed, such determinations of a time period of delay may average a time duration of different ones of the node devices 1500 needed to perform the same task.

23 veranschaulicht ein Ausführungsbeispiel eines Logikflusses 2500. Der Logikfluss 2500 kann repräsentativ für einige oder alle der Operationen sein, die von einer oder mehreren der hierin beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2500 Operationen veranschaulichen, die durch den Prozessor 1350 bei der Ausführung der Steuerroutine 1340 und/oder andere Komponente(n) der Koordinierungsvorrichtung 1300 durchgeführt werden. 23 illustrates an embodiment of a logic flow 2500 , The logic flow 2500 may be representative of some or all of the operations performed by one or more of the embodiments described herein. In particular, the logic flow 2500 Illustrate operations by the processor 1350 during the execution of the control routine 1340 and / or other component (s) of the coordinator 1300 be performed.

Bei 2510 kann ein Prozessor einer Koordinierungsvorrichtung eines verteilten Verarbeitungssystems (z. B. der Prozessor 1350 der Koordinierungsvorrichtung 1300 des verteilten Verarbeitungssystems 1000) von einer ersten Knotenvorrichtung eines Knotenvorrichtungsgitters des verteilten Verarbeitungssystems (z. B. einer der Knotenvorrichtungen 1500 des Knotenvorrichtungsgitters 1005) eine Anzeige des Abschlusses einer ersten Aufgabe mit einer ersten Datensatzpartition eines Datensatzes (z. B. einer der Datensatzpartitionen 1131 eines Datensatzes 1130) durch die erste Knotenvorrichtung empfangen. Wie bereits erörtert, können derartige Anzeigen als Teil der wiederkehrenden Übertragungen von Knotenstatus 1535 an die Koordinierungsvorrichtung übermittelt werden.at 2510 For example, a processor may be a coordinating device of a distributed processing system (eg, the processor 1350 the coordinator 1300 of the distributed processing system 1000 ) from a first node device of a node device grid of the distributed processing system (e.g., one of the node devices 1500 of the node device grid 1005 ) an indication of the completion of a first task with a first record partition of a record (eg, one of the record partitions 1131 a record 1130 ) received by the first node device. As previously discussed, such displays may be considered part of the recurring transmissions of node status 1535 be transmitted to the coordinating device.

Bei 2520 kann der Prozessor die Zuweisung einer Durchführung einer zweiten Aufgabe, die eine zweite Datensatzpartition des gleichen Datensatzes verwendet, an beliebige Knotenvorrichtungen des Knotenvorrichtungsgitters, einschließlich der ersten Knotenvorrichtung, eine vorbestimmte Zeitperiode der Verzögerung lang verzögern, um einer zweiten Knotenvorrichtung des Knotenvorrichtungsgitters, in der die zweite Datensatzpartition bereits gespeichert ist, eine Möglichkeit zu geben, verfügbar zu werden. Bei 2530 kann der Prozessor prüfen, ob die zweite Knotenvorrichtung, in der die zweite Datensatzpartition bereits gespeichert ist, am Ende der Zeitperiode der Verzögerung verfügbar wurde. Falls die zweite Knotenvorrichtung innerhalb der Zeitperiode der Verzögerung verfügbar wurde, dann kann der Prozessor eine Anzeige der Zuweisung, um die zweite Aufgabe mit der zweiten Datensatzpartition durchzuführen, bei 2532 an die zweite Knotenvorrichtung übertragen.at 2520 For example, the processor may delay the assignment of a second task execution using a second record partition of the same record to any node devices of the node device grid including the first node device for a predetermined period of delay to a second node device of the node device grid in which the second node device Record partition is already stored to give a way to become available. at 2530 For example, the processor may check to see if the second node device in which the second data set partition has already been stored became available at the end of the time period of the delay. If the second node device became available within the time period of the delay, then the processor may provide an indication of the assignment to perform the second task with the second data set partition 2532 transmitted to the second node device.

Falls die zweite Knotenvorrichtung bei 2530 jedoch nicht innerhalb der Zeitperiode der Verzögerung verfügbar wurde, dann kann der Prozessor bei 2540 prüfen, ob eine andere Knotenvorrichtung des Knotenvorrichtungsgitters vorhanden war, die mit der zweiten Datensatzpartition versehen war, um die andere Knotenvorrichtung vorzubereiten, um als Backup-Knotenvorrichtung für eine Aufgabe zu dienen, die die zweite Datensatzpartition beinhaltet. Falls keine derartige andere Vorrichtung vorhanden ist, dann kann der Prozessor eine Anzeige über die Zuweisung der Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition bei 2542 an die erste Knotenvorrichtung übertragen.If the second node device at 2530 however, did not become available within the time period of the delay, then the processor can at 2540 check if there was another node device of the node device grid provided with the second record partition to prepare the other node device to serve as a backup node device for a task including the second record partition. If no such other device is present, then the processor may provide an indication of the assignment of the second task to the second record partition 2542 transmitted to the first node device.

Falls jedoch bei 2540 eine derartige andere Knotenvorrichtung vorhanden ist, dann kann der Prozessor bei 2550 prüfen, ob eine Anzeige empfangen wurde, dass die andere Knotenvorrichtung aktuell verfügbar ist, um eine Aufgabe zugewiesen zu bekommen. Falls dies nicht der Fall ist, dann kann der Prozessor erneut eine Anzeige über die Zuweisung der Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition bei 2542 an die erste Knotenvorrichtung übertragen. Falls jedoch eine derartige Anzeige der anderen aktuell verfügbaren Knotenvorrichtung empfangen wurde, dann kann der Prozessor eine Anzeige der Zuweisung der Durchführung der zweiten Aufgabe mit der zweiten Datensatzpartition bei 2552 an die andere Knotenvorrichtung übertragen.If, however, at 2540 If such another node device is present, then the processor can assist in 2550 check if an indication has been received that the other node device is currently available to be assigned a task. If not, then the processor may again provide an indication of the assignment of the second task to the second record partition 2542 transmitted to the first node device. However, if such an indication of the other currently available node device has been received, then the processor may include an indication of the assignment of performing the second task to the second data set partition 2552 transmitted to the other node device.

In verschiedenen Ausführungsformen kann jeder der Prozessoren 1150, 1350, 1550, 1650 und 1850 einen beliebigen einer Vielzahl von kommerziell erhältlichen Prozessoren einschließen. Ferner können einer oder mehrere dieser Prozessoren mehrere Prozessoren, einen Multithreaded-Prozessor, einen Multikernprozessor (unabhängig davon, ob die mehreren Kerne auf den gleichen oder separaten Dies koexistieren) und/oder eine Multiprozessorarchitektur einer anderen Art einschließen, durch die mehrere physisch getrennte Prozessoren verbunden sind.In various embodiments, each of the processors may be 1150 . 1350 . 1550 . 1650 and 1850 include any of a variety of commercially available processors. Further, one or more of these processors may include multiple processors, a multithreaded processor, a multi-core processor (whether the multiple cores coexist on the same or separate dies), and / or or another type of multiprocessor architecture that connects multiple physically separate processors.

In einer bestimmten Ausführungsform kann die CPU 1550 von jeder der einen oder den mehreren Knotenvorrichtungen 1500 jedoch ausgewählt werden, um die Analyse mehrerer Instanzen von Auftragsflüssen wenigstens teilweise parallel effizient durchzuführen. Beispielhaft kann die CPU 1550 eine Single-Instruction-Multiple-Data(SIMD)-Architektur integrieren, kann mehrere Verarbeitungs-Pipelines integrieren und/oder kann die Fähigkeit zur Unterstützung mehrerer simultaner Threads der Ausführung pro Verarbeitungs-Pipeline integrieren.In a particular embodiment, the CPU 1550 each of the one or more node devices 1500 however, be selected to efficiently perform the analysis of multiple instances of job flows at least partially in parallel. By way of example, the CPU 1550 Integrate a single-instruction-multiple-data (SIMD) architecture, integrate multiple processing pipelines, and / or integrate the ability to support multiple simultaneous execution threads per processing pipeline.

Alternativ oder zusätzlich kann in einer bestimmten Ausführungsform jede GPU 1650 der einen oder mehreren Knotenvorrichtungen, die wenigstens eine der GPUs 1650 einschließen können, Multithreaded-Fähigkeiten und/oder mehrere Prozessorkerne integrieren, um parallele Durchführungen von Aufgaben zu ermöglichen. Beispielhaft kann die GPU 1650 eine interne Architektur integrieren, die ausgelegt ist, um parallele Durchführungen von Aufgaben zu ermöglichen, die einen relativ begrenzten Anweisungssatz über Hunderte, Tausende, Zehntausende oder noch mehr Threads der Ausführung verwenden, um Grafikanwendungen zu unterstützen, die relativ hochauflösende Bilder beinhalten.Alternatively or additionally, in a particular embodiment, each GPU 1650 the one or more node devices, the at least one of the GPUs 1650 include multithreaded capabilities and / or multiple processor cores to allow parallel execution of tasks. By way of example, the GPU 1650 integrate an internal architecture designed to allow parallel execution of tasks that use a relatively limited set of instructions over hundreds, thousands, tens of thousands or even more threads of execution to support graphics applications that involve relatively high-resolution images.

In verschiedenen Ausführungsformen kann jede der Steuerroutinen 1140, 1340, 1540, 1840 und 1640, einschließlich der Komponenten, aus denen jede zusammengesetzt ist, ausgewählt werden, dass sie auf jeder Art von Prozessor oder Prozessoren betriebsfähig sind, die ausgewählt werden, um anwendbare der Prozessoren 1150, 1350, 1550, 1850 und/oder 1650 innerhalb der entsprechenden der Vorrichtungen 1100, 1300, 1500 und/oder des Grafikcontrollers 1600 zu implementieren. In verschiedenen Ausführungsformen kann jede dieser Routinen eines oder mehrere aus einem Betriebssystem, Gerätetreibern und/oder Routinen auf Anwendungsebene einschließen (z. B. sogenannte „Software-Suiten”, die auf Disc-Medien bereitgestellt werden, „Applets”, die von einem entfernten Server erhalten werden, usw.). Wenn ein Betriebssystem eingeschlossen ist, kann es sich bei dem Betriebssystem um ein beliebiges einer Vielzahl von verfügbaren Betriebssystemen handeln, die für die Prozessoren 1150, 1550 und/oder 1850 geeignet sind. Wenn ein oder mehrere Gerätetreiber eingeschlossen sind, können diese Gerätetreiber Unterstützung für beliebige einer Vielzahl anderer Komponenten, ob Hardware- oder Softwarekomponenten, der Vorrichtungen 1100, 1300, 1500, 1800 und/oder 1600 bereitstellen.In various embodiments, each of the control routines may be 1140 . 1340 . 1540 . 1840 and 1640 , including the components of which each is composed, are selected to be operable on any type of processor or processors selected to be applicable to the processors 1150 . 1350 . 1550 . 1850 and or 1650 within the corresponding of the devices 1100 . 1300 . 1500 and / or the graphics controller 1600 to implement. In various embodiments, each of these routines may include one or more of an application-level operating system, device drivers, and / or routines (e.g., so-called "software suites" provided on disc media, "applets" remote from one Server, etc.). If an operating system is included, the operating system may be any of a variety of available operating systems for the processors 1150 . 1550 and or 1850 are suitable. If one or more device drivers are included, these device drivers may support any of a variety of other components, whether hardware or software components, of the devices 1100 . 1300 . 1500 . 1800 and / or 1600.

In verschiedenen Ausführungsformen kann jeder der Speicher 1160, 1360, 1560, 1660 und 1860 auf beliebigen einer Vielzahl von Informationsspeichertechnologien basieren, einschließlich flüchtiger Technologien, die die unterbrechungsfreie Bereitstellung von elektrischer Leistung erfordern, und/oder Technologien, die den Einsatz von maschinenlesbaren Speichermedien beinhalten, die entfernbar sein können oder nicht. Somit kann jeder dieser Speicher einen beliebigen einer Vielzahl von Typen (oder Kombinationen von Typen) von Speichervorrichtung einschließen, einschließlich, ohne Einschränkung: Nur-Lese-Speicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random-Access Memory, RAM), dynamisches RAM (DRAM), DRAM mit doppelter Datenrate (Double-Data-Rate DRAM, DDR-DRAM), synchrones DRAM (SDRAM), statisches RAM (SRAM), programmierbares ROM (PROM), löschbares programmierbares ROM (Erasable Programmable ROM, EPROM), elektrisch löschbares programmierbares ROM (Electrically Erasable Programmable ROM, EEPROM), Flash-Speicher, Polymerspeicher (z. B. ferroelektrischer Polymerspeicher), Ovonic-Speicher, Phasenwechsel- oder ferroelektrischer Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, magnetische oder optische Karten, ein oder mehrere einzelne ferromagnetische Plattenlaufwerke, nicht-flüchtiges Storage Class Memory, oder eine Mehrzahl von Speichervorrichtungen, die in einem oder mehreren Arrays organisiert sind (z. B. mehrere ferromagnetische Plattenlaufwerke, die in einem redundanten Array unabhängiger Festplatten (Redundant Array of Independent Disks, RAID) organisiert sind). Es sei anzumerken, dass, obwohl jeder dieser Speicher als ein einzelner Block dargestellt wird, einer oder mehrere davon mehrere Speichervorrichtungen einschließen können, die auf unterschiedlichen Speichertechnologien basieren können. Somit können beispielsweise einer oder mehrere von jedem dieser dargestellten Speicher eine Kombination von einem optischen Laufwerk oder Flash-Speicherkartenleser, durch die Programme und/oder Daten auf irgendeiner Form eines maschinenlesbaren Speichermediums gespeichert und übermittelt werden können, einem ferromagnetischen Plattenlaufwerk, um Programme und/oder Daten einen relativ längeren Zeitraum lang lokal zu speichern, und einer oder mehreren flüchtigen Festkörperspeichervorrichtungen, die einen relativ schnellen Zugriff auf Programme und/oder Daten ermöglichen (z. B. SRAM oder DRAM), repräsentieren. Es sei auch anzumerken, dass jeder dieser Speicher aus mehreren Speicherkomponenten, die auf einer identischen Speichertechnologie basieren, bestehen kann, die jedoch infolge der Spezialisierung in der Verwendung separat geführt werden können (z. B. werden einige DRAM-Vorrichtungen als ein Hauptspeicher verwendet, während andere DRAM-Vorrichtungen als ein unterschiedlicher Framebuffer eines Grafikcontrollers verwendet werden).In various embodiments, each of the memories 1160 . 1360 . 1560 . 1660 and 1860 are based on any of a variety of information storage technologies, including volatile technologies that require the uninterruptible provision of electrical power, and / or technologies that involve the use of machine-readable storage media that may or may not be removable. Thus, each of these memories may include any of a variety of types (or combinations of types) of memory device including, without limitation: read-only memory (ROM), random access memory (RAM), dynamic random access memory (DRAM), double-data-rate DRAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (Erasable Programmable ROM, EPROM) ), Electrically Erasable Programmable ROM (EEPROM), Flash Memory, Polymer Memory (eg, Ferroelectric Polymer Memory), Ovonic Memory, Phase Change or Ferroelectric Memory, Silicon Oxide Nitride Oxide Silicon (SONOS ) Memory, magnetic or optical cards, one or more individual ferromagnetic disk drives, non-volatile storage class memory, or a plurality of memory devices, in one or more reren arrays are organized (z. B. several ferromagnetic disk drives organized in a redundant array of independent hard disks (redundant array of independent disks, RAID). It should be noted that although each of these memories is represented as a single block, one or more of them may include multiple memory devices that may be based on different memory technologies. Thus, for example, one or more of each of the illustrated memories may include a combination of an optical drive or flash memory card reader through which programs and / or data may be stored and communicated on any form of machine-readable storage medium, a ferromagnetic disk drive, programs, and / or Storing data locally for a relatively longer period of time, and one or more volatile solid-state storage devices that provide relatively quick access to programs and / or data (eg, SRAM or DRAM). It should also be noted that each of these memories may consist of multiple memory components based on identical memory technology, but which may be separately routed due to the specialization in use (eg, some DRAM devices are used as a main memory, while other DRAM devices are used as a different frame buffer of a graphics controller).

In einer bestimmten Ausführungsform kann der Speicher 1160 jedoch in Ausführungsformen, in denen die eine oder mehreren der Speichervorrichtungen 1100 die Speicherung eines oder mehrerer Datensätze 1130 bereitstellen oder in denen der nicht-flüchtige Speicher 1563 in Ausführungsformen, in denen die Knotenvorrichtungen 1500 die Speicherung eines oder mehrerer Datensätze 1130 bereitstellen, mit einem redundanten Array unabhängiger Festplatten (Redundant Array of Independent Disks, RAID) eines RAID-Levels implementiert werden, der ausgewählt wurde, um Fehlertoleranz für die Speicherung eines oder mehrerer Datensätze 1130 bereitzustellen. In a particular embodiment, the memory may be 1160 however, in embodiments in which the one or more of the memory devices 1100 the storage of one or more records 1130 deploy or where the non-volatile memory 1563 in embodiments in which the node devices 1500 the storage of one or more records 1130 deploy with a redundant Array of Independent Disks (RAID) of a RAID level selected to provide fault tolerance for storing one or more records 1130 provide.

In verschiedenen Ausführungsformen kann jede der Eingabevorrichtungen 1320 und 1820 jeweils beliebige einer Vielzahl von Typen von Eingabevorrichtung sein, die jeweils beliebige einer Vielzahl von Eingabeerkennungs- und/oder Empfangstechnologien verwenden kann. Beispiele für derartige Eingabevorrichtungen umfassen unter anderem Mikrofone, Fernbedienungen, Eingabestifte, Kartenleser, Fingerabdruckleser, Virtual-Reality-Interaktionshandschuhe, grafische Eingabetablets, Joysticks, Tastaturen, Netzhaut-Scanner, die Berührungseingabekomponenten von Berührungsbildschirmen, Trackballs, Umgebungssensoren und/oder entweder Kameras oder Kameraanordnungen zur Überwachung der Bewegung von Personen, um Befehle und/oder Daten zu akzeptieren, die von diesen Personen mittels Gesten und/oder Mimik bereitgestellt werden.In various embodiments, each of the input devices 1320 and 1820 Any of a variety of types of input device may be any of a variety of input detection and / or reception technologies. Examples of such input devices include, but are not limited to, microphones, remote controls, styluses, card readers, fingerprint readers, virtual reality interaction gloves, input graphic tablets, joysticks, keyboards, retinal scanners, touchscreen touch input components, trackballs, environmental sensors, and / or either camera or camera assemblies Monitoring movement of persons to accept commands and / or data provided by these persons through gestures and / or facial expressions.

In verschiedenen Ausführungsformen kann jede der Anzeigen 1380 und 1880 jeweils beliebige einer Vielzahl von Typen von Anzeigevorrichtung sein, die jeweils beliebige einer Vielzahl von visuellen Präsentationstechnologien verwenden kann. Beispiele für eine derartige Anzeigevorrichtung umfassen unter anderem eine Kathodenstrahlröhre (Cathode-Ray Tube, CRT), ein Elektrolumineszenz(EL)-Panel, eine Flüssigkristallanzeige (Liquid Crystal Display, LCD), eine Gasplasmaanzeige usw. In einigen Ausführungsformen können die Anzeigen 1180 und/oder 1880 jeweils eine Berührungsbildschirmanzeige sein, so dass die Eingabevorrichtungen 1110 und/oder 1810 jeweils als berührungsempfindliche Komponenten davon darin integriert sein können.In various embodiments, each of the displays 1380 and 1880 Any of a variety of types of display device may be any of a variety of visual presentation technologies. Examples of such a display device include, but are not limited to, a cathode ray tube (CRT), an electroluminescent (EL) panel, a liquid crystal display (LCD), a gas plasma display, etc. In some embodiments, the displays can 1180 and or 1880 each be a touch screen display, so that the input devices 1110 and or 1810 each as touch-sensitive components thereof may be integrated therein.

In verschiedenen Ausführungsformen kann jede der Netzschnittstellen 1190, 1390, 1590 und 1890 beliebige einer Vielzahl von Kommunikationstechnologien verwenden, um diesen Vorrichtungen zu ermöglichen, wie beschrieben mit anderen Vorrichtungen gekoppelt zu werden. Jede dieser Schnittstellen schließt Schaltungen ein, die wenigstens einen Teil der erforderlichen Funktionalität bereitstellen, um eine derartige Kopplung zu ermöglichen. Jede dieser Schnittstellen kann jedoch auch wenigstens teilweise mit Sequenzen von Anweisungen implementiert werden, die von entsprechenden der Prozessoren ausgeführt werden (z. B. zur Implementierung eines Protokollstapels oder anderer Merkmale). Wenn elektrische und/oder optisch leitfähige Verkabelung verwendet wird, können diese Schnittstellen Timings und/oder Protokolle verwenden, die mit beliebigen einer Vielzahl von Industriestandards übereinstimmen, einschließlich, ohne Einschränkung, RS-232C, RS-422, USB, Ethernet ( IEEE-802.3 ) oder IEEE-1394 . Wenn die Verwendung drahtloser Übertragungen beinhaltet ist, können diese Schnittstellen Timings und/oder Protokolle verwenden, die mit beliebigen einer Vielzahl von Industriestandards übereinstimmen, einschließlich, ohne Einschränkung: IEEE 802.11a , 802.11ad , 802.11ah , 802.11ax , 802.11b , 802.11g , 802.16 , 802.20 (allgemein als „Mobile Broadband Wireless Access” bezeichnet); Bluetooth; ZigBee; oder einem zellularen Funktelefondienst wie beispielsweise GSM mit General Packet Radio Service (GSM/GPRS), CDMA/1xRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE usw.In various embodiments, each of the network interfaces may be 1190 . 1390 . 1590 and 1890 use any of a variety of communication technologies to enable these devices to be coupled to other devices as described. Each of these interfaces includes circuitry that provides at least some of the functionality required to facilitate such coupling. However, each of these interfaces may also be implemented, at least in part, with sequences of instructions executed by corresponding ones of the processors (eg, to implement a protocol stack or other features). If electrically and / or optically conductive cabling is used, these interfaces may use timings and / or protocols that comply with any of a variety of industry standards, including, without limitation, RS-232C, RS-422, USB, Ethernet ( IEEE 802.3 ) or IEEE 1394 , If the use of wireless transmissions is involved, these interfaces may use timings and / or protocols that comply with any of a variety of industry standards, including without limitation: IEEE 802.11a . 802.11ad . 802.11ah . 802.11ax . 802.11b . 802.11g . 802.16 . 802.20 (commonly referred to as "Mobile Broadband Wireless Access");Bluetooth;ZigBee; or a cellular radiotelephone service such as GSM with General Packet Radio Service (GSM / GPRS), CDMA / 1xRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only / Optimized (EV-DO), Evolution For Data and Voice (EV -DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE etc.

In einer bestimmten Ausführungsform können eine oder mehrere der Netzschnittstellen 1190, 1390 und/oder 1590 jedoch mit mehreren kupferbasierten oder faseroptikbasierten Netzschnittstellenanschlüssen implementiert werden, um redundante und/oder parallele Pfade beim Austauschen einer oder mehrerer der Datensatzpartitionen 1131, der Taskroutinen 1211, der CPU-Taskroutinen 1571 und/oder der GPU-Taskroutinen 1671 bereitzustellen.In a particular embodiment, one or more of the network interfaces 1190 . 1390 and or 1590 however, with multiple copper-based or fiber optic-based network interface ports implemented to redundant and / or parallel paths when exchanging one or more of the data set partitions 1131 , the task routines 1211 , the CPU task routines 1571 and / or the GPU task routines 1671 provide.

In verschiedenen Ausführungsformen können die Aufteilung von Verarbeitungs- und/oder Speicherressourcen auf die Knotenvorrichtungen 1300 und/oder die API-Architekturen, die zur Unterstützung der Kommunikation zwischen den Knotenvorrichtungen und anderen Vorrichtungen verwendet werden, ausgelegt sein und/oder ausgewählt werden, um mit beliebigen einer Vielzahl von Standards für die verteilte Verarbeitung übereinzustimmen, einschließlich unter anderem IEEE P2413 , AllJoyn, IoTivity usw. Beispielhaft kann eine Teilmenge von API- und/oder anderen architektonischen Merkmalen eines oder mehrerer derartiger Standards verwendet werden, um das hierin beschriebene relativ minimale Ausmaß an Koordinierung zu implementieren, um eine größere Effizienz bei der Parallelisierung der Verarbeitung von Daten zu bieten, während gleichzeitig ein Austausch von koordinierenden Informationen minimiert wird, der zu unerwünschten Instanzen von Serialisierung zwischen Prozessen führen kann. Es sei jedoch anzumerken, dass die Parallelisierung der Speicherung, des Abrufs und/oder der Verarbeitung von Teilen der Datensätze 1130 nicht von bestehenden API-Architekturen und/oder unterstützenden Kommunikationsprotokollen abhängt oder durch sie eingeschränkt ist. Allgemeiner ausgedrückt, gibt es nichts in der Art und Weise, in der die Datensätze 1130 bei der Speicherung, Übertragung und/oder Verteilung über das Netz 1999 organisiert werden können, das an bestehende API-Architekturen oder Protokolle gebunden ist.In various embodiments, the allocation of processing and / or storage resources to the node devices 1300 and / or the API architectures used to facilitate communication between the node devices and other devices may be designed and / or selected to comply with any of a variety of distributed processing standards, including but not limited to IEEE P2413 By way of example, a subset of API and / or other architectural features of one or more of such standards may be used to implement the relatively minimal degree of coordination described herein for greater efficiency in parallelizing the processing of data while minimizing an exchange of coordinating information that can lead to unwanted instances of serialization between processes. It should be noted, however, that the parallelization of Storage, retrieval and / or processing of parts of the records 1130 does not depend on or is limited by existing API architectures and / or supporting communication protocols. More generally, there is nothing in the way in which the records are 1130 during storage, transmission and / or distribution over the network 1999 organized to existing API architectures or protocols.

Einige Systeme können Hadoop® verwenden, ein Open-Source-Framework zur Speicherung und Analyse von Big Data in einer verteilten Rechenumgebung. Einige Systeme können Cloud-Computing verwenden, das den ubiquitären, bequemen Netzzugriff bei Bedarf auf einen gemeinsam genutzten Pool konfigurierbarer Rechenressourcen (z. B. Netze, Server, Speicher, Anwendungen und Dienste) ermöglichen kann, die mit minimalem Verwaltungsaufwand oder minimaler Dienstanbieterinteraktion schnell bereitgestellt und freigegeben werden können. Einige Gittersysteme können als Hadoop® Cluster mit mehreren Knoten implementiert werden, wie von Fachleuten auf dem Gebiet verstanden wird. ApacheTM Hadoop® ist ein Open-Source-Software-Framework für verteiltes Rechnen.Some systems can use Hadoop ®, an open-source framework for storing and analyzing big data in a distributed computing environment. Some systems may use cloud computing that can provide ubiquitous, convenient network access on demand to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be deployed quickly with minimal management effort or minimal service provider interaction and can be shared. Some grid systems can be implemented as Hadoop ® multi-node cluster, as will be understood by those skilled in the art. Apache TM Hadoop® is an open source software framework for distributed computing.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte Nicht-PatentliteraturCited non-patent literature

  • IEEE-802.3 [0290] IEEE 802.3 [0290]
  • IEEE-1394 [0290] IEEE-1394 [0290]
  • IEEE 802.11a [0290] IEEE 802.11a [0290]
  • 802.11ad [0290] 802.11ad [0290]
  • 802.11ah [0290] 802.11ah [0290]
  • 802.11ax [0290] 802.11ax [0290]
  • 802.11b [0290] 802.11b [0290]
  • 802.11g [0290] 802.11g [0290]
  • 802.16 [0290] 802.16 [0290]
  • 802.20 [0290] 802.20 [0290]
  • IEEE P2413 [0292] IEEE P2413 [0292]

Claims (30)

Vorrichtung, umfassend einen Prozessor und einen Speicher, um Anweisungen zu speichern, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor veranlassen, Operationen durchzuführen, umfassend: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben von Analyseroutinen wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden; in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst; und in Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen.An apparatus comprising a processor and a memory to store instructions that, when executed by the processor, cause the processor to perform operations comprising: Analyzing a current status of resources from at least one node device of a plurality of node devices to determine availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned to perform a first task of an analysis routine, wherein : the operation of the plurality of node devices is coordinated to perform tasks of analysis routines at least partially in parallel; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device; in response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine: Analyzing a first task routine of the analysis routine to determine if the first task routine can be compiled to generate a GPU task routine for execution by the at least one GPU to cause the at least one GPU to execute multiple instances of the first task of the analysis routine at least partially in parallel without a dependency between inputs and outputs of the multiple instances of the first task, where: the first task routine is executed for execution by the at least one CPU to perform the first task of the analysis routine; and determining if the first task routine can be compiled to generate the GPU task routine, determining if the first task routine includes an instruction that prohibits compilation to generate the GPU task routine, and determining if inputs and Outputs of the first task routine are defined so as not to require dependency; and in response to a determination that the first task routine can be compiled to generate the GPU task routine: Assigning a record partition of a plurality of record partitions of a record to the at least one node device to allow access to the record partition by the at least one GPU; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and Assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the multiple instances of the first task with the record partition by the at least one GPU. Vorrichtung nach Anspruch 1, wobei zum Bestimmen, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, der Prozessor veranlasst wird zum: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann.The apparatus of claim 1, wherein for determining whether the first task routine includes an instruction that prevents compilation to produce the GPU task routine, the processor is caused to: Determining whether the instruction of the first task routine is included in a set of instructions that can not be converted into at least one instruction that can be executed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is being used in a manner that prevents conversion to at least one instruction being executed by the first task routine at least one GPU can be executed. Vorrichtung nach Anspruch 1, wobei zum Umwandeln der wenigstens einen Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine der Prozessor veranlasst wird, die wenigstens eine Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umzuwandeln.The apparatus of claim 1, wherein for converting the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine, the processor is instructed to transition the at least one instruction of the first task routine from a first programming language to the at least one corresponding instruction in a second one Programming language according to the conversion rule. Vorrichtung nach Anspruch 1, wobei: der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist, umfasst; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, umfasst, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.Apparatus according to claim 1, wherein: the at least one memory of the at least one node device comprises a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU includes causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the processor is caused to perform operations, comprising: omitting the analysis of the first task routine to determine whether the first task routine can be compiled to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and assigning the performing the first task of the analysis routine with the record partition to the at least one node device to enable the first task with the record partition to be performed by the at least one CPU. Vorrichtung nach Anspruch 1, wobei: die Vorrichtung eine Koordinierungsvorrichtung umfasst, die den Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert; der Prozessor veranlasst wird, wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu empfangen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, der Prozessor veranlasst wird, eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu identifizieren, die eine GPU integriert, die durch den aktuellen Status als verfügbar angezeigt wird.Apparatus according to claim 1, wherein: the apparatus comprises a coordinator device that coordinates the operation of the plurality of node devices; the processor is caused to periodically receive updates to the current status of each node device of the plurality of node devices; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the processor is caused to identify a node device of the plurality of node devices that integrates a GPU indicated by the current status as available. Vorrichtung nach Anspruch 5, wobei zum Zuweisen der Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Analysieren von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung.The apparatus of claim 5, wherein for assigning the record partition of the record to the at least one node device, the processor is caused to perform operations comprising: Analyzing metadata indicative of structural features of the data set to identify a constraint in a manner in which the data set can be divided into the plurality of data set partitions, the constraint being a group consisting of a least atomic unit indication of Data is selected within the record and a specification of a partitioning scheme; and Deriving a division of the record into the plurality of record partitions based at least in part on the constraint. Vorrichtung nach Anspruch 6, wobei der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen.The apparatus of claim 6, wherein the processor is caused to perform operations, comprising: Retrieving the metadata from at least one storage device in which the record is stored; and Transmitting an indication of the allocation of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device. Vorrichtung nach Anspruch 1, wobei: die Vorrichtung eine Knotenvorrichtung der wenigstens einen Knotenvorrichtung umfasst; die Knotenvorrichtung eine GPU der wenigstens einen GPU umfasst; der Prozessor eine CPU der wenigstens einen CPU umfasst; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, die CPU veranlasst wird, zu bestimmen, ob die GPU der Knotenvorrichtung durch den aktuellen Status als verfügbar angezeigt wird.Apparatus according to claim 1, wherein: the device comprises a node device of the at least one node device; the node device comprises a GPU of the at least one GPU; the processor includes a CPU that includes at least one CPU; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the CPU is caused to determine whether the GPU of the node device is indicated as being available by the current status. Vorrichtung nach Anspruch 1, wobei der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen; und in Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.The apparatus of claim 1, wherein the processor is caused to perform operations, comprising: analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU in order to cause the at least one GPU to at least partially parallel multiple instances of the second task of the analysis routine without a dependency between inputs and outputs performing a plurality of instances of the second task, wherein the second task routine is generated for execution by the at least one CPU to perform a second task of the analysis routine; and in response to a determination that the second task routine can not be compiled to generate the other GPU task routine: compiling the second task routine for execution by the at least one CPU; and assigning the second task of the analysis routine with the record partition to the at least one node device to enable the second task with the record partition to be performed by the at least one CPU. Vorrichtung nach Anspruch 1, wobei die Umwandlungsregel aus einer Gruppe ausgewählt ist, bestehend aus: einer Spezifikation eines Satzes von Anweisungen, von denen jede die Kompilierung der ersten Taskroutine verhindert, um die GPU-Taskroutine zu erzeugen, falls sie innerhalb der ersten Taskroutine vorhanden ist; einer Spezifikation eines Satzes von Anweisungen, von denen jede die Kompilierung der ersten Taskroutine nicht verhindern würde, um die GPU-Taskroutine zu erzeugen, falls sie innerhalb der ersten Taskroutine vorhanden ist; einer Spezifikation einer Weise der Verwendung einer Anweisung, die die Kompilierung der ersten Taskroutine verhindert, um die GPU-Taskroutine zu erzeugen, falls die Weise der Verwendung der Anweisung innerhalb der ersten Taskroutine auftritt, wobei das Vorhandensein der Anweisung innerhalb der ersten Taskroutine ansonsten nicht die Kompilierung der ersten Taskroutine zur Erzeugung der GPU-Taskroutine verhindert; einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die in einer Schleife durch die wenigstens eine CPU ausgeführt werden sollen, in entsprechende Anweisungen der GPU-Taskroutine, die parallel durch die wenigstens eine GPU in einer entsprechenden Schleife mit weniger Iterationen als die Schleife ausgeführt werden sollen; einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die in einer Schleife durch die wenigstens eine CPU ausgeführt werden sollen, in entsprechende Anweisungen der GPU-Taskroutine, die parallel durch die wenigstens eine GPU und nicht in einer Schleife ausgeführt werden sollen; und einer Spezifikation einer Prozedur zum Umwandeln von Anweisungen in der ersten Taskroutine, die eine Datenstruktur definieren, umfassend Einträge, auf die sequentiell während der Ausführung der ersten Taskroutine durch die wenigstens eine CPU zugegriffen werden soll, in entsprechende Anweisungen der GPU-Taskroutine, die eine entsprechende Datenstruktur definieren, umfassend Einträge, auf die während der Ausführung der GPU-Taskroutine durch die wenigstens eine GPU parallel zugegriffen werden soll.The device of claim 1, wherein the conversion rule is selected from a group consisting of: a specification of a set of instructions, each of which prevents compilation of the first task routine to generate the GPU task routine, if present within the first task routine; a specification of a set of instructions, each of which would not prevent the compilation of the first task routine to generate the GPU task routine, if present within the first task routine; specifying a way of using an instruction that prevents compilation of the first task routine to generate the GPU task routine if the manner of using the instruction occurs within the first task routine, otherwise the presence of the instruction within the first task routine does not Prevents compilation of the first task routine for generating the GPU task routine; a specification of a procedure for converting instructions in the first task routine to be looped by the at least one CPU into corresponding instructions of the GPU task routine executed in parallel by the at least one GPU in a corresponding loop with fewer iterations than the one Loop to be executed; a specification of a procedure for converting instructions in the first task routine to be looped by the at least one CPU into corresponding instructions of the GPU task routine to be executed in parallel by the at least one GPU and not in a loop; and a specification of a procedure for transforming instructions in the first task routine that define a data structure comprising entries to be sequentially accessed by the at least one CPU during execution of the first task routine, into corresponding instructions of the GPU task routine that has a corresponding one Defining a data structure comprising entries to be accessed in parallel during execution of the GPU task routine by the at least one GPU. Computerprogrammprodukt, das in einem nicht-transitorischen maschinenlesbaren Speichermedium konkret ausgeführt ist, wobei das Computerprogrammprodukt Anweisungen umfasst, die betriebsfähig sind, um zu veranlassen, dass ein Prozessor Operationen durchführt, umfassend: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben der Analyseroutine wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden; in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst; und in Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen.A computer program product concretely embodied in a non-transitory machine-readable storage medium, the computer program product comprising instructions operable to cause a processor to perform operations, comprising: analyzing a current status of resources from at least one node device of a plurality of node devices to determine availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned to perform a first task of an analysis routine, wherein: the operation of the plurality of node devices is coordinated to perform tasks of the analysis routine at least partially in parallel; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device; in response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine: analyzing a first task routine of the analysis routine to determine whether the first task routine can be compiled to a GPU task routine for execution by the at least one GPU to cause the at least one GPU to perform at least partially in parallel multiple instances of the first task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the first task, wherein: the first task routine for Execution by which at least one CPU is generated to perform the first task of the analysis routine; and determining whether the first task routine can be compiled to produce the GPU task routine, a determination of whether the first task routine includes an instruction that prevents compilation to complete the GPU task routine. Task routine, and determining whether inputs and outputs of the first task routine are defined so as not to require dependency; and in response to a determination that the first task routine can be compiled to generate the GPU task routine: assigning a record partition of a plurality of record partitions of a record to the at least one node device to allow access to the record partition by the at least one GPU ; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the plurality of instances of the first task with the record partition by the at least one GPU. Computerprogrammprodukt nach Anspruch 11, wobei zum Bestimmen, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, der Prozessor veranlasst wird zum: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann.The computer program product of claim 11, wherein determining whether the first task routine includes an instruction that prevents compilation to produce the GPU task routine causes the processor to: Determining whether the instruction of the first task routine is included in a set of instructions that can not be converted into at least one instruction that can be executed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is being used in a manner that prevents conversion to at least one instruction being executed by the first task routine at least one GPU can be executed. Computerprogrammprodukt nach Anspruch 11, wobei zum Umwandeln der wenigstens einen Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine der Prozessor veranlasst wird, die wenigstens eine Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umzuwandeln.The computer program product of claim 11, wherein for converting the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine, the processor is instructed to transition the at least one instruction of the first task routine from a first programming language to the at least one corresponding instruction in a second Programming language according to the conversion rule. Computerprogrammprodukt nach Anspruch 11, wobei: der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist, umfasst; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, umfasst, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.The computer program product of claim 11, wherein: the at least one memory of the at least one node device comprises a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU includes causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the processor is caused to perform operations comprising: Omitting the analysis of the first task routine to determine if the first task routine can be compiled to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and Assigning the execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the first task with the record partition by the at least one CPU. Computerprogrammprodukt nach Anspruch 11, wobei: der Prozessor eine Komponente einer Koordinierungsvorrichtung ist, die den Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert; der Prozessor veranlasst wird, wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu empfangen; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, der Prozessor veranlasst wird, eine Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen zu identifizieren, die eine GPU integriert, die im aktuellen Status als verfügbar angezeigt wird.The computer program product of claim 11, wherein: the processor is a component of a coordinator that coordinates the operation of the plurality of node devices; the processor is caused to periodically receive updates to the current status of each node device of the plurality of node devices; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the processor is caused to select a node device of the plurality of Identify node devices that integrate a GPU that is displayed as available in the current state. Computerprogrammprodukt nach Anspruch 15, wobei zum Zuweisen der Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Analysieren von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung.The computer program product of claim 15, wherein for assigning the record partition of the record to the at least one node device, the processor is caused to perform operations comprising: Analyzing metadata indicative of structural features of the data set to identify a constraint in a manner in which the data set can be divided into the plurality of data set partitions, the constraint being a group consisting of a least atomic unit indication of Data is selected within the record and a specification of a partitioning scheme; and Deriving a division of the record into the plurality of record partitions based at least in part on the constraint. Computerprogrammprodukt nach Anspruch 16, wobei der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen.The computer program product of claim 16, wherein the processor is caused to perform operations comprising: Retrieving the metadata from at least one storage device in which the record is stored; and Transmitting an indication of the allocation of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device. Computerprogrammprodukt nach Anspruch 11, wobei: der Prozessor eine CPU der wenigstens einen CPU umfasst; die CPU eine Komponente einer Knotenvorrichtung der wenigstens einen Knotenvorrichtung ist; die Knotenvorrichtung eine GPU der wenigstens einen GPU umfasst; und um den aktuellen Status zu analysieren, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, die CPU veranlasst wird, zu bestimmen, ob die GPU der Knotenvorrichtung durch den aktuellen Status als verfügbar angezeigt wird.The computer program product of claim 11, wherein: the processor includes a CPU that includes at least one CPU; the CPU is a component of a node device of the at least one node device; the node device comprises a GPU of the at least one GPU; and to analyze the current status to determine the availability of the at least one GPU of the at least one node device, the CPU is caused to determine whether the GPU of the node device is indicated as being available by the current status. Computerprogrammprodukt nach Anspruch 11, wobei der Prozessor veranlasst wird, Operationen durchzuführen, umfassend: Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen; und in Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen.The computer program product of claim 11, wherein the processor is caused to perform operations, comprising: Analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU to cause the at least one GPU to execute multiple instances of the second task Performing an analysis routine at least partially in parallel without a dependency between inputs and outputs of the plurality of instances of the second task, wherein the second task routine is generated for execution by the at least one CPU to perform a second task of the analysis routine; and in response to a determination that the second task routine can not be compiled to produce the other GPU task routine: Compiling the second task routine for execution by the at least one CPU; and Assigning execution of the second task of the analysis routine with the record partition to the at least one node device to enable the execution of the second task with the record partition by the at least one CPU. Computerprogrammprodukt nach Anspruch 11, wobei die wenigstens eine GPU die Ausführung der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine parallel über wenigstens eintausend Threads der Ausführung unterstützt.The computer program product of claim 11, wherein the at least one GPU supports execution of the at least one corresponding instruction of the GPU task routine in parallel over at least one thousand threads of execution. Computerimplementiertes Verfahren, umfassend: Analysieren eines aktuellen Status von Ressourcen von wenigstens einer Knotenvorrichtung einer Mehrzahl von Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen, die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine durchzuführen, wobei: der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben von Analyseroutinen wenigstens teilweise parallel durchzuführen; die Analyseroutine zur Ausführung durch wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen Knotens erzeugt wird; und die Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens einen CPU, der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden; in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen: Analysieren einer ersten Taskroutine der Analyseroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe durchführt, wobei: die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um die erste Aufgabe der Analyseroutine durchzuführen; und die Bestimmung, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, und eine Bestimmung, ob Eingaben und Ausgaben der ersten Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst; und in Reaktion auf eine Bestimmung, dass die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen: Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen; Verwenden einer Umwandlungsregel, um wenigstens eine Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln; Kompilieren der wenigstens einen entsprechenden Anweisung der GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU; und Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU zu ermöglichen.A computer-implemented method, comprising: analyzing a current status of resources of at least one node device of a plurality of node devices to determine availability of at least one graphics processing unit (GPU) of the at least one node device to be assigned a first task performing an analysis routine, wherein: the operation of the plurality of node devices is coordinated to perform tasks of analysis routines at least partially in parallel; the analysis routine is generated for execution by at least one central processing unit (CPU) of the at least one node; and the resources of the at least one node device are selected from a group consisting of the at least one CPU, the at least one GPU, and storage space within at least one memory of the at least one node device; in response to a determination that the at least one GPU is available to be assigned to perform the first task of the analysis routine: analyzing a first task routine of the analysis routine to determine whether the first task routine can be compiled to a GPU task routine for execution by the at least one GPU to cause the at least one GPU to perform at least partially in parallel multiple instances of the first task of the analysis routine without a dependency between inputs and outputs of the multiple instances of the first task, wherein: the first task routine for Execution by which at least one CPU is generated to perform the first task of the analysis routine; and determining whether the first task routine can be compiled to generate the GPU task routine, determining whether the first task routine includes an instruction that prohibits compilation to generate the GPU task routine, and a determination of whether inputs and outputs of the first task routine are defined so as not to require dependency; and in response to a determination that the first task routine can be compiled to generate the GPU task routine: assigning a record partition of a plurality of record partitions of a record to the at least one node device to allow access to the record partition by the at least one GPU ; Using a conversion rule to translate at least one instruction of the first task routine into at least one corresponding instruction of the GPU task routine; Compiling the at least one corresponding instruction of the GPU task routine for execution by the at least one GPU; and assigning execution of the first task of the analysis routine with the record partition to the at least one node device to enable the execution of the plurality of instances of the first task with the record partition by the at least one GPU. Computerimplementiertes Verfahren nach Anspruch 21, wobei das Bestimmen, ob die erste Taskroutine eine Anweisung umfasst, die die Kompilierung verhindert, um die GPU-Taskroutine zu erzeugen, umfasst: Bestimmen, ob die Anweisung der ersten Taskroutine in einem Satz von Anweisungen eingeschlossen ist, die nicht in wenigstens eine Anweisung umgewandelt werden können, die von der wenigstens einen GPU ausgeführt werden kann; und in Reaktion auf eine Bestimmung, dass die Anweisung der ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine Anweisung verhindert, die von der wenigstens einen GPU ausgeführt werden kann.The computer-implemented method of claim 21, wherein determining whether the first task routine includes an instruction that prevents compilation to produce the GPU task routine comprises: Determining whether the instruction of the first task routine is included in a set of instructions that can not be converted into at least one instruction that can be executed by the at least one GPU; and in response to a determination that the instruction of the first task routine is not included in the set of instructions, determining whether the instruction of the first task routine in the first task routine is being used in a manner that prevents conversion to at least one instruction being executed by the first task routine at least one GPU can be executed. Computerimplementiertes Verfahren nach Anspruch 21, wobei das Umwandeln der wenigstens einen Anweisung der ersten Taskroutine in die wenigstens eine entsprechende Anweisung der GPU-Taskroutine umfasst, die wenigstens eine Anweisung der ersten Taskroutine von einer ersten Programmiersprache in die wenigstens eine entsprechende Anweisung in einer zweiten Programmiersprache gemäß der Umwandlungsregel umzuwandeln.The computer-implemented method of claim 21, wherein converting the at least one instruction of the first task routine into the at least one corresponding instruction of the GPU task routine comprises transmitting at least one instruction of the first task routine from a first programming language to the at least one corresponding instruction in a second programming language to transform the conversion rule. Computerimplementiertes Verfahren nach Anspruch 21, wobei: der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen zweiten flüchtigen Speicher, der kommunikativ mit der wenigstens einen GPU gekoppelt ist, umfasst; das Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, umfasst, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird; und in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU nicht verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine durchzuführen, das Verfahren umfasst: Unterlassen der Analyse der ersten Taskroutine, um zu bestimmen, ob die erste Taskroutine kompiliert werden kann, um die GPU-Taskroutine zu erzeugen; Zuweisen der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um eine Speicherung der Datensatzpartition innerhalb des ersten flüchtigen Speichers zu veranlassen, Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen; Kompilieren der ersten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen der Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine CPU zu ermöglichen. The computer-implemented method of claim 21, wherein: the at least one memory of the at least one node device comprises a first volatile memory communicatively coupled to the at least one CPU and a second volatile memory communicatively coupled to the at least one GPU; assigning the record partition to the at least one node device to allow access to the record partition by the at least one GPU includes causing the record partition to be stored within the second volatile memory; and in response to a determination that the at least one GPU is not available to be assigned to perform the first task of the analysis routine, the method comprises: omitting the analysis of the first task routine to determine if the first task routine can be compiled to generate the GPU task routine; Assigning the record partition to the at least one node device to cause storage of the record partition within the first volatile memory to allow access to the record partition by the at least one CPU; Compiling the first task routine for execution by the at least one CPU; and assigning the performing the first task of the analysis routine with the record partition to the at least one node device to enable the first task with the record partition to be performed by the at least one CPU. Computerimplementiertes Verfahren nach Anspruch 21, wobei: eine Koordinierungsvorrichtung den Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert; die Koordinierungsvorrichtung wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen empfängt; und das Analysieren des aktuellen Status, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, das Identifizieren an der Koordinierungsvorrichtung einer Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen, die eine GPU integriert, die im aktuellen Status als verfügbar angezeigt wird, umfasst.The computer-implemented method of claim 21, wherein: a coordinating device coordinates the operation of the plurality of node devices; the coordinator recurrently receives updates to the current status of each node device of the plurality of node devices; and analyzing the current status to determine the availability of the at least one GPU of the at least one node device, identifying at the coordinating device a node device of the plurality of node devices that integrates a GPU displayed as being available in the current state. Computerimplementiertes Verfahren nach Anspruch 25, wobei das Zuweisen der Datensatzpartition des Datensatzes an die wenigstens eine Knotenvorrichtung umfasst: Analysieren, an der Koordinierungsvorrichtung, von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung in einer Weise zu identifizieren, in der der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann, wobei die Beschränkung aus einer Gruppe bestehend aus einer Anzeige einer kleinsten atomaren Einheit von Daten innerhalb des Datensatzes und einer Spezifikation eines Partitionierungsschemas ausgewählt ist; und Ableiten einer Aufteilung des Datensatzes in die Mehrzahl von Datensatzpartitionen wenigstens teilweise basierend auf der Beschränkung.The computer-implemented method of claim 25, wherein assigning the record partition of the record to the at least one node device comprises: Analyzing, at the coordinator, metadata indicative of structural features of the data set to identify a constraint in a manner in which the data set can be divided into the plurality of data set partitions, the constraint being a group consisting of a display a smallest atomic unit of data within the data set and a specification of a partitioning scheme is selected; and Deriving a division of the record into the plurality of record partitions based at least in part on the constraint. Computerimplementiertes Verfahren nach Anspruch 26, umfassend: Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, bei der der Datensatz gespeichert ist; und Übertragen einer Anzeige der Zuweisung der Datensatzpartition an die wenigstens eine Knotenvorrichtung oder die wenigstens eine Speichervorrichtung, um eine Übertragung der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu veranlassen.The computer-implemented method of claim 26, comprising: Retrieving the metadata from at least one storage device in which the record is stored; and Transmitting an indication of the allocation of the record partition to the at least one node device or the at least one storage device to cause a transfer of the record partition from the at least one storage device to the at least one node device. Computerimplementiertes Verfahren nach Anspruch 21, wobei: das Analysieren des akuellen Zustands, um die Verfügbarkeit der wenigstens einen GPU der wenigstens einen Knotenvorrichtung zu bestimmen, das Analysieren eines aktuellen Status der Knotenvorrichtung durch eine CPU einer Knotenvorrichtung umfasst, ob eine GPU der Knotenvorrichtung aktuell verfügbar ist, wobei: die wenigstens eine CPU die CPU umfasst; die wenigstens eine Knotenvorrichtung die Knotenvorrichtung umfasst; und die wenigstens eine GPU die GPU umfasst.The computer-implemented method of claim 21, wherein: analyzing the current state to determine the availability of the at least one GPU of the at least one node device, analyzing a current status of the node device by a CPU of a node device, whether a GPU of the node device is currently available, wherein: the at least one CPU comprises the CPU; the at least one node device comprises the node device; and the at least one GPU comprises the GPU. Computerimplementiertes Verfahren nach Anspruch 21, umfassend: Analysieren einer zweiten Taskroutine der Analyseroutine, um zu bestimmen, ob die zweite Taskroutine kompiliert werden kann, um eine andere GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen, um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit zwischen Eingaben und Ausgaben der mehreren Instanzen der zweiten Aufgabe durchführt, wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wird, um eine zweite Aufgabe der Analyseroutine durchzuführen; und in Reaktion auf eine Bestimmung, dass die zweite Taskroutine nicht kompiliert werden kann, um die andere GPU-Taskroutine zu erzeugen: Kompilieren der zweiten Taskroutine zur Ausführung durch die wenigstens eine CPU; und Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit den Datensatzpartitionen durch die wenigstens eine CPU zu ermöglichen.The computer-implemented method of claim 21, comprising: Analyzing a second task routine of the analysis routine to determine if the second task routine can be compiled to generate another GPU task routine for execution by the at least one GPU to cause the at least one GPU to execute multiple instances of the second task Performing an analysis routine at least partially in parallel without a dependency between inputs and outputs of the plurality of instances of the second task, wherein the second task routine is generated for execution by the at least one CPU to perform a second task of the analysis routine; and in response to a determination that the second task routine can not be compiled to produce the other GPU task routine: Compiling the second task routine for execution by the at least one CPU; and Assigning execution of the second task of the analysis routine with the record partition to the at least one node device to enable the execution of the second task with the record partitions by the at least one CPU. Computerimplementiertes Verfahren nach Anspruch 29, umfassend Analysieren der Analyseroutine, um eine Reihenfolge von Aufgaben der Analyseroutine zu bestimmen, wobei die Reihenfolge der Aufgaben eine relative Reihenfolge der ersten und zweiten Aufgaben umfasst.The computer-implemented method of claim 29, comprising analyzing the analysis routine to determine a sequence of tasks of the analysis routine, the order of tasks comprising a relative order of the first and second tasks.
DE102017213160.8A 2016-08-25 2017-07-31 Compilation for node device GPU-based parallel processing Active DE102017213160B4 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662379512P 2016-08-25 2016-08-25
US62/379,512 2016-08-25
US201662394411P 2016-09-14 2016-09-14
US62/394,411 2016-09-14
US15/422,285 US9760376B1 (en) 2016-02-01 2017-02-01 Compilation for node device GPU-based parallel processing
US15/422,285 2017-02-01

Publications (2)

Publication Number Publication Date
DE102017213160A1 true DE102017213160A1 (en) 2018-03-01
DE102017213160B4 DE102017213160B4 (en) 2023-05-25

Family

ID=59778869

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017213160.8A Active DE102017213160B4 (en) 2016-08-25 2017-07-31 Compilation for node device GPU-based parallel processing

Country Status (9)

Country Link
CN (1) CN107783782B (en)
BE (1) BE1025002B1 (en)
CA (1) CA2974556C (en)
DE (1) DE102017213160B4 (en)
DK (1) DK179709B1 (en)
FR (1) FR3055438B1 (en)
GB (1) GB2553424B (en)
HK (1) HK1245439B (en)
NO (1) NO343250B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327921A (en) * 2018-12-17 2020-06-23 深圳市炜博科技有限公司 Video data processing method and device
CN109743453B (en) * 2018-12-29 2021-01-05 出门问问信息科技有限公司 Split screen display method and device
CN110163791B (en) * 2019-05-21 2020-04-17 中科驭数(北京)科技有限公司 GPU processing method and device of data computation flow graph
CN111984322B (en) * 2020-09-07 2023-03-24 北京航天数据股份有限公司 Control instruction transmission method and device
CN112783506B (en) * 2021-01-29 2022-09-30 展讯通信(上海)有限公司 Model operation method and related device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8938723B1 (en) * 2009-08-03 2015-01-20 Parallels IP Holdings GmbH Use of GPU for support and acceleration of virtual machines and virtual environments
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8769510B2 (en) * 2010-04-08 2014-07-01 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (GPU)
DE102013208418A1 (en) * 2012-05-09 2013-11-14 Nvidia Corp. Method for producing executable data file in computer system, involves linking compiled device codes and host codes to generate linked device code and linked host code that are used for producing executable data file
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
EP2887219A1 (en) * 2013-12-23 2015-06-24 Deutsche Telekom AG System and method for mobile augmented reality task scheduling
US9632761B2 (en) * 2014-01-13 2017-04-25 Red Hat, Inc. Distribute workload of an application to a graphics processing unit
US9235871B2 (en) * 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU

Non-Patent Citations (13)

* Cited by examiner, † Cited by third party
Title
802.11ad
802.11ah
802.11ax
802.11b
802.11g
802.16
802.20
Hong, C. et al.: MapCG: Writing Parallel Program Portable between CPU and GPU. In: Proceedings of the PACT'10, September 11 – 15, Vienna, Austria, 2010. pp. 217 - 226
IEEE 802.11a
IEEE P2413
IEEE-1394
IEEE-802.3
Suchard, M.A. et al.: Understanding GPU Programming for Statistical Computation: studies im Massively Parallel Massive Mixtures.PMCID: PMC2945379 in <https://www.ncbi.nlm.nih.gov/pmc/> am 25.9.2010

Also Published As

Publication number Publication date
DK201770596A1 (en) 2018-03-12
NO20171277A1 (en) 2018-02-26
GB201712171D0 (en) 2017-09-13
GB2553424B (en) 2018-11-21
CN107783782A (en) 2018-03-09
BE1025002B1 (en) 2018-09-17
CA2974556C (en) 2018-06-05
HK1245439B (en) 2019-12-06
FR3055438B1 (en) 2022-07-29
CA2974556A1 (en) 2018-02-25
BE1025002A1 (en) 2018-09-14
CN107783782B (en) 2019-03-15
DK179709B1 (en) 2019-04-09
NO343250B1 (en) 2018-12-27
GB2553424A (en) 2018-03-07
DE102017213160B4 (en) 2023-05-25
FR3055438A1 (en) 2018-03-02

Similar Documents

Publication Publication Date Title
DE112016001075T5 (en) DISTRIBUTED SAVING AND RECALLING DATA SETS
US9900378B2 (en) Node device function and cache aware task assignment
US10078710B2 (en) Distributed data set storage and analysis reproducibility
DE102017213160A1 (en) Compilation for node device GPU-based parallel processing
DE102020208110A1 (en) METHODS AND DEVICES FOR AGGREGATING TELEMETRY DATA IN AN EDGE ENVIRONMENT
DE112015005728B4 (en) Automatic finding of configuration elements
US9817882B2 (en) Dynamic distributed generation of data representations from highly condensed data
DE112019004301T5 (en) IMPROVED PROGRAMMING PROGRAMMING OF FIELD PROGRAMMABLE GATE ARRAYS USING PARTIAL RECONFIGURATION
DE112016003355T5 (en) Safe use of an application across sites
DE202020005715U1 (en) Dynamic masking of shared data objects
DE112018004345T5 (en) BUILDING MANAGEMENT SYSTEM WITH DATA RECORDING INTO INTELLIGENT ENTITIES AND INTERFACE OF INTELLIGENT ENTITIES WITH ENTERPRISE APPLICATIONS
US20170277562A1 (en) Threadsafe use of non-threadsafe libraries with multi-threaded processes
US20160164899A1 (en) Data-oriented information technology system
Zhang et al. Building information modeling–based cyber-physical platform for building performance monitoring
DE112018002955T5 (en) COGNITIVE FILE AND OBJECT MANAGEMENT FOR DISTRIBUTED STORAGE ENVIRONMENTS
DE102022120616A1 (en) Self-healing and data centers
DE112021004577T5 (en) MANAGING A TASK FLOW IN AN EDGE COMPUTING ENVIRONMENT
DE112021004854T5 (en) DYNAMIC REPLACEMENT OF PROCESSING ELEMENTS WITH DEGRADING PERFORMANCE IN STREAMING APPLICATIONS
DE112021003274T5 (en) RESOURCE ALLOCATION TO OPTIMIZE HYPERPARAMETERS IN LARGE DEEP LEARNING WORKLOADS
DE112011106057T5 (en) Energy-efficient query optimization
DE102021130397A1 (en) ASPECTORIZED STREAMS COMPUTING
DE102022114661A1 (en) RACK COMPONENT DETECTION AND COMMUNICATION FIELD
US9778876B1 (en) Load balanced access to distributed storage of data cubes
DE112019005842T5 (en) SCALABLE ARCHITECTURE FOR A DISTRIBUTED TIME LINE DATABASE
DE102022125761A1 (en) EXECUTION OF FEDERATED WORKFLOWS FROM EDGE TO CORE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R019 Grant decision by federal patent court
R020 Patent grant now final