IP Library Granted Patent US 8,510,709
Granted Patent B2
US 8,510,709 · App. 12/475,873 · Granted Aug 13, 2013

Graphical indicator which specifies parallelization of iterative program code in a graphical data flow program

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,510,709
App. No.
12/475,873
Granted
Aug 13, 2013
Kind
B2
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.

Claims (50)

1. A non-transitory computer accessible memory medium that stores program instructions executable by a processor to:

display a graphical data flow program in response to user input, wherein the graphical data flow program comprises a plurality of interconnected nodes that visually indicate functionality of the graphical data flow program, wherein the graphical data flow program comprises a graphical indicator that specifies to a compiler that the compiler is to attempt to automatically generate data flow program code that parallelizes a specified portion of the graphical data flow program for concurrent execution;

if the specified portion is determined to be parallelizable, automatically generate the program code implementing a plurality of data flow program portions based on the graphical indicator, wherein each of the data flow program portions is configured to implement a respective part of the functionality of the specified portion of the graphical data flow program wherein during execution of the graphical data flow program, the plurality of data flow program portions execute to provide the functionality of the specified portion, wherein at least two of the plurality of data flow program portions execute concurrently, and wherein execution of the plurality of data flow program portions is functionally equivalent to execution of the specified portion of the graphical data flow program; and

if the specified portion is determined to not be parallelizable, modify the appearance of the graphical indicator to indicate that the specified portion of the graphical data flow program is not parallelizable.

2. The non-transitory computer accessible memory medium of claim 1 , wherein the specified portion of the graphical data flow program comprises an iterative graphical program element configured to iteratively execute associated graphical data flow program code via iterations of the associated graphical data flow program code;

wherein each of the data flow program portions is configured to execute a respective one or more iterations;

wherein during execution of the graphical data flow program, the plurality of data flow program portions execute at least some iterations concurrently; and

wherein execution of the plurality of data flow program portions is functionally equivalent to sequential execution of the iterations of the associated graphical data flow program code.

3. The non-transitory computer accessible memory medium of claim 2 , wherein the iterative graphical program element comprises the graphical indicator.

4. The non-transitory computer accessible memory medium of claim 3 , wherein the graphical indicator comprises a configurable graphical element on the iterative graphical program element.

5. The non-transitory computer accessible memory medium of claim 4 , wherein the configurable graphical element on the iterative graphical program element indicates that parallelization is to be attempted via:

color;

shape; or

label.

6. The non-transitory computer accessible memory medium of claim 3 , wherein the graphical indicator comprises an appearance of the iterative graphical program element that indicates parallelization of the specified portion of the graphical data flow program is to be attempted.

7. The non-transitory computer accessible memory medium of claim 6 , wherein the appearance of the iterative graphical program element that indicates parallelization of the specified portion of the graphical data flow program is to be attempted comprises one or more of:

color of the iterative graphical program element;

shape of the iterative graphical program element;

line style of the iterative graphical program element; or

labeling of the iterative graphical program element.

8. The non-transitory computer accessible memory medium of claim 2 , wherein the graphical indicator is separate from, but coupled to, the iterative graphical program element.

9. The non-transitory computer accessible memory medium of claim 2 , wherein the graphical indicator is configurable to indicate whether or not parallelization of the specified portion of the graphical data flow program is to be attempted.

10. The non-transitory computer accessible memory medium of claim 2 , wherein the iterative graphical program element comprises a graphical loop structure with an interior, wherein the associated data flow program code is contained in the interior of the iterative graphical program element.

11. The non-transitory computer accessible memory medium of claim 1 , wherein the graphical indicator is configured to receive input specifying whether or not parallelization is to be attempted, and wherein the program instructions are further executable to:

modify an appearance of the graphical indicator in accordance with the input.

12. The non-transitory computer accessible memory medium of claim 1 , wherein the program instructions are further executable to:

