Parallel Execution via Operator Overloading
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Scientific computing software applications lack built-in parallel computing capability, requiring users to have detailed knowledge of parallel processing techniques, such as devising algorithms and managing memory and interprocessor communication, which is complex and beyond the skill level of typical users.
Innovation Solution
The implementation of 'parallelism through polymorphism' allows users to perform parallel computations using overloaded operators and methods that operate transparently, enabling parallel processing without the need for complex algorithm design or detailed knowledge of parallel processing techniques, by defining data types and operations that can reference data on a parallel server and manage memory allocation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If parallel computing capability is implemented, then computational problems can be solved faster using multiple processors, but the complexity of writing parallel program code increases significantly
Solution Approach 1:
The patent introduces an intermediary layer (parallel processing system with overloaded operators) that automatically handles the complexity of parallel programming. Users write simple code that appears to operate on single objects, while the overloaded operators act as intermediaries that automatically distribute work across multiple processors, manage memory allocation, and coordinate interprocessor communication, thus resolving the contradiction between improved productivity and increased code complexity
Solution Approach 2:
The parallel processing system provides self-service by automatically performing tasks that would otherwise require manual parallel programming expertise. The overloaded operators automatically divide computational problems among processors, manage data distribution, and handle synchronization without requiring users to explicitly program these complex parallel processing details, thereby maintaining simple code while achieving parallel execution speedups
2Ease of manufacture
If pre-existing parallel computing software packages are used, then general parallel computing tasks can be performed without coding from scratch, but the programmer must be familiar with such software packages
Solution Approach 1:
The patent creates a universal interface through overloaded operators that work with standard programming language constructs. The parallel processing capabilities are integrated into the language itself through operator overloading, making the system universally applicable to various parallel computing tasks without requiring programmers to learn separate package-specific syntax or APIs, thus achieving both ease of implementation and ease of operation
Solution Approach 2:
Instead of requiring programmers to learn complex parallel processing packages and then use them, the patent inverts the approach by making simple standard operations (through overloaded operators) that automatically invoke parallel processing capabilities. This reverses the traditional model where complexity is exposed to the user, and instead hides complexity while maintaining simplicity in the programming interface
3Productivity
If data is stored on a parallel server for parallel processing, then multiple processors can access and operate on the data concurrently, but memory management and reallocation become more complex
Solution Approach 1:
The overloaded operators automatically manage memory allocation and deallocation on the parallel server without requiring explicit programmer intervention. When objects are created or destroyed in the user's simple code, the overloaded operators automatically handle the corresponding memory operations on the distributed system, including reallocation when data is no longer needed, thus enabling concurrent processing while hiding memory management complexity
Data Source
AI summary
In one embodiment, a process may be performed in parallel on a parallel server by defining a data type that may be used to reference data stored on the parallel server and overloading a previously-defined operation, such that when the overloaded operation is called, a command is sent to the parallel server to manipulate the data stored on the parallel server. In some embodiments, the previously-defined operation that is overloaded may be an operation of an operating system. Further, in some embodiments, when the data stored on the parallel server is no longer needed, a command may be sent to the parallel server to reallocate the memory used to store the data.


