Parallel Software Development via Sequential Verification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software development processes are inadequate for parallel computing environments, leading to inefficiencies and difficulties in debugging due to the complexity of concurrency and resource management issues in parallel programs.

Innovation Solution

A modified Waterfall software development model that involves developing a sequential implementation first, followed by verification, then converting it to a parallel implementation and verifying the results against the sequential version, allowing for simultaneous development and debugging across multiple hardware platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If software is developed directly in a parallel computing environment, then the application can utilize parallel processing capabilities, but the development complexity and debugging difficulty increase significantly due to concurrency issues and race conditions

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidsoftware development complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The development process is segmented into distinct phases: sequential implementation phase and parallel implementation phase. The sequential phase handles logic development and verification, while the parallel phase handles performance optimization. This segmentation isolates the complexity of parallel programming to a specific phase rather than requiring it throughout the entire development process.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The sequential implementation is developed and verified before attempting parallel implementation. This preliminary action establishes a correct logical foundation that can then be systematically converted to parallel code, reducing the risk of introducing concurrency bugs during the transition.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If software is developed directly in a parallel computing environment, then parallel performance can be achieved, but debugging becomes extremely time-consuming due to race conditions and timing-dependent behavior

Engineering Contradiction:
Improveparallel processing capabilityVSAvoiddebugging time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The sequential implementation is developed and thoroughly verified before parallel implementation begins. This preliminary verification establishes correct logical behavior that serves as a reference for debugging the parallel version, significantly reducing the time needed to identify and fix concurrency-related bugs.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The sequential implementation serves as a reference copy that is systematically transformed into the parallel implementation. By maintaining the sequential version as a validated reference, developers can compare behaviors and identify deviations caused by parallelization, making debugging more efficient.

Inventive Principle:
Principle #26Copying

3Ease of operation

If traditional sequential software development processes are used for parallel computing, then the development process remains simple and familiar, but the processes become inadequate and inefficient for parallel software development

Engineering Contradiction:
Improvedevelopment process simplicityVSAvoidparallel software development efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The development process is segmented into phases that build upon each other: requirements, design, sequential implementation, sequential verification, parallel implementation, and parallel verification. This structured segmentation maintains procedural simplicity while addressing the specific needs of parallel software development.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Sequential implementation and verification are performed as preliminary actions before parallel implementation. This approach maintains the simplicity of sequential development processes while adding necessary parallelization steps, making the transition to parallel computing more manageable and efficient.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9015673B2Method for developing software in a parallel computing environment
Publication Date: 2015.04.21 GE AVIATION SYSTEMS LLC
  • US9015673B2 patent drawing
  • US9015673B2 patent drawing
  • US9015673B2 patent drawing

AI summary

A method for developing software in a parallel computing environment comprises the steps of developing a sequential implementation and parallel implementation of the software and verifying the results of the parallel implementation of the software against the results of the sequential implementation of the software.