  Although poor for small dynamic scales, the Particle-Mesh (PM) model allows
in astrophysics good insight for large dynamic scales at low computational
cost. Furthermore, it is possible to employ a very high number of particles to
get high mass resolution. These properties could be exploited by suitable
parallelization of the algorithm. In PM there are two types of data: the
particle data, i.e. position and velocity, which are stored in one-dimensional
arrays of N elements, and the grid data, i.e. density and force, which are
stored in three-dimensional arrays $M\times M\times M$ in size. Since
individual particles can change cell under the action of gravitational force,
parallelization is a real challenge on parallel machine and must account for
the machine architecture. We have implemented a dynamic work distribution
through agenda parallelism. By subdividing the work in small tasks, the
implementation is well balanced, scalable and efficient also for clustered
particle distributions. In this contribution we describe this efficient, load
balanced, parallel implementation of PM algorithm on Cray T3E at CINECA and
show its performances on cosmological simulation results.
