Skip to Main Content
The next generation of embedded systems confronts the designer with multi-processor systems both for performance and energy reasons. Exploiting task-level parallelism in combination with coarse-grained loop-level parallelism is becoming crucial. The challenge is to build compiler tools for the exploration of these types of parallelism. To achieve this goal, the authors have designed a transformation framework for analysis and extraction of the potential parallelism in sequential object-oriented programs. An inter-procedural, context- and flow-sensitive algorithm was presented for distribution of complex outer-most loops of sequential object-oriented programs. The technique consists of three main phases: compositional inter-procedural object-distribution analysis, context-sensitive mapping of object-distribution graph with translation of program attributes and graph partitioning using multi-level partitioning algorithm. Integration of these algorithms allows us to define a number of potential loop decompositions with respect to program flow and object-distribution properties. Full automation of this technique further extends its applicability in the definition of optimized task boundaries. The usability and performance of the approach was demonstrated on a number of realistic Java applications.