Critical Path Identification in Concurrent Software Applications

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional performance analysis methods for software applications across multiple processing units are inadequate, as they fail to accurately reflect the overall performance of complex software applications due to the use of micro-benchmarks, which do not correctly identify critical paths in the presence of parallelism, leading to ineffective optimization of software and hardware design.

Innovation Solution

A computer-implemented method that receives a software application configured to execute multiple tasks, generates execution data including performance data and dependency links, and determines a subset of tasks within the critical path that establishes the overall execution speed, enabling effective optimization of software and hardware by correctly identifying the critical path.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If micro-benchmarks are used to reduce simulation time, then the time required for performance analysis is reduced, but the accuracy of performance data reflecting overall application performance deteriorates

Engineering Contradiction:
Improvetime required for performance analysisVSAvoidaccuracy of performance data
Core Design Contradiction:
Loss of timeVSMeasurement precision

Solution Approach 1:

The patent segments the software application into multiple tasks that can be executed concurrently on different processing units. Each task is represented as a node in a dependency graph, allowing the system to analyze performance at the task level while maintaining the overall application structure. This segmentation enables comprehensive performance analysis without requiring full-chip simulation of the entire application.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a dependency graph dimension that captures temporal and computational relationships between tasks. By representing tasks as nodes and dependencies as edges, the system adds a structural dimension to performance analysis that goes beyond simple execution time measurement. This allows identification of critical paths through the dependency graph, providing accurate performance data that reflects overall application behavior even when using simplified task representations.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Device complexity

If conventional performance analysis methods are used, then the complexity of analysis is reduced, but the ability to identify critical paths in parallel executions deteriorates

Engineering Contradiction:
Improvecomplexity of performance analysisVSAvoidability to identify critical paths
Core Design Contradiction:
Device complexityVSMeasurement precision

Solution Approach 1:

The patent introduces a dependency graph as an intermediary structure that mediates between the concurrent task executions and the performance analysis process. The dependency graph captures the temporal and computational relationships between tasks, serving as a bridge that enables accurate critical path identification without requiring complex analysis of the concurrent execution behavior itself. This intermediary structure simplifies the analysis while maintaining precision in critical path identification.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If full-chip simulation is used to ensure accurate performance data, then the measurement precision is improved, but the time required for simulation increases unacceptably

Engineering Contradiction:
Improveaccuracy of performance dataVSAvoidtime required for simulation
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent creates a simplified representation of the software application as a set of tasks with dependencies, rather than simulating the complete hardware/software system. This copying approach captures the essential performance characteristics through task-level models that can be analyzed efficiently. The dependency graph serves as a computational model that replicates the critical path behavior without requiring full-chip simulation, thus maintaining measurement precision while dramatically reducing simulation time.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9684581B2Determining overall performance characteristics of a concurrent software application
Publication Date: 2017.06.20 NVIDIA CORP
  • US9684581B2 patent drawing
  • US9684581B2 patent drawing
  • US9684581B2 patent drawing

AI summary

One embodiment of the present invention includes a dependency extractor and a dependency investigator that, together, facilitate performance analysis of computer systems. In operation, the dependency extractor instruments a software application to generate run-time execution data for each work task. This execution data includes per-task performance data and dependency data reflecting linkages between tasks. After the instrumented software application finishes executing, the dependency investigator evaluates the captured execution data and identifies the critical path of tasks that establishes the overall run-time of the software application. Advantageously, since the execution data includes both task-level performance data and dependencies between tasks, the dependency investigator enables the developer to effectively optimize software and hardware in computer systems that are capable of concurrently executing tasks. By contrast, conventional performance analysis may not correctly identify critical paths in software applications that execute tasks in parallel across multiple processing units and, consequently, may misdirect optimization efforts.