Dataflow-based computer program visualization and refactoring

US11989537B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11989537-B2
Application numberUS-202217806225-A
CountryUS
Kind codeB2
Filing dateJun 9, 2022
Priority dateJun 9, 2022
Publication dateMay 21, 2024
Grant dateMay 21, 2024

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 computer-based visualization and refactoring system is capable of analyzing a computer program to determine computation tasks of the computer program and channels linking the computation tasks. The system generates, in a memory of computer hardware, a dataflow graph having nodes representing the computation tasks and edges representing the channels. The edges connect the nodes. Source code representations of the computation tasks are determined. Execution metrics of the computer program are determined. The nodes of the dataflow graph are annotated with the source code representations and the nodes and/or the edges are annotated with the execution metrics. The dataflow graph is displayed on a display device as annotated.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: using computer hardware, generating, in a memory of the computer hardware, a dataflow graph having nodes representing computation tasks of a computer program and edges representing channels linking the computation tasks, wherein the edges connect the nodes; creating, in the memory, records associating source code representations of the computer program with the computation tasks; determining, using the computer hardware, execution metrics of the computer program; annotating the nodes of the dataflow graph with the source code representations and at least one of the edges or the nodes with the execution metrics; displaying the dataflow graph on a display device as annotated; in response to a user input, performing a refactoring action on the dataflow graph, wherein the refactoring action includes at least one of an operation including merging and serializing two or more selected nodes into a single node or another operation including splitting a selected node into two or more nodes; generating updated execution metrics based on the refactoring action; and displaying the updated execution metrics on the dataflow graph. 2. The method of claim 1 , further comprising: updating the dataflow graph responsive to the refactoring action resulting in an updated version of the dataflow graph; and displaying the updated version of the dataflow graph. 3. The method of claim 1 , wherein the execution metrics are determined, at least in part, by compiling and executing the computer program. 4. The method of claim 1 , wherein the refactoring action includes at least one of a loop refactoring action or inlining a function call. 5. The method of claim 1 , wherein the refactoring action includes at least one of removing a selected node from the dataflow graph or adding a new node to the dataflow graph. 6. The method of claim 1 , further comprising: sizing the nodes of the dataflow graph as displayed according to latencies of the computation tasks represented by the nodes. 7. The method of claim 1 , further comprising: displaying a first representation of an execution iteration of the computer program on a timeline; and displaying a second representation of a next execution iteration of the computer program on the timeline, wherein the second representation is offset from the first representation by a distance corresponding to an iteration interval of the computer program. 8. The method of claim 1 , further comprising: creating a hierarchy in the dataflow graph by generating a sub-dataflow graph representing a selected computation task; in response to a user input, performing a refactoring action on the sub-dataflow graph; and displaying an updated version of the sub-dataflow graph in response to the performing the refactoring action. 9. The method of claim 1 , further comprising: distinguishing between synchronous channels and stream channels in the computer program; and visually distinguishing edges that represent synchronous channels from edges that represent stream channels in the dataflow graph as displayed. 10. A system, comprising: one or more processors configured to initiate operations including: generating, in a memory coupled to the one or more processors, a dataflow graph having nodes representing computation tasks of a computer program and edges representing channels linking the computation tasks, wherein the edges connect the nodes; determining execution metrics of the computer program; creating, in the memory, records associating source code representations of the computer program with the computation tasks; annotating the nodes of the dataflow graph with the source code representations and at least one of the edges or the nodes with the execution metrics; displaying the dataflow graph on a display device as annotated; in response to a user input, performing a refactoring action on the dataflow graph, wherein the refactoring action includes at least one of an operation including merging and serializing two or more selected nodes into a single node or another operation including splitting a selected node into two or more nodes; generating updated execution metrics based on the refactoring action; and displaying the updated execution metrics on the dataflow graph. 11. The system of claim 10 , wherein the one or more processors are configured to initiate operations further comprising: updating the dataflow graph responsive to the refactoring action resulting in an updated version of the dataflow graph; and displaying the updated version of the dataflow graph. 12. The system of claim 10 , wherein the execution metrics are determined, at least in part, by compiling and executing the computer program. 13. The system of claim 10 , wherein the refactoring action includes at least one of removing a selected node from the dataflow graph or adding a new node to the dataflow graph. 14. The system of claim 10 , wherein the one or more processors are configured to initiate operations further comprising: sizing the nodes of the dataflow graph as displayed according to latencies of the computation tasks represented by the nodes. 15. The system of claim 10 , wherein the one or more processors are configured to initiate operations further comprising: displaying a first representation of an execution iteration of the computer program on a timeline; and displaying a second representation of a next execution iteration of the computer program on the timeline, wherein the second representation is offset from the first representation by a distance corresponding to an iteration interval of the computer program. 16. The system of claim 10 , wherein the one or more processors are configured to initiate operations further comprising: creating a hierarchy in the dataflow graph by generating a sub-dataflow graph representing a selected computation task; in response to a user input, performing a refactoring action on the sub-dataflow graph; and displaying an updated version of the sub-dataflow graph in response to the performing the refactoring action. 17. The system of claim 10 , wherein the one or more processors are configured to initiate operations further comprising: distinguishing between synchronous channels and stream channels in the computer program; and visually distinguishing edges that represent synchronous channels from edges that represent stream channels in the dataflow graph as displayed. 18. A computer program product, comprising: one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, wherein the program instructions are executable by computer hardware to initiate operations including: generating, in a memory of the computer hardware, a dataflow graph having nodes representing computation tasks of a computer program and edges representing channels linking the computation tasks, wherein the edges connect the nodes; determining execution metrics of the computer program; creating, in the memory, records associating source code representations of the computer program with the computation tasks; annotating the nodes of the dataflow graph with the source code representations and at least one of the edges or the nodes with the execution metrics; displaying the dataflow graph on a display device as annotated; in response to a user input, performing a refactoring action on the dataflow graph, wherein the refactoring action includes at least one of an operation including merging and serial

Assignees

Inventors

Classifications

  • G06F8/433Primary

    Dependency analysis; Data or control flow analysis · CPC title

  • Software metrics · CPC title

  • Performance evaluation by tracing or monitoring · CPC title

  • Graphs; Linked lists (G06F16/9027 takes precedence) · CPC title

  • Graphical or visual programming · 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 US11989537B2 cover?
A computer-based visualization and refactoring system is capable of analyzing a computer program to determine computation tasks of the computer program and channels linking the computation tasks. The system generates, in a memory of computer hardware, a dataflow graph having nodes representing the computation tasks and edges representing the channels. The edges connect the nodes. Source code re…
Who is the assignee on this patent?
Xilinx Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/433. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 21 2024 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 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).