An Efficient Implementation of Charm++ on Virtual Machine Interface
Thesis 2003
Publication Type: MS Thesis
Repository URL:
Abstract
Charm++ is a message-driven parallel programming language designed
with the goal of enhancing programmer productivity by providing a
high-level abstraction of a parallel computation while at the same
time providing good performance on platforms ranging from
traditional supercomputers to more recent commodity cluster
environments. Charm++ is based on the C++ programming language and
is backed by an adaptive runtime system that provides features such
as processor virtualization, load balancing, and communication
optimizations. Programs written in Charm++ consist of parallel
objects called chares that communicate with each other
through asynchronous message passing. When a chare receives a
message, the message triggers a corresponding method within the
chare object to handle the message asynchronously. Charm++ is
implemented on top of a software layer called Converse which
supports portability across multiple platforms and, in particular,
provides interprocess communication.
Virtual Machine Interface (VMI) is a high-bandwidth low-latency communication layer designed with the primary goal of providing a single programming interface to the various system area networks commonly used in modern commodity clusters. VMI is generally not intended for direct use by application developers but rather to provide a low-overhead communication layer to developers of higher level programming languages and message passing libraries. A language or library implemented on VMI immediately gains access to all of the network interconnects supported by VMI while paying a small overhead of only a few microseconds per message. Furthermore, the language or library can take advantage of other VMI features such as the ability to stripe data across multiple network interfaces, automatic fail-over from one network transport to another, access to communication transports for distributed grid-based computing, and the ability to monitor and dynamically tune the communication layer.
This thesis describes an efficient implementation of Charm++ on Virtual Machine Interface and discusses the various design trade-offs involved. Performance of the implementation is evaluated for latency and bandwidth and compared to the performance of Charm++ implementations running on other communication layers.
Virtual Machine Interface (VMI) is a high-bandwidth low-latency communication layer designed with the primary goal of providing a single programming interface to the various system area networks commonly used in modern commodity clusters. VMI is generally not intended for direct use by application developers but rather to provide a low-overhead communication layer to developers of higher level programming languages and message passing libraries. A language or library implemented on VMI immediately gains access to all of the network interconnects supported by VMI while paying a small overhead of only a few microseconds per message. Furthermore, the language or library can take advantage of other VMI features such as the ability to stripe data across multiple network interfaces, automatic fail-over from one network transport to another, access to communication transports for distributed grid-based computing, and the ability to monitor and dynamically tune the communication layer.
This thesis describes an efficient implementation of Charm++ on Virtual Machine Interface and discusses the various design trade-offs involved. Performance of the implementation is evaluated for latency and bandwidth and compared to the performance of Charm++ implementations running on other communication layers.
TextRef
Gregory Allen Koenig, "An Efficient Implementation of Charm++ on Virtual
Machine Interface," Master's Thesis, Department of Computer Science,
University of Illinois at Urbana-Champaign, 2003.
People
Research Areas