An Efficient Implementation of Charm++ on Virtual Machine Interface
Authors:
Gregory Allen Koenig
Parallel Programming Laboratory, Department of Computer Science, University
of Illinois at Urbana-Champaign
Master's Thesis, Department of Computer Science, University of Illinois at Urbana-Champaign, 2003
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.