A researcher in Germany has implemented the MPICH ADI so that MPI ``processes'' are in fact threads on a multiprocessor machine. Communication between these processes can be done with a single copy.
The MT device runs on Linux with the Nthreads library and on Solaris with
the Nthreads and Solaris threads libraries. To handle the problem of
non-private global variables, there is support for private global
variables through a preprocessor or a modified gcc compiler. This
approach is quite similar to what was done for the Cray PVP
implementation described in Section 6.5.1.
See http://noah.informatik.tu-chemnitz.de/members/radke/mtdevice/mtdevice.html
for more information.