Patentable/Patents/US-9733914
US-9733914

Loop parallelization analyzer for data flow programs

PublishedAugust 15, 2017
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

System and method for automatically parallelizing iterative functionality in a data flow program. A data flow program is stored that includes a first data flow program portion, where the first data flow program portion is iterative. Program code implementing a plurality of second data flow program portions is automatically generated based on the first data flow program portion, where each of the second data flow program portions is configured to execute a respective one or more iterations. The plurality of second data flow program portions are configured to execute at least a portion of iterations concurrently during execution of the data flow program. Execution of the plurality of second data flow program portions is functionally equivalent to sequential execution of the iterations of the first data flow program portion.

Patent Claims
36 claims

Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.

Claim 1

Original Legal Text

1. A non-transitory computer accessible memory medium that stores program instructions executable by a processor to: store a data flow program, wherein the data flow program comprises one or more iterative data flow program portions, wherein each iterative data flow program portion comprises data flow program code configured to execute repeatedly in an iterative manner; automatically analyze the data flow program, including performing dependence analysis for each of the one or more iterative data flow program portions, thereby determining whether each of the one or more iterative data flow program portions is parallelizable, wherein said performing dependence analysis comprises determining whether output from a first subset or iteration of data flow program code of the iterative data flow program portion is required by a second subset or iteration of the data flow program code of the iterative data flow program portion; and store an indication of each of the one or more iterative data flow program portions that is parallelizable, wherein the indications are useable to parallelize the data flow program.

Plain English Translation

A software tool analyzes a data flow program to find loops that can be parallelized. The tool stores the data flow program, which contains iterative sections (loops). For each loop, it checks for dependencies: Does one loop iteration need the output of a previous iteration? If not, the loop is marked as parallelizable, and this information is saved. This saved information can then be used to automatically convert the loop to run in parallel. The tool functions by checking if any loop depends on the output from an earlier loop, and if not, flags that loop as parallelizable.

Claim 2

Original Legal Text

2. The non-transitory computer accessible memory medium of claim 1 , wherein to automatically analyze the data flow program, the program instructions are executable to determine that at least one of the one or more iterative data flow program portions cannot be parallelized as specified, wherein the program instructions are further executable to: indicate one or more errors preventing parallelization or one or more warnings regarding parallelization.

Plain English Translation

The software tool from the previous description also identifies loops that *cannot* be parallelized. When a loop can't be parallelized, the tool provides errors or warnings explaining why. This could be due to data dependencies or other factors preventing safe parallel execution. The tool analyzes a data flow program containing iterative sections (loops). For each loop, it checks for dependencies, and also generates warnings if parallelization is not possible.

Claim 3

Original Legal Text

3. The non-transitory computer accessible memory medium of claim 2 , wherein to indicate one or more errors preventing parallelization or one or more warnings regarding parallelization, the program instructions are further executable to: indicate data flow program code that caused the determined errors or warnings.

Plain English Translation

The software tool from the previous description pinpoints the specific lines of data flow code that cause errors or warnings when a loop can't be parallelized. Instead of just saying a loop is not parallelizable, it shows exactly where the problem lies in the data flow program's code. It does this by indicating specific code segments causing warnings or errors.

Claim 4

Original Legal Text

4. The non-transitory computer accessible memory medium of claim 3 , wherein the program instructions are further executable to: receive user input selecting at least one error of the one or more errors or at least one warning of the one or more warnings; wherein the data flow program code is indicated in response to the user input selecting at least one error of the one or more errors or at least one warning of the one or more warnings.

Plain English Translation

The software tool from the previous description allows the user to select a specific error or warning reported for a non-parallelizable loop, and then highlights the corresponding data flow code responsible for that issue. This interactive feature lets users quickly investigate the root cause of parallelization problems. It receives user input for error and warning selections, which in turn highlights the relevant code.

Claim 5

Original Legal Text

5. The non-transitory computer accessible memory medium of claim 2 , wherein the program instructions are further executable to: receive user input modifying the data flow program code in response to the one or more errors preventing parallelization or one or more warnings regarding parallelization.

Plain English Translation

The software tool from the previous description lets users directly modify the data flow program's code to address the errors or warnings preventing parallelization. After identifying a problem, users can edit the code within the tool to attempt to remove the barrier to parallel execution, so that a loop can be parallelized. The tool receives input to modify the code related to errors and warnings about parallelization.

Claim 6

Original Legal Text

