Executing graph-based program specifications

US9785419B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9785419-B2
Application numberUS-201514842956-A
CountryUS
Kind codeB2
Filing dateSep 2, 2015
Priority dateSep 2, 2014
Publication dateOct 10, 2017
Grant dateOct 10, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A graph-based program specification includes components corresponding to tasks and directed links between ports of the components, including: a first type of link configuration defined by respective output and input ports of linked components, and a second type of link configuration defined by respective output and input ports of linked components. A compiler recognizes different types of link configurations and provides in a target program specification occurrences of a target primitive for executing a function for each occurrence of a data element flowing over a link of the second type. A computing node initiates execution of the target program specification, and determines at runtime, for components associated with the occurrences of the target primitive, an order in which instances of tasks corresponding to the components are to be invoked, and/or a computing node on which instances of tasks corresponding to the components are to be executed.

First claim

Opening claim text (preview).

What is claimed is: 1. A computing system including: a storage system storing one or more graph-based program specifications, at least a first graph-based program specification including a plurality of components corresponding to tasks and directed links between ports of the components, the first graph-based program specification including: (1) a first type of link configuration defined by respective output and input ports of linked components, and (2) a second type of link configuration defined by respective output and input ports of linked components, where the second type of link configuration is different from the first type of link configuration; a compiler configured to generate a target program specification from the first graph-based program specification, where the compiler recognizes different types of link configurations and provides in the target program specification one or more occurrences of a target primitive for executing a function for each occurrence of a data element flowing over a link having the second type of link configuration; and one or more computing nodes, each including at least one processor, with at least a first of the computing nodes being configured to: initiate execution of the target program specification, and determine at runtime, for one or more components associated with the one or more occurrences of the target primitive, at least one of: (1) an order in which instances of tasks corresponding to the components are to be invoked, or (2) a computing node on which instances of tasks corresponding to the components are to be executed. 2. The computing system of claim 1 , wherein the first computing node is further configured to: for a first link, having the first type of link configuration, from a port of a first component in the first graph-based program specification to a port of a second component in the first graph-based program specification, invoke tasks corresponding to the first and second components serially, and for a second link, having the second type of link configuration, from a port of a third component in the first graph-based program specification to a port of a fourth component in the first graph-based program specification, invoke multiple instances of a task corresponding to the fourth component for processing different respective subsets of data elements provided by the third component. 3. The computing system of claim 2 , wherein the first computing node is further configured to assign at least some of the multiple instances to be executed on different ones of multiple computing nodes. 4. The computing system of claim 3 , wherein the target primitive identifies a function corresponding to a set of one or more tasks and identifies a collection of data elements corresponding to a link having the second type of link configuration. 5. The computing system of claim 4 , wherein at least some of the multiple instances are applied to different respective data elements in the collection identified by the target primitive. 6. The computing system of claim 5 , wherein the number of instances invoked is equal to the number of data elements in the collection identified by the target primitive, and each instance is applied to a different respective data element. 7. The computing system of claim 5 , wherein the number of instances invoked is determined independently from any information in the first graph-based program specification. 8. The computing system of claim 7 , wherein the number of instances invoked is at least as large as a number of computing nodes at which data referenced by the first graph-based program specification is stored. 9. The computing system of claim 5 , wherein applying the function identified by the target primitive to a data element includes performing the set of one or more tasks corresponding to the function using the data element as a data source for the one or more tasks. 10. The computing system of claim 3 , wherein assigning at least some of the multiple instances to be executed on different computing nodes includes determining, at runtime, a number of computing nodes on which the multiple instances are to be executed. 11. The computing system of claim 1 , wherein a link having the first type of link configuration indicates to the compiler that a single data element is to be passed between the linked components, and a link having the second type of link configuration indicates to the compiler that multiple data elements are to be passed between the linked components. 12. The computing system of claim 1 , wherein the first graph-based program specification includes a third type of link configuration of a link defined by respective input and output ports of linked components that indicates to the compiler that there is to be serial execution of the linked components, and indicates to the compiler that a single data element is to be passed between tasks of the linked components. 13. The computing system of claim 1 , wherein the compiler is configured to identify one or more sets of one or more tasks corresponding to respective components. 14. The computing system of claim 13 , wherein each set of one or more tasks has a single collection of data elements as a data source that provides different data elements to different instances of the set of one or more tasks. 15. The computing system of claim 13 , wherein each set of one or more tasks corresponds to at least one directed acyclic graph of one or more nodes, where each node of the graph corresponds to a task or an identified set and each directed edge of the graph corresponds to a link having the first type of link configuration. 16. The computing system of claim 15 , wherein the directed acyclic graph of one or more nodes has a single root node. 17. The computing system of claim 1 , wherein each computing node is configured to execute at least one scheduler for spawning processes to execute tasks in a corresponding queue. 18. The computing system of claim 17 , wherein the first computing node is configured to move one or more tasks into a queue of a first scheduler executed by the first computing node from a queue of a second scheduler executed by the first computing node. 19. The computing system of claim 17 , wherein the first computing node is configured to move one or more tasks from a queue of a scheduler executed by the first computing node into a queue of a scheduler executed by a second computing node. 20. A computing system including: means for storing one or more graph-based program specifications, at least a first graph-based program specification including a plurality of components corresponding to tasks and directed links between ports of the components, the first graph-based program specification including: (1) a first type of link configuration defined by respective output and input ports of linked components, and (2) a second type of link configuration defined by respective output and input ports of linked components, where the second type of link configuration is different from the first type of link configuration; means for generating a target program specification from the first graph-based program specification, and recognizing different types of link configurations and providing in the target program specification one or more occurrences of a target primitive for executing a function for each occurrence of a data element flowing over a link having the second type of link configuration; and one or more computing nodes, each including at least one processor, with at lea

Assignees

Inventors

Classifications

  • Graphical or visual programming · CPC title

  • Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451) · CPC title

  • data driven · CPC title

  • G06F13/36Primary

    for access to common bus or bus system · CPC title

  • Target code generation · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9785419B2 cover?
A graph-based program specification includes components corresponding to tasks and directed links between ports of the components, including: a first type of link configuration defined by respective output and input ports of linked components, and a second type of link configuration defined by respective output and input ports of linked components. A compiler recognizes different types of link …
Who is the assignee on this patent?
Ab Initio Technology Llc
What technology area does this patent fall under?
Primary CPC classification G06F13/36. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 10 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).