Disco: a simplified distributed computing library
AssigneeMicrosoft Corporation
InventorsWilliam D Ramsey, Ronnie I Chaiken
Life of this patent
Estimating the term…
Abstract
Core commands and aggregations of such commands are provided to programmers to enable them to generate programs that can be parallel-processed without requiring the programmer to be aware of parallel-processing techniques. The core commands and aggregations abstract mechanisms that can be executed in parallel, enabling the programmer to focus on higher-level concepts. The core commands provided include commands for applying a function in parallel and distributing and joining data in parallel. The output of each core command can implement an interface that can enable underlying mechanisms to stitch together multiple core commands in a cohesive manner to perform more complex actions.
Claims20
A method for providing parallel-processing-capable commands, the method comprising the steps of:
- interpreting a process command, specifying at least a process delegate function and process input data, to generate computer-executable instructions for applying, in parallel across one or more processes, the process delegate function to the process input data to generate a process output data;
- interpreting a distribute command, specifying at least a distribute input data, to generate computer-executable instructions for dividing, in parallel across one or more processes, the distribute input data into two or more subdivisions representing a distribute output data;
- interpreting an aggregate command, specifying multiple aggregate input data, to generate computer-executable instructions for combining, in parallel across one or more processes, the multiple aggregate input data into an aggregate output data;
- interpreting a join command, specifying a first and second join input data, both having an equivalent number of segments, to generate computer-executable instructions for combining, in parallel across one or more processes, each segment of the first join input data with a corresponding segment of the second join input data to form a join output data;
- and
- interpreting a cross-product command, specifying a first and second cross-product input data, to generate computer-executable instructions for combining, in parallel across one or more processes, each segment of the first cross-product input data with each segment of the second cross-product input data to form a cross-product output data.
One or more computer-readable storage media comprising computer-executable instructions for providing parallel-processing-capable commands, the computer-executable instructions directed to steps comprising:
- interpreting a process command, specifying at least a process delegate function and process input data, to generate computer-executable instructions for applying, in parallel across one or more processes, the process delegate function to the process input data to generate a process output data;
- interpreting a distribute command, specifying at least a distribute input data, to generate computer-executable instructions for dividing, in parallel across one or more processes, the distribute input data into two or more subdivisions representing a distribute output data;
- interpreting an aggregate command, specifying multiple aggregate input data, to generate computer-executable instructions for combining, in parallel across one or more processes, the multiple aggregate input data into an aggregate output data;
- interpreting a join command, specifying a first and second join input data, both having an equivalent number of segments, to generate computer-executable instructions for combining, in parallel across one or more processes, each segment of the first join input data with a corresponding segment of the second join input data to form a join output data;
- and
- interpreting a cross-product command, specifying a first and second cross-product input data, to generate computer-executable instructions for combining, in parallel across one or more processes, each segment of the first cross-product input data with each segment of the second cross-product input data to form a cross-product output data.
One or more computer-readable storage media comprising a library of computer-interpretable commands for generating a program that can be executed across multiple processes, the library comprising:
- a process command for applying a process delegate function to a process input data in parallel across one or more processes to generate a process output data;
- a distribute command for dividing a distribute input data into two or more subdivisions in parallel across one or more processes to present a distribute output data;
- an aggregate command for combining multiple aggregate input data in parallel across one or more processes into an aggregate output;
- a join command for combining each segment of a first join input data with a corresponding segment of a second join input data in parallel across one or more processes to form a join output data;
- and
- a cross-product command for combining each segment of a first cross-product input data with each segment of a second cross-product input data in parallel across one or more processes to form a cross-product output data.
Dependencies are inferred from the claim text.