6. The non-transitory computer accessible memory medium of claim 1 , wherein to automatically analyze the data flow program, the program instructions are further executable to: automatically determine any side effects of the data flow program comprised in the one or more iterative data flow program portions.

Plain English Translation

The software tool from the previous description automatically detects any side effects caused by the data flow program within the iterative loops. This is important because side effects can affect parallelization safety. The tool automatically detects and reports on side effects inside loops which may impact parallel processing.

Claim 7

Original Legal Text

7. The non-transitory computer accessible memory medium of claim 1 , wherein to automatically analyze the data flow program, the program instructions are executable to automatically perform reduction operation analysis of the one or more iterative data flow program portions.

Plain English Translation

The software tool from the previous description includes reduction operation analysis for iterative loops. Reduction operations (like summing array elements) have specific parallelization strategies, and this analysis helps determine how to apply them correctly. The tool runs reduction operation analysis on loops.

Claim 8

Original Legal Text

8. The non-transitory computer accessible memory medium of claim 1 , wherein to perform dependence analysis, the program instructions are further executable to: detect cross-iteration dependences that would prevent parallelization.

Plain English Translation

The software tool from the previous description detects cross-iteration dependencies that prevent parallelization. If one iteration of a loop relies on data from a previous iteration, it creates a dependency that may block converting the loop to parallel processing.

Claim 9

Original Legal Text

9. The non-transitory computer accessible memory medium of claim 8 , wherein to perform dependence analysis, the program instructions are executable to: recognize an early termination condition that prevents parallelization.

Plain English Translation

The software tool from the previous description recognizes early termination conditions (e.g., a `break` statement) within a loop that prevent parallelization. If a loop can terminate early based on some condition, parallelizing it can be difficult or unsafe. The tool identifies and flags loops with conditions that exit early.

Claim 10

Original Legal Text

10. The non-transitory computer accessible memory medium of claim 8 , wherein to perform dependence analysis, the program instructions are executable to: determine any conflicting array accesses across iterations of the one or more iterative data flow program portions.

Plain English Translation

The software tool from the previous description determines conflicting array accesses across different iterations of a loop. If multiple iterations try to read or write to the same array element at the same time, it introduces a data race, which must be resolved before parallelizing the loop. It does this by pinpointing when multiple loops are writing to the same memory space at the same time.

Claim 11

Original Legal Text

11. The non-transitory computer accessible memory medium of claim 10 , wherein to determine whether there are any conflicting array accesses across iterations of each of the iterative data flow program portions, the program instructions are executable to: for each of the one or more iterative data flow program portions: determine an integer linear programming problem (ILP) that corresponds to each pair of array accesses in the iterative data flow program portion; and determine whether there is a feasible solution to each ILP, wherein if there is no feasible solution to any of the ILPs, then there are no conflicting array accesses across iterations of the iterative data flow program portion.

Plain English Translation

The software tool from the previous description uses Integer Linear Programming (ILP) to detect conflicting array accesses. For each pair of array accesses within a loop, it formulates an ILP problem. If the ILP has no feasible solution, it means there are no conflicting accesses, allowing safe parallelization. It formulates an ILP problem for each pair of array accesses and determines if a feasible solution exists.

Claim 12

Original Legal Text

12. The non-transitory computer accessible memory medium of claim 10 , wherein the data flow program comprises one or more array access operations, wherein to determine any conflicting array accesses across iterations of the one or more iterative data flow program portions, the program instructions are further executable to: for each array access operation, determine a source set of operations, comprising the set of operations that define some or all input values for the array access operation; and determine a destination set of operations, comprising the set of operations that use some or all output values of the array access operation; wherein to automatically analyze the data flow program, the program instructions are further executable to: analyze each of the one or more array access operations, including the source set of operations and the destination set of operations for each array access operation.

Plain English Translation

The software tool from the previous description analyzes array access operations within loops by tracking the source and destination of data used by each access. It identifies which operations provide input values (source set) and which operations use output values (destination set). This allows the tool to understand how array accesses are related and detect potential conflicts. The tool analyzes each array to check inputs and outputs for data dependencies.

Claim 13

Original Legal Text

13. The non-transitory computer accessible memory medium of claim 12 , wherein to automatically analyze the data flow program, the program instructions are further executable to: for each array access operation, determine a list of one or more read expressions representing a set of array elements from which the array access operation may read; and determine a list of one or more write expressions representing a set of array elements to which the array access operation may write; wherein to automatically analyze the data flow program, the program instructions are further executable to: analyze each of the one or more array access operations, including the one or more read expressions and the one or more write expressions for each array access operation.

Plain English Translation

