Parallel Languages/Paradigms:
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.
People
Papers/Talks
11-41
2011
[Paper]
Using Shared Arrays in Message-Driven Parallel Programs [ParCo 2011]
11-13
2011
[Paper]
Using Shared Arrays in Message-Driven Parallel Programs [HIPS 2011]
09-14
2009
[Paper]
PGAS in the Message-Driven Execution Model [APGAS 2009]
08-13
2008
[Paper]
A Case Study in Tightly Coupled Multi-paradigm Parallel Programming [LCPC 2008]
04-10
2004
[Paper]
MSA: Multiphase Specifically Shared Arrays [LCPC 2004]