Message passing is a flexible parallel programming paradigm, and it is the dominant method of parallelizing codes in scientific computing. Message passing is suitable for both distributed memory computers, such as the Cray XT4/XT5 Louhi, and shared memory architectures.
In message passing each task has an address space in memory that other tasks cannot directly access. When exchange of data is needed between tasks, both parties must take action. That is, one task sends and the other receives so that the communication is two-sided.
In practice a message passing program is written with Fortran or C/C++ and a library whose subroutines are used to handle the communication between the tasks.
Today MPI (Message Passing Interface) is the most widely used message passing library. It is standardized which makes it easy to port programs between platforms. Although it requires some effort to parallelize a code with MPI, good performance can usually be achieved with careful programming.
The MPI version on Louhi is MPI 2.0 compliant excluding the dynamic process features and thread safety. Most importantly, MPI-IO is available and is recommended for parallelizing the IO.