Dataflow Graph Simulation via Threaded Kernel Assignment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Simulating a dataflow graph in a system on a chip (SoC) with mixed programmable and non-programmable logic is cumbersome due to the need for detailed understanding of hardware communication and the difficulty in parallelizing heterogeneous computations across different interfaces and synchronization primitives.

Innovation Solution

A method is described that involves receiving a graph specification defining kernels and communication links, assigning kernels to threads, identifying simulation components in a runtime library for heterogeneous communication protocols, and generating a simulation executable to simulate the dataflow graph in a heterogeneous processing environment, allowing for high-level expression of dataflow graphs without requiring detailed understanding of hardware implementation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If sequential source code or OpenCL is used to write programs for a SoC with mixed programmable and non-programmable logic, then the program can be written with detailed hardware understanding, but the programming becomes cumbersome and difficult to parallelize

Engineering Contradiction:
Improveease of programmingVSAvoidparallelization capability
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent introduces a dataflow graph as an intermediary representation between the programmer and the heterogeneous hardware. The graph specification language allows programmers to describe computations and data flows without directly managing hardware interfaces, while the compiler automatically handles the complex mapping to programmable and non-programmable logic, enabling both ease of programming and effective parallelization

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the manual mechanical process of writing sequential code with detailed hardware management by an automated compilation process. The compiler system automatically translates high-level dataflow graph specifications into optimized parallel execution code for heterogeneous hardware, substituting the manual coding mechanism with an automated compilation mechanism that handles parallelization

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Productivity

If data-parallelism and thread-parallelism are used to express computations, then parallel processing is achieved, but these techniques do not extend naturally to programmable logic where heterogeneous computations with different interfaces need to be expressed

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidheterogeneous computation support
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal dataflow graph framework that can represent both data-parallel and thread-parallel computations, as well as heterogeneous computations with different interfaces. The graph specification language and compiler provide a multi-functional system that handles diverse computation types through a unified representation, allowing the same framework to express regular array computations and irregular heterogeneous computations

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Reliability

If simulation of dataflow graph is performed before implementation on SoC, then design verification is enabled, but simulation is difficult due to parallelization requirements and heterogeneous communication protocols

Engineering Contradiction:
Improvedesign verification capabilityVSAvoidsimulation complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent creates a software simulation copy of the dataflow graph that runs on standard processors before hardware implementation. This simulation copy uses the same graph specification language and compilation process, allowing design verification in a software environment without requiring complex parallelization or heterogeneous communication infrastructure, thus enabling reliable verification while avoiding simulation complexity

Inventive Principle:
Principle #26Copying

4Measurement precision

If detailed understanding of hardware communication is required, then precise control over communication is achieved, but the programming becomes cumbersome and difficult

Engineering Contradiction:
Improvecommunication control precisionVSAvoidprogramming difficulty
Core Design Contradiction:
Measurement precisionVSEase of operation

Solution Approach 1:

The patent extracts the complex hardware communication details from the programmer's responsibility and handles them automatically in the compilation process. The compiler extracts communication requirements from the dataflow graph specification and automatically generates the appropriate communication code for heterogeneous interfaces, providing precise communication control without requiring programmers to understand or manually manage hardware communication protocols

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11036546B1Multi-threaded shared memory functional simulation of dataflow graph
Publication Date: 2021.06.15 XILINX INC
  • US11036546B1 patent drawing
  • US11036546B1 patent drawing
  • US11036546B1 patent drawing

AI summary

Examples herein describe techniques for generating dataflow graphs using source code for defining kernels and communication links between those kernels. In one embodiment, the graph is formed using nodes (e.g., kernels) which are communicatively coupled by edges. A compiler converts the source code into a bit stream and/or object code which configures a heterogeneous processing environment of a SoC to execute the graph. Before implementing the dataflow graph on the SoC, the programmer may wish to simulate the dataflow graph. In one embodiment, each kernel in the dataflow graph is assigned a respective thread. Additionally, the simulator can include a runtime library for simulating the different types of communication links between the kernels. Even those these communication links are different protocols or have different semantics, using the simulation components in the library makes the different types of communication links composable so they can inter-operate in the same simulation environment.