Parallel Software Development via Sequential Verification
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
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.
Data Source
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.


