Executing graph-based program specifications
US-2016062749-A1 · Mar 3, 2016 · US
US9747112B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9747112-B2 |
| Application number | US-201514843001-A |
| Country | US |
| Kind code | B2 |
| Filing date | Sep 2, 2015 |
| Priority date | Sep 2, 2014 |
| Publication date | Aug 29, 2017 |
| Grant date | Aug 29, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A graph-based program specification includes components, at least one having at least one input port for receiving a collection of data elements, or at least one collection type output port for providing a collection of data elements. Executing a program specified by the graph-based program specification at a computing node, includes: receiving data elements of a first collection into a first storage in a first order via a link connected to a collection type output port of a first component and an input port of a second component, and invoking a plurality of instances of a task corresponding to the second component to process data elements of the first collection, including retrieving the data elements from the first storage in a second order, without blocking invocation of any of the instances until after any particular instance completes processing one or more data elements.
Opening claim text (preview).
What is claimed is: 1. A method including: storing a graph-based program specification including a plurality of components corresponding to tasks and links between ports of the components, at least some of the plurality of components each having at least one of: (1) at least one input port for receiving a collection of data elements to be processed by a corresponding task, or (2) at least one collection type output port for providing a collection of data elements to be processed by a task corresponding to a component linked to the collection type output port; and executing a program specified by the graph-based program specification, the executing including: receiving two or more data elements of a particular collection of data elements in a first order via a link connected to a collection type output port of a first component of the plurality of components and an input port of a second component of the plurality of components, and invoking a plurality of instances of a task corresponding to the second component, including dynamically instantiating each instance of the plurality of instances to begin processing a particular received data element of the particular collection of data elements, and including invoking the instances in a second order, without blocking invocation of any of the instances for any particular instance to begin or complete processing one or more data elements, wherein the second order is different from the first order. 2. The method of claim 1 wherein invoking one or more instances of the task corresponding to the second component includes invoking a plurality of instances of the task corresponding to the second component. 3. The method of claim 2 wherein invoking the plurality of instances of the task corresponding to the second component includes invoking a plurality of sequentially executing instances of the task corresponding to the second component. 4. The method of claim 2 wherein invoking a plurality of instances of the task corresponding to the second component includes invoking a plurality of concurrently executing instances of the task corresponding to the second component. 5. The method of claim 4 wherein each instance of the task of the plurality of instances of the task corresponding to the second component corresponds to a different, non-overlapping subset of the particular collection of data elements. 6. The method of claim 5 wherein each different, non-overlapping subset of the particular collection of data includes a single data element. 7. The method of claim 1 wherein the input port of the second component is a collection type input port for receiving a collection of data elements to be processed by the task corresponding to the second component, and invoking one or more instances of the task corresponding to the second component includes invoking a single instance of the task corresponding to the second component. 8. The method of claim 7 wherein the single instance of the task corresponding to the second component processes the data elements of the particular collection of data elements iteratively. 9. The method of claim 1 wherein the executing further includes generating an output including a first number of data elements that is the same as a second number of data elements in the particular collection. 10. The method of claim 9 wherein the two or more data elements of the particular collection of data elements are received into a first storage, and the executing further includes providing the output to a second storage in a third order that is independent of the first order of the particular collection of data elements. 11. The method of claim 1 wherein the executing further includes generating an output including a first number of data elements that is different from a second number of data elements in the particular collection. 12. The method of claim 1 wherein at least some of the plurality of components each have at least one scalar type input port for receiving a single data element to be processed by a corresponding task, and at least one scalar type output port for providing a single data element to be processed by a task corresponding to a component linked to the scalar type output port; and executing the program specified by the graph-based program specification further includes: receiving a single data element at a scalar type input port of a third component of the plurality of components from a scalar type output port of a fourth component of the plurality of components via a link connecting the scalar type output port to the scalar type input port; and invoking an instance of a task corresponding to the third component in response to receiving the single data element at the scalar type input port. 13. The method of claim 12 wherein executing the program specified by the graph-based program specification further includes preventing invocation of the task corresponding to the third component until after the single data element is received at the scalar type input port. 14. The method of claim 12 wherein executing the program specified by the graph-based program specification further includes preventing invocation of tasks corresponding to components depending, both directly and indirectly, from the third component until after the single data element is received at the scalar type input port. 15. The method of claim 1 further including determining the presence of the link connected to the collection type output port of the first component and the input port of the second component, the presence of said link signaling that the data elements within the first collection can be reordered. 16. A non-transitory computer-readable medium having software stored thereon, the software including instructions for causing a computing system to: store a graph-based program specification including a plurality of components corresponding to tasks and links between ports of the components, at least some of the plurality of components each having at least one of: (1) at least one input port for receiving a collection of data elements to be processed by a corresponding task, or (2) at least one collection output port for providing a collection of data elements to be processed by a task corresponding to a component linked to the collection output port; and execute a program specified by the graph-based program specification, the executing including receiving two or more data elements of a particular collection of data elements in a first order via a link connected to a collection type output port of a first component of the plurality of components and an input port of a second component of the plurality of components, and invoking a plurality of instances of a task corresponding to the second component, including dynamically instantiating each instance of the plurality of instances to begin processing a particular data element of the particular collection of data elements, and including invoking the instances in a second order, without blocking invocation of any of the instances for any particular instance to begin or complete processing one or more data elements, wherein the second order is different from the first order. 17. The non-transitory computer-readable medium of claim 16 wherein invoking one or more instances of the task corresponding to the second component includes invoking a plurality of instances of the task corresponding to the second component. 18. The non-transitory computer-readable medium of claim 17 wherein invoking the plurality of instances of the task corresponding t
Related publications grouped by family.
Answers are generated from the same data shown on this page.