Concerning the MPI one-sided, I developed a code in which each regular rank allocates a huge amount of memory with (MPI_Alloc_mem). Only one rank exposes its allocation to the other ranks as shared memory. My code works fine. However, I notice the following if I run multiple ranks on the same machine, it is not working (sometimes it crashes and sometimes it just hang). if I run the master rank on a dedicated machine, and I run all other ranks on another machine, the code works again! I repeated my experiments several times and it is always the same case.
So, I have three questions:
Would it be possible to tell any ideas about what may be happening? I use printf, as I do not have debugger like Alinea DDT
Is it possible that a livelock happens because the master process which owns the actual data is preempted, while another process that may try to read the actual data is scheduled.
How to know the way (Intel MPI) work? I mean there is no much information available on the standard of the MPI itself.