The software tool from the previous description analyzes array access operations further by determining the read and write expressions, representing the set of array elements accessed by each operation. By analyzing these expressions, the tool can detect conflicts between read and write operations across different loop iterations, providing a better picture of where the code breaks down. The tool checks all read and write operations and if multiple loops are writing/reading in the same space, the tool will provide warnings.

Claim 14

Original Legal Text

14. The non-transitory computer accessible memory medium of claim 1 , wherein to automatically analyze the data flow program, the program instructions are further executable to: generate a data flow intermediate representation of the data flow program; and analyze the data flow intermediate representation.

Plain English Translation

The software tool from the previous description generates an intermediate representation (IR) of the data flow program and then performs the analysis on this IR. This allows the tool to work with different data flow languages and program structures without having to rewrite the analysis for each one. It performs a data flow analysis on the intermediate representation.

Claim 15

Original Legal Text

15. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to: parallelize the data flow program, including parallelizing each of at least a subset of the one or more iterative data flow program portions that is parallelizable.

Plain English Translation

The software tool from the previous description automatically parallelizes the data flow program, including the iterative loops that it has determined are safe to parallelize. This automates the process of turning sequential loops into parallel code for improved performance. The tool then converts all identified loops for parallel processing.

Claim 16

Original Legal Text

16. The non-transitory computer accessible memory medium of claim 15 , wherein to parallelize the data flow program, the program instructions are further executable to: generate a data flow intermediate representation of the data flow program; and parallelize the data flow intermediate representation of the data flow program.

Plain English Translation

The software tool from the previous description parallelizes the data flow program using an intermediate representation (IR). The tool first generates the IR, then applies parallelization techniques to the IR, and finally generates the parallelized code from the modified IR. It parallelizes the data flow program via a data flow intermediate representation.

Claim 17

Original Legal Text

17. The non-transitory computer accessible memory medium of claim 1 , wherein the automatic analysis of the data flow program is performed by a standalone software tool.

Plain English Translation

The data flow parallelization analysis is performed by a standalone software tool, separate from any development environment. The tool is a standalone software package.

Claim 18

Original Legal Text

18. The computer accessible memory medium of claim 1 , wherein the automatic analysis of the data flow program is performed by a development environment.

Plain English Translation

The data flow parallelization analysis is performed within a development environment (like an IDE). The tool is part of a development environment.

Claim 19

Original Legal Text

19. The non-transitory computer accessible memory medium of claim 1 , wherein the automatic analysis of the data flow program is invoked under a development environment.

Plain English Translation

The data flow parallelization analysis is invoked from within a development environment. The tool is invoked inside an IDE.

Claim 20

Original Legal Text

20. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to: display an indication of each of the one or more iterative data flow program portions that is parallelizable.

Plain English Translation

The software tool from the previous description displays an indication of which iterative loops can be parallelized. This provides visual feedback to the user, so they know which loops are being targeted for parallel execution. The tool displays what can be converted to parallel processing.

Claim 21

Original Legal Text

21. The non-transitory computer accessible memory medium of claim 20 , wherein to display an indication of each of the one or more iterative data flow program portions that is parallelizable, the program instructions are further executable to: display each of the one or more iterative data flow program portions that is parallelizable.

Plain English Translation

The software tool from the previous description visually displays the iterative loops that can be parallelized directly in the user interface. Instead of just showing a list, the tool highlights the actual code segments that can be parallelized. The tool shows the loops that can be converted to parallel processing.

Claim 22

Original Legal Text

22. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to: indicate each of the one or more iterative data flow program portions that is not parallelizable.

Plain English Translation

The software tool from the previous description displays an indication of which iterative loops *cannot* be parallelized. This allows users to quickly identify and investigate potential problems in their code. The tool shows the loops that cannot be converted to parallel processing.

Claim 23

Original Legal Text

23. The non-transitory The computer accessible memory medium of claim 22 , wherein to indicate each of the one or more iterative data flow program portions that is not parallelizable, the program instructions are further executable to: indicate program code that prevents parallelization for each of the one or more iterative data flow program portions that is not parallelizable.

Plain English Translation

The software tool from the previous description indicates the specific program code that prevents parallelization for loops that cannot be parallelized. This helps developers pinpoint the problematic code segments and understand why parallelization is not possible. The tool indicates what prevents parallelization.

Claim 24

Original Legal Text

24. The non-transitory computer accessible e memory medium of claim 1 , wherein the program instructions are further executable to: receive user input modifying at least one of the iterative data flow program portions; and analyze the modified at least one of the iterative data flow program portions to determine whether the modified at least one of the iterative data flow program portions is parallelizable.

