Patent ID: 8866817

Claim:
A computer-implemented method for parallelizing a serial computation graph, including: accepting, by a computer system, a specification of the serial computation graph, said serial computation graph including a first component corresponding to a first data processing element and a second component corresponding to a second data processing element coupled by a link, the first component having an output connected to an input of the second component by the link; accepting, by the computer system, a specification of a first degree of parallelism of the first component and a second degree of parallelism of the second component; accepting, by the computer system, a first sort key and a second sort key, the first sort key identifying a sort order of the output of the first component and the second sort key identifying a sort order of the input of the second component; determining, by the computer system, parallel characteristics of a specification of an inter-component link based at least upon the specification of the first degree of parallelism, the specification of the second degree of parallelism, the first sort key, and the second sort key; forming, by the computer system, the inter-component link that corresponds to the link, the inter-component link corresponding to a link data processing element that receives work elements from the first data processing element and distributes the work elements to the second data processing element according to the parallel characteristics; adding, by the computer system, the specification of the inter-component link to the specification of the serial computation graph; and executing, by a plurality of processors, a parallel computation according to the graph, including executing a plurality of instances of the first data processing element, a plurality of instances of the second data processing element, and the link data processing element such that the link data processing element receives work elements from the plurality of instances of the first data processing element and distributes the work elements to the plurality of instances of the second data processing element according to the inter-component link.