The Gaussian elimination phase makes A upper triangular. For load balance, the rows are distributed among processors cyclically, with each row computed on by a single processor. A synchronization flag for each row indicates when it is available to other rows for use as a pivot. The main shared data is a pool of sparse arrays of genotype probabilities. Barriers are used for synchronization.
Scalability is limited by an inherent serial component and inherent load imbalance.
The major shared data structures are two arrays, one representing the bodies and the other representing the cells, a collection of bodies in close physical proximity. The Barnes-Hut tree construction is performed sequentially, while all other phases are parallelized and dynamically load balanced. Synchronization consists of barriers between phases. The major data structure is an array that contains the set of magnetic and electric nodes. These are equally distributed among the processors in the system.