Plain English Translation

The software tool from the previous description allows users to modify iterative loops, then re-analyzes those modified loops to determine if they can now be parallelized. This provides an iterative workflow for improving parallelization potential. The tool automatically re-analyzes the modified loops for parallel conversion.

Claim 25

Original Legal Text

25. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to: for each of the one or more iterative data flow program portions, determine one or more of: an identifier for each of the one or more iterative data flow program portions; a set of induction variables for each of the one or more iterative data flow program portions; a range of the induction variables for each of the one or more iterative data flow program portions; or a nesting level of each of the one or more iterative data flow program portions.

Plain English Translation

The software tool from the previous description determines the following information for each iterative loop: a unique identifier, the set of induction variables (loop counters), the range of those variables, and the nesting level of the loop. This information is helpful for understanding and optimizing the loops for parallelization. The tool determines loop range and nesting.

Claim 26

Original Legal Text

26. The non-transitory computer accessible memory medium of claim 1 , wherein the data flow program comprises a graphical data flow program comprising a plurality of interconnected nodes that visually indicate functionality of the data flow program.

Plain English Translation

The data flow program is a graphical data flow program, where interconnected nodes visually represent the functionality of the program. The tool processes graphical programs where blocks are linked together.

Claim 27

Original Legal Text

27. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to: perform said storing a data flow program, said automatically analyzing, and said storing an indication for each of a plurality of data flow programs.

Plain English Translation

The software tool from the previous description can store data flow programs, perform analysis, and store parallelizable indication for multiple programs automatically. It can run on a whole directory of programs. The tool supports a batch mode to analyze all programs in a folder.

Claim 28

Original Legal Text

28. The non-transitory computer accessible memory medium of claim 27 , wherein the plurality of data flow programs are comprised in a project, wherein the program instructions are further executable to: receive input indicating the project; wherein said performing said storing a data flow program, said automatically analyzing, and said storing an indication for each of the plurality of data flow programs is performed in response to the input indicating the project.

Plain English Translation

The software tool from the previous description analyzes multiple data flow programs within a project. The user specifies the project, and the tool automatically processes all data flow programs within that project. The tool supports multiple programs in a project.

Claim 29

Original Legal Text

29. The non-transitory computer accessible memory medium of claim 27 , wherein the plurality of data flow programs are comprised in program hierarchy, wherein the program instructions are further executable to: receive input indicating the program hierarchy; wherein said performing said storing a data flow program, said automatically analyzing, and said storing an indication for each of the plurality of data flow programs is performed in response to the input indicating the program hierarchy.

Plain English Translation

The software tool from the previous description analyzes multiple data flow programs organized in a program hierarchy (e.g., a directory tree). The user specifies the top-level hierarchy, and the tool automatically processes all data flow programs within that hierarchy. The tool supports multiple programs in a hierarchy.

Claim 30

Original Legal Text

30. A computer implemented method, comprising utilizing a computer to perform: storing a data flow program, wherein the data flow program comprises one or more iterative data flow program portions, wherein each iterative data flow program portion comprises data flow program code configured to execute repeatedly in an iterative manner; automatically analyzing the data flow program, including performing dependence analysis for each of the one or more iterative data flow program portions, thereby determining whether each of the one or more iterative data flow program portions is parallelizable, wherein said performing dependence analysis comprises determining whether output from a first subset or iteration of data flow program code of the iterative data flow program portion is required by a second subset or iteration of the data flow program code of the iterative data flow program portion; and storing an indication of each of the one or more iterative data flow program portions that is parallelizable, wherein the indications are useable to parallelize the data flow program.

Plain English Translation

A computer-implemented method analyzes a data flow program to find loops that can be parallelized. The method includes storing the data flow program, which contains iterative sections (loops). For each loop, the method checks for dependencies: Does one loop iteration need the output of a previous iteration? If not, the loop is marked as parallelizable, and this information is saved. This saved information can then be used to automatically convert the loop to run in parallel. The method functions by checking if any loop depends on the output from an earlier loop, and if not, flags that loop as parallelizable.

Claim 31

Original Legal Text

31. The method of claim 30 , wherein said automatically analyzing the data flow program comprises determining that at least one of the one or more iterative data flow program portions cannot be parallelized as specified, the method further comprising: indicating one or more errors preventing parallelization or one or more warnings regarding parallelization.

Plain English Translation

