The initial focus of the parallel programming community was on the development of applications targeted for specific platforms, achieving the shortest execution time possible. Lately, parallel computing platforms evolved to off-the-shelf hardware and applications became more portable due to standard parallel programming environments such as PVM and MPI. The programmer focus shifted to the development of portable applications that can achieve a good performance on a wide range of computing platforms. Recently, parallel computing evolved to globally connected computing resources (such as the grid environment), where the computing resources are heterogeneous, shared by several applications, and their number is almost unlimited and subject to dynamic changes. This type of environment requires methodologies and tools that can adapt applications to take advantage of such a number and variety of computing resources and adapt them to dynamically changing environments.
This proposal aims the research of methodologies and tools to help the development of scalable parallel applications that can take advantage of a large number and variety of shared computer resources. The main focus is on the development of methodologies to support efficient fine-grained parallelism (object oriented, specified by fine-grained active objects), whose grain-size can be dynamically adjusted to efficiently use the available resources, matching the available computing and communication bandwidth. This includes the dynamic determination of the number of computer resources that can be efficiently used by the application on particular running conditions. The research will follow a virtual machine based approach, since it provides application code compatibility, supporting dynamically downloaded code and can transparently provide additional services. Additionally, virtual machines are a strong trend in the programming community.
The key research issues on this project aim to provide:
- High-level specification of scalable parallel applications, supporting fine-grained tasks based on active objects that can be efficiently executed on a wide range of computing resources, including reconfigurable hardware. This includes the efficient mapping of high level scalable parallel programs to virtual machine level;
- Parallelism extraction from source or intermediate code, compile time estimation of object granularity information and inclusion of inter-objects dependencies information into object assemblies; the obtained information increases application parallelism and improves the efficiency of the run-time decision making.
- Load distribution and granularity control as a virtual machine service, providing transparent and efficient use of a wide range of shared and heterogeneous computing resources.
The resulting methodologies are implemented either by extending a virtual machine or by building a new layer on top of an existing virtual machine. This implementation will provide several new services, such as dynamic load distribution and granularity control, and tools that map high-level parallel applications to this environment. A full functional prototype will be tested using applications from computer graphics (from running projects) and will be available to the research community. This prototype will provide a faster development time of parallel applications and a more efficient use of shared computer resources.