Matrix Distributed Processing: A set of C++ Tools for implementing   generic lattice computations on parallel systems
  We present a set of programming tools (classes and functions written in C++ and based on Message Passing Interface) for fast development of generic parallel (and non-parallel) lattice simulations. They are collectively called MDP 1.2.   These programming tools include classes and algorithms for matrices, random number generators, distributed lattices (with arbitrary topology), fields and parallel iterations. No previous knowledge of MPI is required in order to use them.   Some applications in electromagnetism, electronics, condensed matter and lattice QCD are presented. 
Massimo Di Pierro