MSA: Multiphase Shared Arrays Library in Charm++

The Multiphase Shared Arrays (MSA) library provides a partitioned global address space (PGAS) abstraction in Charm++. Explicitly shared arrays provide the convenience of shared memory programming where suitable, while exposing optimization opportunities to programmers, compilers, and the Adaptive Runtime System.

Each MSA is accessed in one specific mode during each phase of execution: read-only mode, in which any thread can read any element of the array; write-once mode, in which each element of the array is written to (possibly multiple times) by at most one worker thread and no reads are allowed; accumulate mode, in which any threads can add values to any array element, and no reads or writes are permitted; and owner-computes mode, where a specified function is performed on each distributed block of the array by a processor on its home node. A synchronization call is used to move from one phase to the next.

MSA distributes data in blocks whose dimensions are specified by the programmer. The assignment of blocks to processors, and subsequent load balancing, can be controlled by the same mechanisms the Charm++ runtime provides for any Chare array. The runtime automatically manages fetching and caching of remote data, though the programmer or compiler may make (blocking or non-blocking) prefetch calls as an optimization if the access pattern is predictable.
 

Software
Distributed with Charm++.
People
Papers
  • 08-13    Sayantan Chakravorty, Aaron Becker, Terry Wilmarth, Laxmikant Kale,  A Case Study in Tightly Coupled Multi-paradigm Parallel Programming,  Languages and Compilers for Parallel Computing (LCPC '08)
  • 04-10    Jayant DeSouza and Laxmikant V. Kale,  MSA: Multiphase Specifically Shared Arrays,  Proceedings of the 17th International Workshop on Languages and Compilers for Parallel Computing, West Lafayette, Indiana, USA, September 22-25 2004.
Related Links

This page maintained by Phil Miller. Back to the PPL Research Page