I figured it out. I used wrong base
address. I have to use base instead of offsets(1):
call MPI_GET_ADDRESS(obj , base , ierr)
offsets = offsets - base
Thanks,
--Ted
On 05/29/2014 09:40 AM, Ted Sariyski wrote:
Hi,
I have difficulties to implement mpi_win/mpi_put. What's strange
is, that when a process N puts data on ROOT, ROOT gets most of the
data correct, with few exceptions. Attached is a small example,
which illustrates the problem and here is a short description.
- There is an array BP(nBP) of type DR_boundaryPoint_t =
{integer, character*32,real(3),real}.
- MPI type MPI_DR_boundaryPoint_t match
DR_boundaryPoint_t
- ROOT opens a window BP_win for nBP elements
of type MPI_DR_boundaryPoint_t
- ONE puts BP(3) to root:BP(3)
ROOT receives the real fields dist and ori
correctly, but the integer field bcTag is not updated, and
the character field bcName is messed up.
0: bcTag= 0 dist= 0.9000E+01 bcName=TEST A ori=
0.6000E+01 0.9000E+01 0.1200E+02
1: bcTag= 99 dist= 0.9000E+01 bcName=TEST ori=
0.6000E+01 0.9000E+01 0.1200E+02
I have no idea what I am doing wrong. Any help will be highly
appreciated.
Thanks in advance,
--Ted