5 Multiphase Shared Arrays

Charm++ includes multiphase shared arrays (MSA), a distributed shared array library designed to safely enable common patterns of shared-memory scientific applications while retaining the benefits of an asynchronous adaptive runtime system. The general pattern of usage that MSA supports is one in which the application does one sort of access on an array for a while, and then changes to another kind of access at some distinguished point in the execution. For instance, one part of the program might accumulate a physical quantity onto a grid representing the simulation space, and another part might read from that grid once it is fully calculated.

MSA formalizes this pattern in its access modes and phases. This formality allows the runtime to optimize data movement and exclude race conditions and other hard-to-debug errors that can be common in shared-array programming.

Development on MSA is ongoing. This means that its API may not be completely stable, but it also means that its developers are actively seeking suggestions of new use cases and features. At present, it is generic over element type, and supports 1, 2, and 3 dimensional rectangular arrays with row- and column-major element orderings.



Subsections

May 26, 2012
Charm Homepage