Systems and methods for automatic generation of parallel data processing code
First Claim
1. A system configured to generate automatically a procedure operative to distributively process a plurality of data sets stored on a plurality of memory modules, comprising:
- a first database configured to store a code sequence describing an action to be performed by a target system on each of a plurality of data sets stored in a shared memory pool comprising a plurality of memory modules associated respectively with a plurality of data interfaces all belonging to the target system, in which the action per each of the plurality of data sets comprises;
(i) fetching the data set from the shared memory pool in the target system, and (ii) processing said data set fetched; and
a first compute element outside the target system, having access to said first database, and configured to convert said code sequence into a sequence of executable instructions, in which said sequence of executable instructions, when executed simultaneously by each of a plurality of compute elements of the target system, results in a distributive fetching-and-processing procedure operative, per each of the plurality of compute elements, to;
send a plurality of data requests to at least some of the plurality of data interfaces, in which each of the data requests is sent to one of the plurality of data interfaces;
receive, as a response to each of the data requests, from the data interface receiving the data request, a reply comprising a specific one of the data sets stored in the memory module associated with the data interface; and
process said data sets received,such that;
said sending, receiving, and processing, by each of the plurality of compute elements, are done asynchronously with any other of the sending, receiving, processing done by any other of the compute elements, until a first condition is met.
3 Assignments
0 Petitions
Accused Products
Abstract
Various systems and methods to generate automatically a procedure operative to distributively process a plurality of data sets stored on a plurality of memory modules. Under the instruction of the automatically generated procedure, compute elements request data sets relevant to a particular task, such data sets are fetched from memory modules by data interfaces which provide such data sets to the requesting compute elements, and the compute elements then process the received data sets until the task is completed. Relevant data sets are fetched and processed asynchronously, which means that the relevant data sets need not be fetched and processed in any particular order.
-
Citations
20 Claims
-
1. A system configured to generate automatically a procedure operative to distributively process a plurality of data sets stored on a plurality of memory modules, comprising:
-
a first database configured to store a code sequence describing an action to be performed by a target system on each of a plurality of data sets stored in a shared memory pool comprising a plurality of memory modules associated respectively with a plurality of data interfaces all belonging to the target system, in which the action per each of the plurality of data sets comprises;
(i) fetching the data set from the shared memory pool in the target system, and (ii) processing said data set fetched; anda first compute element outside the target system, having access to said first database, and configured to convert said code sequence into a sequence of executable instructions, in which said sequence of executable instructions, when executed simultaneously by each of a plurality of compute elements of the target system, results in a distributive fetching-and-processing procedure operative, per each of the plurality of compute elements, to; send a plurality of data requests to at least some of the plurality of data interfaces, in which each of the data requests is sent to one of the plurality of data interfaces; receive, as a response to each of the data requests, from the data interface receiving the data request, a reply comprising a specific one of the data sets stored in the memory module associated with the data interface; and process said data sets received, such that; said sending, receiving, and processing, by each of the plurality of compute elements, are done asynchronously with any other of the sending, receiving, processing done by any other of the compute elements, until a first condition is met. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system configured to generate and execute a procedure operative to distributively process a plurality of data sets stored on a plurality of memory modules, comprising:
-
a target system comprising;
a shared memory pool comprising a plurality of memory modules associated respectively with a plurality of data interfaces; and
a plurality of compute elements;a first database configured to store a code sequence describing an action to be performed by the target system on each of a plurality of data sets stored in the shared memory pool, in which the action per each of the plurality of data sets comprises;
(i) fetching the data set from the shared memory pool, and (ii) processing said data set fetched; anda first compute element outside the target system, having access to said first database, and configured to convert said code sequence into a sequence of executable instructions, wherein the plurality of compute elements is configured to execute simultaneously said sequence of executable instructions, resulting in a distributive fetching-and-processing procedure operative, per each of the plurality of compute elements, to; send a plurality of data requests to at least some of the plurality of data interfaces, in which each of the data requests is sent to one of the plurality of data interfaces; receive, as a response to each of the data requests, from the data interface receiving the data request, a reply comprising a specific one of the data sets stored in the memory module associated with the data interface; and process said data sets received, such that; said sending, receiving, and processing, by each of the plurality of compute elements, are done asynchronously with any other of the sending, receiving, and processing done by any other of the compute elements until a first condition is met. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A method for generating automatically a procedure operative to distributively process a plurality of data sets stored on a plurality of memory modules, comprising:
-
receiving, by a first compute element outside a target system, a code sequence describing an action to be performed by the target system on each of a plurality of data sets stored in a shared memory pool comprising a plurality of memory modules associated respectively with a plurality of data interfaces all belonging to the target system, in which the action per each of the plurality of data sets comprises;
(i) fetching the data set from the shared memory pool in the target system, and (ii) processing said data set fetched;recognizing, by inspecting the code sequence in the first compute element, that (i) the plurality of data sets is stored across the plurality of memory modules associated respectively with the plurality of data interfaces, that (ii) any one of said plurality of data sets can be processed before or after any other of said plurality of data sets, and therefore that (iii) each fetch for one of the data sets can be done by any one of the plurality of compute elements in conjunction with the data interface associated with the memory module storing that data set, asynchronously with any other of the fetches done by any other of the plurality of compute elements in conjunction with any one of the data interfaces; and converting, according to said recognition, said code sequence into a sequence of executable instructions, in which said sequence of executable instructions, when executed simultaneously by each of a plurality of compute elements of the target system, results in a distributive fetching-and-processing procedure operative, per each of the plurality of compute elements, to; send, asynchronously with any other of the plurality of compute elements, a plurality of data requests to at least some of the plurality of data interfaces, in which each of the data requests is sent to one of the plurality of data interfaces; receive, asynchronously with any other of the plurality of compute elements, as a response to each of the data requests, from the data interface receiving the data request, a reply comprising a specific one of the data sets stored in the memory module associated with the data interface; and
process, asynchronously with any other of the plurality of compute elements, said data sets received,such that; said sending, receiving, and processing are done, by each of the plurality of compute elements, until a first condition is met. - View Dependent Claims (18, 19, 20)
-
Specification