Overlapping Memory
(LOCAL:MEMORY:OVERLAP)
Intel® Trace Collector keeps track of memory currently in use by MPI and before
starting a new operation, checks that the memory that it references is not in use
already.
The MPI standard explicitly transfers ownership of memory to MPI even for send
operations. The application is not allowed to read it while a send operation is
active and must not setup another send operation which reads it either. The
rationale is that the MPI might modify the data in place before sending it and might
revert the change afterwards. In practice MPI implementation do not modify the
memory, so this is a minor problem and just triggers a warning.
Obviously, writing into the same memory twice in possibly random order or writing
into memory which the MPI might read from is a real error. However, detecting these
real errors is harder for message receives because the size of the buffer given to
MPI might be larger than the actual message: even if buffers overlap, the messages
might be small enough to not lead to writes into the same memory. Because the
overlap check is done when a send buffer is handed over to MPI, only a warning is
generated. The application might be able to continue normally, but the source code
should be fixed because under a strict interpretation of the MPI standard using the
same buffer twice is already illegal even if the actual messages do not overlap.
Because the problem might be at the place where the memory was given to MPI
initially and not where it is reused, Intel® Trace Collector also provides both call
stacks.