The computer-implemented method from the previous description also identifies loops that *cannot* be parallelized. When a loop can't be parallelized, the method provides errors or warnings explaining why. This could be due to data dependencies or other factors preventing safe parallel execution. The method analyzes a data flow program containing iterative sections (loops). For each loop, it checks for dependencies, and also generates warnings if parallelization is not possible.

Claim 32

Original Legal Text

32. The method of claim 31 , wherein said indicating one or more errors preventing parallelization or one or more warnings regarding parallelization comprises: indicating data flow program code that caused the determined errors or warnings.

Plain English Translation

The computer-implemented method from the previous description pinpoints the specific lines of data flow code that cause errors or warnings when a loop can't be parallelized. Instead of just saying a loop is not parallelizable, it shows exactly where the problem lies in the data flow program's code. It does this by indicating specific code segments causing warnings or errors.

Claim 33

Original Legal Text

33. The method of claim 32 , further comprising: receiving user input selecting at least one error of the one or more errors or at least one warning of the one or more warnings; wherein the data flow program code is indicated in response to the user input selecting at least one error of the one or more errors or at least one warning of the one or more warnings.

Plain English Translation

The computer-implemented method from the previous description allows the user to select a specific error or warning reported for a non-parallelizable loop, and then highlights the corresponding data flow code responsible for that issue. This interactive feature lets users quickly investigate the root cause of parallelization problems. It receives user input for error and warning selections, which in turn highlights the relevant code.

Claim 34

Original Legal Text

34. The method of claim 30 , wherein said performing dependence analysis comprises: determining any conflicting array accesses across iterations of the one or more iterative data flow program portions.

Plain English Translation

The computer-implemented method from the previous description determines conflicting array accesses across different iterations of a loop. If multiple iterations try to read or write to the same array element at the same time, it introduces a data race, which must be resolved before parallelizing the loop. It does this by pinpointing when multiple loops are writing to the same memory space at the same time.

Claim 35

Original Legal Text

35. The method of claim 34 , wherein said determining any conflicting array accesses across iterations of each of the iterative data flow program portions comprises: for each of the one or more iterative data flow program portions: determining an integer linear programming problem (ILP) that corresponds to each pair of array accesses in the iterative data flow program portion; and determining whether there is a feasible solution to each ILP, wherein if there is no feasible solution to any of the ILPs, then there are no conflicting array accesses across iterations of the iterative data flow program portion.

Plain English Translation

The computer-implemented method from the previous description uses Integer Linear Programming (ILP) to detect conflicting array accesses. For each pair of array accesses within a loop, it formulates an ILP problem. If the ILP has no feasible solution, it means there are no conflicting accesses, allowing safe parallelization. It formulates an ILP problem for each pair of array accesses and determines if a feasible solution exists.

Claim 36

Original Legal Text

36. A system, comprising: means for storing a data flow program, wherein the data flow program comprises one or more iterative data flow program portions, wherein each iterative data flow program portion comprises data flow program code configured to execute repeatedly in an iterative manner; means for automatically analyzing the data flow program, including performing dependence analysis for each of the one or more iterative data flow program portions, thereby determining whether each of the one or more iterative data flow program portions is parallelizable, wherein said performing dependence analysis comprises determining whether output from a first subset or iteration of data flow program code of the iterative data flow program portion is required by a second subset or iteration of the data flow program code of the iterative data flow program portion; and means for storing an indication of each of the one or more iterative data flow program portions that is parallelizable, wherein the indications are useable to parallelize the data flow program.

Plain English Translation

A system includes the following: means for storing a data flow program, wherein the data flow program comprises one or more iterative data flow program portions, wherein each iterative data flow program portion comprises data flow program code configured to execute repeatedly in an iterative manner; means for automatically analyzing the data flow program, including performing dependence analysis for each of the one or more iterative data flow program portions, thereby determining whether each of the one or more iterative data flow program portions is parallelizable, wherein said performing dependence analysis comprises determining whether output from a first subset or iteration of data flow program code of the iterative data flow program portion is required by a second subset or iteration of the data flow program code of the iterative data flow program portion; and means for storing an indication of each of the one or more iterative data flow program portions that is parallelizable, wherein the indications are useable to parallelize the data flow program.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

June 1, 2009

Publication Date

August 15, 2017

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, FAQs, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Loop parallelization analyzer for data flow programs” (US-9733914). https://patentable.app/patents/US-9733914

© 2026 Nomic Interactive Technology LLC. Machine-readable context available at /api/llm-context/US-9733914. See llms.txt for full attribution policy.