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-412011
PaperUsing Shared Arrays in Message-Driven Parallel Programs
- Phil Miller
- Aaron Becker
- Laxmikant Vasudeo Kale
-
11-132011
PaperUsing Shared Arrays in Message-Driven Parallel Programs
- Phil Miller
- Aaron Becker
- Laxmikant Vasudeo Kale
-
09-142009
PaperPGAS in the Message-Driven Execution Model
- Aaron Becker
- Phil Miller
- Laxmikant Vasudeo Kale
-
08-132008
PaperA Case Study in Tightly Coupled Multi-paradigm Parallel Programming
- Sayantan Chakravorty
- Aaron Becker
- Terry Wilmarth
- Laxmikant Vasudeo Kale