if the specified portion of the graphical data flow program is determined to not be parallelizable, or a warning condition is detected, indicate one or more errors regarding why the specified portion of the graphical data flow program is not parallelizable, or one or more warnings regarding parallelization of the specified portion of the graphical data flow program.

13. The non-transitory computer accessible memory medium of claim 11 , wherein to indicate the one or more errors or one or more warnings, the program instructions are executable to:

display a description of the one or more errors or one or more warnings;

highlight offending program code;

shade offending program code;

display suggested modifications to the data flow program; or

change the appearance of the graphical indicator.

14. The non-transitory computer accessible memory medium of claim 11 , wherein the one or more errors or one or more warnings are received from a loop analyzer tool in response to the loop analyzer tool analyzing the graphical data flow program.

15. The non-transitory computer accessible memory medium of claim 1 , wherein to automatically generate program code implementing the plurality of data flow program portions, the program instructions are executable to:

automatically perform dependence analysis and reduction operation analysis of the graphical data flow program; and

automatically generate the program code implementing the plurality of data flow program portions based on the analyses.

16. The non-transitory computer accessible memory medium of claim 1 , wherein the graphical data flow program is displayed in a graphical program development environment, wherein the graphical program development environment is configured to receive input specifying whether or not parallelism is to be attempted, and wherein the program instructions are further executable to:

modify an appearance of the graphical indicator in accordance with the input.

17. The non-transitory computer accessible memory medium of claim 16 , wherein the input comprises user input.

18. The non-transitory computer accessible memory medium of claim 16 , wherein the input is received from a loop analyzer tool configured to determine whether or not the specified portion of the graphical data flow program is parallelizable.

19. A computer-implemented method for specifying modification of a graphical data flow program for concurrent execution, the method comprising:

utilizing a computer to perform:

displaying a graphical data flow program in response to user input, wherein the graphical data flow program comprises a plurality of interconnected nodes that visually indicate functionality of the graphical data flow program, wherein the graphical data flow program comprises a graphical indicator that specifies to a compiler that data flow program code is to be automatically generated that parallelizes a specified portion of the graphical data flow program for concurrent execution;

if the specified portion is determined to be parallelizable, automatically generating the program code implementing a plurality of data flow program portions based on the graphical indicator, wherein each of the data flow program portions is configured to implement a respective part of the functionality of the specified portion of the graphical data flow program wherein during execution of the graphical data flow program, the plurality of data flow program portions execute to provide the functionality of the specified portion, wherein at least two of the plurality of data flow program portions execute concurrently, and wherein execution of the plurality of data flow program portions is functionally equivalent to execution of the specified portion of the graphical data flow program; and

if the specified portion is determined to not be parallelizable, modifying the appearance of the graphical indicator to indicate that the specified portion of the graphical data flow program is not parallelizable.

20. A system for modifying a graphical data flow program for concurrent execution, comprising:

means for displaying a graphical data flow program in response to user input, wherein the graphical data flow program comprises a plurality of interconnected nodes that visually indicate functionality of the graphical data flow program, wherein the graphical data flow program comprises a graphical indicator that specifies to a compiler that data flow program code is to be automatically generated that parallelizes a specified portion of the graphical data flow program for concurrent execution;

if the specified portion is determined to be parallelizable, automatically generating the program code implementing a plurality of data flow program portions based on the graphical indicator, wherein each of the data flow program portions is configured to implement a respective part of the functionality of the specified portion of the graphical data flow program wherein during execution of the graphical data flow program, the plurality of data flow program portions execute to provide the functionality of the specified portion, wherein at least two of the plurality of data flow program portions execute concurrently, and wherein execution of the plurality of data flow program portions is functionally equivalent to execution of the specified portion of the graphical data flow program; and

if the specified portion is determined to not be parallelizable, modifying the appearance of the graphical indicator to indicate that the specified portion of the graphical data flow program is not parallelizable.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →