My name is David and I am a programmer who uses MPI.net. One of my application needs is to pass a large amount of bytes (a 60 MB file) between the ranks.
I recently encountered a problem , I'm getting the one of follow exception
"AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory has been corrupted."
 fatal error
Fatal error in MPI_Iprobe: Internal MPI error!, error stack:
MPI_Iprobe(125)..................: MPI_Iprobe(src=MPI_ANY_SOURCE, tag=MPI_ANY_TAG, MPI_COMM_WORLD, flag=0x00000000002AE428, status=0x00000000002AE410) failed
MPIDI_CH3I_Progress_shm(93)......: shared memory read progress failed
MPIDI_CH3I_SHM_read_progress(312): shared memory read progress unable to handle incoming packet
MPIDI_CH3U_Handle_recv_pkt(184)..: received unknown packet type (type=12554704)
Or another exception regarding MPI_ALLOC_MEM.
I'm trying to see if I understand the memory allocation process, and the problem and to see if there is any solution.
If I understand correctly when I use the send message, the MPI communicator actually allocates an unmanaged memory on the stack and copies the managed data into it and then when I receive the data on the receiver rank it is copied into a new managed memory block and then the unmanaged memory (in the sender process) is freed. Is what I described so far correct?
Now the important issue is how do I try and solve the problem. I didn't quite understand why the allocated memory was not enough and how can I guarantee it will be enough in my case. Or why there is a try to access outside of the memory borders.
Another question is: does this problem occur only with large byte arrays? If I will change my message to contain a constant size byte array (e.g. byte) will this solve the problem?
Thank you in advance,
( Mobile: 054-9981887
( Office: 09-8864730
* David(Dedi) Bachar