I'm afraid that I learnt MPI in bits and pieces on an "as you need it" sort of basis, so I wouldn't be a great guide for a book. There's also lots of people at work that I can ask.
Thank you for your kind reply, and I would like to refer the books you suggested since it contains whole topics (including numerical algorithm for physics).
> I typically use Microsoft MPI on Windows and mpich on linux.
I currently use Intel MPI as the base library, and utilize boost::mpi in order easily to handle C++ class types. boost::mpi abstracts C++ types to communicate it as it is, by using boost::serialization (C++ class types are converted to byte array).
Particularly, STL container (c.f. std::vector) can be easily handled.
Probably, the problem of my other thread is due to some library dependency. If anyone does not know, I am willing to struggle to resolve it by myself.