Parallelizing Compiler for Multi-Processor Task Allocation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The shift to multi-processor systems poses significant programming challenges due to the complexity of managing concurrent processes, memory architecture, and communication mechanisms, requiring improved tools and methodologies to enhance programming productivity.
Innovation Solution
The HyperX architecture, which includes a scalable unit-cell-based hardware fabric with Data Memory and Router (DMR) and Processing Element (PE), allows for automation of parallel program breakdown into serial programs, enabling the use of conventional compilers and automatic task and memory allocation, while providing a graphical interface for modeling and optimizing parallelism.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multi-processor systems are used to improve computing performance, then processing speed and power efficiency are improved, but programming complexity and difficulty of managing concurrent processes increase
Solution Approach 1:
The patent introduces a parallelizing compiler as an intermediary tool that automatically transforms sequential code into parallel code for multi-processor systems. The compiler includes analysis modules that identify parallelizable operations and generation modules that create corresponding parallel code structures, thereby mediating between simple sequential programming and complex parallel execution without requiring programmers to directly manage concurrency
Solution Approach 2:
The system enables self-service by allowing the compiler to automatically analyze source code, identify parallelization opportunities, and generate optimized parallel code without manual intervention. The compiler autonomously handles task decomposition, processor allocation, and synchronization management, making the multi-processor system easy to program while maintaining high performance
2Ease of operation
If conventional compilers are used for multi-processor systems, then ease of programming is improved, but ability to optimize parallel execution and resource allocation deteriorates
Solution Approach 1:
The patent replaces manual parallel programming mechanics with an automated compiler-based system. Instead of requiring programmers to manually create complex parallel code structures, the system uses compiler analysis and generation modules that automatically transform sequential code into optimized parallel code, substituting mechanical programming effort with intelligent automated compilation processes
Solution Approach 2:
The compiler dynamically changes compilation parameters and optimization strategies based on the specific characteristics of the source code being compiled. It analyzes code patterns, data dependencies, and computational characteristics to automatically adjust parallelization strategies, processor assignments, and memory allocation parameters, achieving high execution efficiency without requiring programmers to specify these parameters manually
3Productivity
If automatic task and memory allocation is implemented, then programming productivity is improved, but complexity of communication mechanisms and resource management increases
Solution Approach 1:
The patent segments the complex task allocation and memory management functions into distinct compiler modules: analysis modules that examine code structure and dependencies, generation modules that create parallel code, and optimization modules that refine resource allocation. This segmentation allows each module to handle specific aspects of the complexity independently, making the overall system manageable while maintaining high automation levels
Data Source
AI summary
A computer-implemented method for creating a program for a multi-processor system comprising a plurality of interspersed processors and memories. A user may specify or create source code using a programming language. The source code specifies a plurality of tasks and communication of data among the plurality of tasks. However, the source code may not (and preferably is not required to) 1) explicitly specify which physical processor will execute each task and 2) explicitly specify which communication mechanism to use among the plurality of tasks. The method then creates machine language instructions based on the source code, wherein the machine language instructions are designed to execute on the plurality of processors. Creation of the machine language instructions comprises assigning tasks for execution on respective processors and selecting communication mechanisms between the processors based on location of the respective processors and required data communication to satisfy system requirements.


