On 2010-11-29 17:29:22 +0100, Riccardo Murri said:
Hi Philipp,
On Mon, Nov 29, 2010 at 4:17 PM, Philipp Kraus
wrote: At this time I have two problems. Sometimes the programm create a error with: Adress not mapped (it seems that the iprobe creates the problem). I can't reproduce the error.
It's difficult to give any sensible advice on this without compilable code; the general advice is to try to create a minimal test source that can reproduce the problem. In doing the exercise, I often found out the problem myself...
A rough guess about your "address not mapped" error: if you are going to use MPI with threads, then *two* conditions must be met:
(1) You must initialize MPI with MPI_Init_thread() instead of MPI_Init(). The boost::mpi::communicator ctor uses MPI_Init(), so you must run the initialization yourself and *then* create the communicator object. For instance::
MPI_Init_thread(&argc, &argv, MPI_THREAD_SERIALIZED) // ... mpi::communicator world;
Do the Boost lib support the initialisation process? I have take a look into the Boost MPI classes, but it seems Boost calls only the MPI_init(). Do I understand it correct, that I must use the mpi.h for calling the MPI_Init_thread() or is there a boost support?
(2) Your MPI library must have been compiled with threads support. This is not the case with some Linux distributions, e.g., Rocks 5.x, so double-check that MPI_Init_threads() actually did its job.
I used self-compiled libs, so that's not a problem Thanks Phil