MPI: blocking vs non-blocking

Blocking communication is done using MPI_Send() and MPI_Recv(). These functions do not return (i.e., they block) until the communication is finished. Simplifying somewhat, this means that the buffer passed to MPI_Send() can be reused, either because MPI saved it somewhere, or because it has been received by the destination. Similarly, MPI_Recv() returns when the receive … Read more

Display a MPI typemap

As Rob Latham said, there isn’t good pre-existing solutions. With the help of the links given by tim I created this function available on Github. I took your example for the contiguous + resize test (here) and the output is contiguous + resize “(LB, -3), (MPI_INT, 0), (MPI_INT, 9), (UB, 15)” With this function you … Read more

How do I debug an MPI program?

I have found gdb quite useful. I use it as mpirun -np <NP> xterm -e gdb ./program This the launches xterm windows in which I can do run <arg1> <arg2> … <argN> usually works fine You can also package these commands together using: mpirun -n <NP> xterm -hold -e gdb -ex run –args ./program [arg1] … Read more

MPICH vs OpenMPI

Purpose First, it is important to recognize how MPICH and Open-MPI are different, i.e. that they are designed to meet different needs. MPICH is supposed to be high-quality reference implementation of the latest MPI standard and the basis for derivative implementations to meet special purpose needs. Open-MPI targets the common case, both in terms of … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)