A Parallel Processing Library for User-friendly Applications

Clusters of commodity, "off the shelf" workstations have given developers and users access to scalable and affordable computing resources. However, unlike large, symmetric multi-processing machines, these clusters have an up front cost in complexity, both for the developer and the user. Ex...

Full description

Bibliographic Details
Main Author: Demko, Aleksander Borys
Other Authors: Pizzi, Nick (Computer Science)
Published: 2012
Subjects:
Online Access:http://hdl.handle.net/1993/5046
Description
Summary:Clusters of commodity, "off the shelf" workstations have given developers and users access to scalable and affordable computing resources. However, unlike large, symmetric multi-processing machines, these clusters have an up front cost in complexity, both for the developer and the user. Existing software frameworks have attempted to mitigate this complexity with varied success. In most frameworks, the user is forgotten and left to deal with an unwieldy application. This thesis presents the design, development and testing of a new C++ computer programming library, Scopira Agents Library (SAL). SAL is a message passing interface and implementation suitable for building parallel applications, with a focus on developer ease of use and user application deployment specification. The target developers and users of such a solution would be those who prefer an easy to develop library, with simpler deployment and application integration options with acceptable sacrifices to performance and scalability. The novelty of this parallel programming library is that it is more user-friendly than other existing libraries. This novelty has two major facets: (i) programmer-usability and productivity and (ii) application integration. Together, they permit a wider range of programmers to utilize parallel programming in a wider range of new and existing applications. This goal, user-friendliness, is rare among current parallel programming libraries. The result of the novelty is that parallel programming can be embedded into more applications, especially desktop applications. The user base and use cases for parallel applications can be increased, resulting in more efficient use of resources in a variety of applications. With increased efficiency, work can be performed in less time and larger problems can be tackled.