Abstract
Efficient communication among parallel processes is an important and integral part of designing scalable parallel programs. Yet many languages do not support methods for efficiently and easily expressing communication among subsets of these processes. This thesis describes a Process Groups library for the Charm parallel programming system which allows user programs to easily and efficiently express communication among dynamically configured groups of processed defined by the user. A detailed description of the algorithm is presented, as well as its implementation in the Charm language. Performance figures for key routines are presented, and several small application kernels are described to illustrate usage of the library.