The problem sizes that the community is dealing with today in both scientific research and day-to-day use computing exceed the capacity of modern shared-memory systems. With the increasing prevalence of
manycore/heterogeneous processors on portable devices and cloud computing clusters, the demand for portable mainstream programming models supporting scalable, reactive and versatile distributed computing is also rapidly growing.
With such changes, distributed software systems and applications
are shifting towards service oriented architectures (SOA) that
consist of largely decoupled, dynamically replaceable components
and connected via loosely coupled, interactive networks that may
exhibit more complex coordination and synchronization patterns.
These trends have encouraged the adoption of distributed computing
systems composed of computational nodes with internal parallelism
that cooperate by communicating over a network.
An easy-to-use unified programming paradigm with an efficient runtime system that supports both single-node and distributed multi-node
systems is a highly desirable goal, since such a paradigm can ease the
transition from single-node to multi-node parallelism. In this paper, we focus on the Selector model as a foundation for developing a unified programming model.
We introduce a library-based runtime system that can execute the same Selector-based program as either a single-node or multi-node parallel
program, based on externally specified configurations. To the best of
our knowledge, this is the first design and implementation of
Selectors for multi-node distributed-memory systems.
While mobile computing has seen a trend towards miniaturization and
energy savings for a number of years, the available hardware
parallelism in mobile devices has at the same time continued to
increase. Overall, mobile devices still remain resource constrained on power consumption and thermal dissipation. Aggregating the computing capabilities of multiple mobile devices in a distributed and dynamic setting opens the possibilities for performance improvements, longer aggregate battery life and novel dynamic and distributed applications.
In this dissertation we address the communication and location transparency challenges in \HJDS in both cluster-based and mobile-based designs by providing a fully decoupled, readily replaceable communication middleware and introduce a lightweight Selector reference with global unique identifier that encodes its location.
We have developed the cluster-based \HJDS runtime library that
allows programmers to focus on implementing the algorithm for solving the problem their application is trying to solve, without worrying whether their application will run on a shared-memory or distributed-memory
system. Our runtime implementation supports Selectors (a strictly more
powerful version of Actors) on both shared-memory and distributed-memory systems. This framework provides automated system bootstrap and global termination, unlike any other distributed approaches.
Our experimental evaluation using the Savina benchmark suite shows
promising strong scaling results, making a strong case for the
DS model as a viable alternative to the existing, much harder to program and port, parallel programming models.