<div dir="ltr"><div><div><br></div>Thanks a lot for your guys reply. I should initial b array, I figure out the MPI_Win_fence should be called by all processes, which will solve the assertion failed issue. <br><br></div><div>
it seems that MPI_Win_fence is very similar to MPI_Barrier, Can I say MPI_Win_fence is the RMA version of MPI_Barrier?<br><br></div><div>sorry about so many questions. Can I use MPI window as thread level? let's say I have 4 processes, each process has 8 threads. if only one thread is used to create mem access window, other process copy it and internal 8 threads use shared memory to perform some operations. Is that ok?<br>
<br></div><div>Thanks a lot!<br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 3, 2013 at 1:28 PM,  <span dir="ltr"><<a href="mailto:discuss-request@mpich.org" target="_blank">discuss-request@mpich.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send discuss mailing list submissions to<br>
        <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:discuss-request@mpich.org">discuss-request@mpich.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:discuss-owner@mpich.org">discuss-owner@mpich.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of discuss digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  beginner for remote mem access (Sufeng Niu)<br>
   2. Re:  beginner for remote mem access (Yi Gu)<br>
   3. Re:  beginner for remote mem access (Yi Gu)<br>
   4. Re:  beginner for remote mem access (Jeff Hammond)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Wed, 3 Jul 2013 13:12:46 -0500<br>
From: Sufeng Niu <<a href="mailto:sniu@hawk.iit.edu">sniu@hawk.iit.edu</a>><br>
To: <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
Subject: [mpich-discuss] beginner for remote mem access<br>
Message-ID:<br>
        <CAFNNHkwxqXUB_+b8_tZ=<a href="mailto:L5K7VcDVhsz4ZMDDMGF55v-FAhgeqg@mail.gmail.com">L5K7VcDVhsz4ZMDDMGF55v-FAhgeqg@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi,<br>
<br>
I am a beginner and just try to use remote memory access, and I wrote a<br>
simple program to test it:<br>
<br>
#include "mpi.h"<br>
#include <stdio.h><br>
#define SIZE 8<br>
<br>
int main(int argc, char *argv[])<br>
{<br>
        int numtasks, rank, source=0, dest, tag=1, i;<br>
        float a[64] =<br>
        {<br>
                1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
12.0, 13.0, 14.0, 15.0, 16.0,<br>
                1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
12.0, 13.0, 14.0, 15.0, 16.0,<br>
                1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
12.0, 13.0, 14.0, 15.0, 16.0,<br>
                1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
12.0, 13.0, 14.0, 15.0, 16.0,<br>
        };<br>
        float b[SIZE];<br>
<br>
        MPI_Status stat;<br>
<br>
        MPI_Init(&argc,&argv);<br>
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);<br>
        MPI_Comm_size(MPI_COMM_WORLD, &numtasks);<br>
<br>
        MPI_Win win;<br>
<br>
        // check processor rank<br>
        char processor_name[MPI_MAX_PROCESSOR_NAME];<br>
        int name_len;<br>
        MPI_Get_processor_name(processor_name, &name_len);<br>
        printf("-- processor %s, rank %d out of %d processors\n",<br>
processor_name, rank, numtasks);<br>
<br>
        MPI_Barrier(MPI_COMM_WORLD);<br>
<br>
        if (numtasks == 4) {<br>
                if (rank == 0) {<br>
                        printf("create window \n");<br>
                        MPI_Win_create(a, 8*sizeof(float), sizeof(float),<br>
MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
<br>
                }<br>
                else {<br>
                        MPI_Win_create(MPI_BOTTOM, 0, sizeof(float),<br>
MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
                }<br>
<br>
                MPI_Win_fence(0, win);<br>
<br>
                if (rank == 1){<br>
                        MPI_Get(b, SIZE, MPI_FLOAT, 0, 8, SIZE, MPI_FLOAT,<br>
win);<br>
<br>
                        MPI_Win_fence(0, win);<br>
                }<br>
<br>
                printf("rank= %d  b= %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f<br>
%3.1f %3.1f\n", rank,b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);<br>
        }<br>
        else<br>
                printf("Must specify %d processors. Terminating.\n",SIZE);<br>
<br>
        MPI_Win_free(&win);<br>
        MPI_Finalize();<br>
}<br>
<br>
However the terminal gives some odd results:<br>
rank= 0  b= 0.0 0.0 0.0 0.0 0.0 0.0 -71847793475452928.0 0.0<br>
rank= 2  b= 0.0 0.0 0.0 0.0 0.0 0.0 222086852849451401216.0 0.0<br>
rank= 3  b= 0.0 0.0 0.0 0.0 0.0 0.0 -74882.4 0.0<br>
rank= 1  b= 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0<br>
the rank 1 is correct results, but others should be all zero.<br>
terminal also give some comments: "Assertion failed in file<br>
src/mpid/ch3/src/ch3u_rma_sync.c at line 5061: win_ptr->my_counter >= 0<br>
internal ABORT - process 0"<br>
<br>
another question is if I use remote memory access. all process which does<br>
not create window for share must add additional line:<br>
MPI_Win_create(MPI_BOTTOM, 0, data_type, MPI_INFO_NULL, MPI_COMM_WORLD,<br>
&win); correct?<br>
<br>
Thanks a lot!<br>
<br>
--<br>
Best Regards,<br>
Sufeng Niu<br>
ECASP lab, ECE department, Illinois Institute of Technology<br>
Tel: 312-731-7219<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20130703/91c4ec09/attachment-0001.html" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20130703/91c4ec09/attachment-0001.html</a>><br>

<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Wed, 3 Jul 2013 13:18:26 -0500<br>
From: Yi Gu <<a href="mailto:gyi@mtu.edu">gyi@mtu.edu</a>><br>
To: <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
Subject: Re: [mpich-discuss] beginner for remote mem access<br>
Message-ID:<br>
        <CAE5iO_SNJKyC9sG3XbTu4vbS=<a href="mailto:boDrOEV-Y69jUXZR6MQDanUZA@mail.gmail.com">boDrOEV-Y69jUXZR6MQDanUZA@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi, sufeng:<br>
<br>
I think you may first initialize array first, since you print out b without<br>
initialization,<br>
it could print out anything.<br>
<br>
Yi<br>
<br>
<br>
On Wed, Jul 3, 2013 at 1:12 PM, Sufeng Niu <<a href="mailto:sniu@hawk.iit.edu">sniu@hawk.iit.edu</a>> wrote:<br>
<br>
> Hi,<br>
><br>
> I am a beginner and just try to use remote memory access, and I wrote a<br>
> simple program to test it:<br>
><br>
> #include "mpi.h"<br>
> #include <stdio.h><br>
> #define SIZE 8<br>
><br>
> int main(int argc, char *argv[])<br>
> {<br>
>         int numtasks, rank, source=0, dest, tag=1, i;<br>
>         float a[64] =<br>
>         {<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>         };<br>
>         float b[SIZE];<br>
><br>
>         MPI_Status stat;<br>
><br>
>         MPI_Init(&argc,&argv);<br>
>         MPI_Comm_rank(MPI_COMM_WORLD, &rank);<br>
>         MPI_Comm_size(MPI_COMM_WORLD, &numtasks);<br>
><br>
>         MPI_Win win;<br>
><br>
>         // check processor rank<br>
>         char processor_name[MPI_MAX_PROCESSOR_NAME];<br>
>         int name_len;<br>
>         MPI_Get_processor_name(processor_name, &name_len);<br>
>         printf("-- processor %s, rank %d out of %d processors\n",<br>
> processor_name, rank, numtasks);<br>
><br>
>         MPI_Barrier(MPI_COMM_WORLD);<br>
><br>
>         if (numtasks == 4) {<br>
>                 if (rank == 0) {<br>
>                         printf("create window \n");<br>
>                         MPI_Win_create(a, 8*sizeof(float), sizeof(float),<br>
> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
><br>
>                 }<br>
>                 else {<br>
>                         MPI_Win_create(MPI_BOTTOM, 0, sizeof(float),<br>
> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
>                 }<br>
><br>
>                 MPI_Win_fence(0, win);<br>
><br>
>                 if (rank == 1){<br>
>                         MPI_Get(b, SIZE, MPI_FLOAT, 0, 8, SIZE, MPI_FLOAT,<br>
> win);<br>
><br>
>                         MPI_Win_fence(0, win);<br>
>                 }<br>
><br>
>                 printf("rank= %d  b= %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f<br>
> %3.1f %3.1f\n", rank,b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);<br>
>         }<br>
>         else<br>
>                 printf("Must specify %d processors. Terminating.\n",SIZE);<br>
><br>
>         MPI_Win_free(&win);<br>
>         MPI_Finalize();<br>
> }<br>
><br>
> However the terminal gives some odd results:<br>
> rank= 0  b= 0.0 0.0 0.0 0.0 0.0 0.0 -71847793475452928.0 0.0<br>
> rank= 2  b= 0.0 0.0 0.0 0.0 0.0 0.0 222086852849451401216.0 0.0<br>
> rank= 3  b= 0.0 0.0 0.0 0.0 0.0 0.0 -74882.4 0.0<br>
> rank= 1  b= 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0<br>
> the rank 1 is correct results, but others should be all zero.<br>
> terminal also give some comments: "Assertion failed in file<br>
> src/mpid/ch3/src/ch3u_rma_sync.c at line 5061: win_ptr->my_counter >= 0<br>
> internal ABORT - process 0"<br>
><br>
> another question is if I use remote memory access. all process which does<br>
> not create window for share must add additional line:<br>
> MPI_Win_create(MPI_BOTTOM, 0, data_type, MPI_INFO_NULL, MPI_COMM_WORLD,<br>
> &win); correct?<br>
><br>
> Thanks a lot!<br>
><br>
> --<br>
> Best Regards,<br>
> Sufeng Niu<br>
> ECASP lab, ECE department, Illinois Institute of Technology<br>
> Tel: 312-731-7219<br>
><br>
> _______________________________________________<br>
> discuss mailing list     <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
> To manage subscription options or unsubscribe:<br>
> <a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20130703/4414c5cd/attachment-0001.html" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20130703/4414c5cd/attachment-0001.html</a>><br>

<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Wed, 3 Jul 2013 13:26:29 -0500<br>
From: Yi Gu <<a href="mailto:gyi@mtu.edu">gyi@mtu.edu</a>><br>
To: <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
Subject: Re: [mpich-discuss] beginner for remote mem access<br>
Message-ID:<br>
        <CAE5iO_Rj7uTaVsEmJ1LBHe+OpTCJjLqpMmvBmjZRd=6WLWC=<a href="mailto:EQ@mail.gmail.com">EQ@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi, sufeng:<br>
<br>
I am not sure the second problem is, but I think<br>
MPI_Win_create(MPI_BOTTOM, 0, sizeof(float), MPI_INFO_NULL, MPI_COMM_WORLD,<br>
&win);<br>
should be<br>
MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
<br>
For the third question, if they need to access, yes.<br>
<br>
Yi<br>
<br>
<br>
On Wed, Jul 3, 2013 at 1:18 PM, Yi Gu <<a href="mailto:gyi@mtu.edu">gyi@mtu.edu</a>> wrote:<br>
<br>
> Hi, sufeng:<br>
><br>
> I think you may first initialize array first, since you print out b<br>
> without initialization,<br>
> it could print out anything.<br>
><br>
> Yi<br>
><br>
><br>
> On Wed, Jul 3, 2013 at 1:12 PM, Sufeng Niu <<a href="mailto:sniu@hawk.iit.edu">sniu@hawk.iit.edu</a>> wrote:<br>
><br>
>> Hi,<br>
>><br>
>> I am a beginner and just try to use remote memory access, and I wrote a<br>
>> simple program to test it:<br>
>><br>
>> #include "mpi.h"<br>
>> #include <stdio.h><br>
>> #define SIZE 8<br>
>><br>
>> int main(int argc, char *argv[])<br>
>> {<br>
>>         int numtasks, rank, source=0, dest, tag=1, i;<br>
>>         float a[64] =<br>
>>         {<br>
>>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
>> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
>> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
>> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
>> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>>         };<br>
>>         float b[SIZE];<br>
>><br>
>>         MPI_Status stat;<br>
>><br>
>>         MPI_Init(&argc,&argv);<br>
>>         MPI_Comm_rank(MPI_COMM_WORLD, &rank);<br>
>>         MPI_Comm_size(MPI_COMM_WORLD, &numtasks);<br>
>><br>
>>         MPI_Win win;<br>
>><br>
>>         // check processor rank<br>
>>         char processor_name[MPI_MAX_PROCESSOR_NAME];<br>
>>         int name_len;<br>
>>         MPI_Get_processor_name(processor_name, &name_len);<br>
>>         printf("-- processor %s, rank %d out of %d processors\n",<br>
>> processor_name, rank, numtasks);<br>
>><br>
>>         MPI_Barrier(MPI_COMM_WORLD);<br>
>><br>
>>         if (numtasks == 4) {<br>
>>                 if (rank == 0) {<br>
>>                         printf("create window \n");<br>
>>                         MPI_Win_create(a, 8*sizeof(float), sizeof(float),<br>
>> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
>><br>
>>                 }<br>
>>                 else {<br>
>>                         MPI_Win_create(MPI_BOTTOM, 0, sizeof(float),<br>
>> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
>>                 }<br>
>><br>
>>                 MPI_Win_fence(0, win);<br>
>><br>
>>                 if (rank == 1){<br>
>>                         MPI_Get(b, SIZE, MPI_FLOAT, 0, 8, SIZE,<br>
>> MPI_FLOAT, win);<br>
>><br>
>>                         MPI_Win_fence(0, win);<br>
>>                 }<br>
>><br>
>>                 printf("rank= %d  b= %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f<br>
>> %3.1f %3.1f\n", rank,b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);<br>
>>         }<br>
>>         else<br>
>>                 printf("Must specify %d processors. Terminating.\n",SIZE);<br>
>><br>
>>         MPI_Win_free(&win);<br>
>>         MPI_Finalize();<br>
>> }<br>
>><br>
>> However the terminal gives some odd results:<br>
>> rank= 0  b= 0.0 0.0 0.0 0.0 0.0 0.0 -71847793475452928.0 0.0<br>
>> rank= 2  b= 0.0 0.0 0.0 0.0 0.0 0.0 222086852849451401216.0 0.0<br>
>> rank= 3  b= 0.0 0.0 0.0 0.0 0.0 0.0 -74882.4 0.0<br>
>> rank= 1  b= 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0<br>
>> the rank 1 is correct results, but others should be all zero.<br>
>> terminal also give some comments: "Assertion failed in file<br>
>> src/mpid/ch3/src/ch3u_rma_sync.c at line 5061: win_ptr->my_counter >= 0<br>
>> internal ABORT - process 0"<br>
>><br>
>> another question is if I use remote memory access. all process which does<br>
>> not create window for share must add additional line:<br>
>> MPI_Win_create(MPI_BOTTOM, 0, data_type, MPI_INFO_NULL, MPI_COMM_WORLD,<br>
>> &win); correct?<br>
>><br>
>> Thanks a lot!<br>
>><br>
>> --<br>
>> Best Regards,<br>
>> Sufeng Niu<br>
>> ECASP lab, ECE department, Illinois Institute of Technology<br>
>> Tel: 312-731-7219<br>
>><br>
>> _______________________________________________<br>
>> discuss mailing list     <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
>> To manage subscription options or unsubscribe:<br>
>> <a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
>><br>
><br>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20130703/362a0cda/attachment-0001.html" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20130703/362a0cda/attachment-0001.html</a>><br>

<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Wed, 3 Jul 2013 13:28:31 -0500<br>
From: Jeff Hammond <<a href="mailto:jeff.science@gmail.com">jeff.science@gmail.com</a>><br>
To: <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
Subject: Re: [mpich-discuss] beginner for remote mem access<br>
Message-ID:<br>
        <CAGKz=uLwki+cCY2oL_2vFwkwCi=<a href="mailto:A1Qd9VV1qXHno20gHxqY6iw@mail.gmail.com">A1Qd9VV1qXHno20gHxqY6iw@mail.gmail.com</a>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
Look at the MPICH test suite for numerous examples of correct RMA programs.<br>
<br>
Jeff<br>
<br>
On Wed, Jul 3, 2013 at 1:12 PM, Sufeng Niu <<a href="mailto:sniu@hawk.iit.edu">sniu@hawk.iit.edu</a>> wrote:<br>
> Hi,<br>
><br>
> I am a beginner and just try to use remote memory access, and I wrote a<br>
> simple program to test it:<br>
><br>
> #include "mpi.h"<br>
> #include <stdio.h><br>
> #define SIZE 8<br>
><br>
> int main(int argc, char *argv[])<br>
> {<br>
>         int numtasks, rank, source=0, dest, tag=1, i;<br>
>         float a[64] =<br>
>         {<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>                 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,<br>
> 12.0, 13.0, 14.0, 15.0, 16.0,<br>
>         };<br>
>         float b[SIZE];<br>
><br>
>         MPI_Status stat;<br>
><br>
>         MPI_Init(&argc,&argv);<br>
>         MPI_Comm_rank(MPI_COMM_WORLD, &rank);<br>
>         MPI_Comm_size(MPI_COMM_WORLD, &numtasks);<br>
><br>
>         MPI_Win win;<br>
><br>
>         // check processor rank<br>
>         char processor_name[MPI_MAX_PROCESSOR_NAME];<br>
>         int name_len;<br>
>         MPI_Get_processor_name(processor_name, &name_len);<br>
>         printf("-- processor %s, rank %d out of %d processors\n",<br>
> processor_name, rank, numtasks);<br>
><br>
>         MPI_Barrier(MPI_COMM_WORLD);<br>
><br>
>         if (numtasks == 4) {<br>
>                 if (rank == 0) {<br>
>                         printf("create window \n");<br>
>                         MPI_Win_create(a, 8*sizeof(float), sizeof(float),<br>
> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
><br>
>                 }<br>
>                 else {<br>
>                         MPI_Win_create(MPI_BOTTOM, 0, sizeof(float),<br>
> MPI_INFO_NULL, MPI_COMM_WORLD, &win);<br>
>                 }<br>
><br>
>                 MPI_Win_fence(0, win);<br>
><br>
>                 if (rank == 1){<br>
>                         MPI_Get(b, SIZE, MPI_FLOAT, 0, 8, SIZE, MPI_FLOAT,<br>
> win);<br>
><br>
>                         MPI_Win_fence(0, win);<br>
>                 }<br>
><br>
>                 printf("rank= %d  b= %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f<br>
> %3.1f %3.1f\n", rank,b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);<br>
>         }<br>
>         else<br>
>                 printf("Must specify %d processors. Terminating.\n",SIZE);<br>
><br>
>         MPI_Win_free(&win);<br>
>         MPI_Finalize();<br>
> }<br>
><br>
> However the terminal gives some odd results:<br>
> rank= 0  b= 0.0 0.0 0.0 0.0 0.0 0.0 -71847793475452928.0 0.0<br>
> rank= 2  b= 0.0 0.0 0.0 0.0 0.0 0.0 222086852849451401216.0 0.0<br>
> rank= 3  b= 0.0 0.0 0.0 0.0 0.0 0.0 -74882.4 0.0<br>
> rank= 1  b= 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0<br>
> the rank 1 is correct results, but others should be all zero.<br>
> terminal also give some comments: "Assertion failed in file<br>
> src/mpid/ch3/src/ch3u_rma_sync.c at line 5061: win_ptr->my_counter >= 0<br>
> internal ABORT - process 0"<br>
><br>
> another question is if I use remote memory access. all process which does<br>
> not create window for share must add additional line:<br>
> MPI_Win_create(MPI_BOTTOM, 0, data_type, MPI_INFO_NULL, MPI_COMM_WORLD,<br>
> &win); correct?<br>
><br>
> Thanks a lot!<br>
><br>
> --<br>
> Best Regards,<br>
> Sufeng Niu<br>
> ECASP lab, ECE department, Illinois Institute of Technology<br>
> Tel: 312-731-7219<br>
><br>
> _______________________________________________<br>
> discuss mailing list     <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
> To manage subscription options or unsubscribe:<br>
> <a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
<br>
<br>
<br>
--<br>
Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com">jeff.science@gmail.com</a><br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
discuss mailing list<br>
<a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
<a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
<br>
End of discuss Digest, Vol 9, Issue 5<br>
*************************************<br>
</blockquote></div><br><br clear="all"><br>-- <br>Best Regards,<div>Sufeng Niu</div><div>ECASP lab, ECE department, Illinois Institute of Technology</div><div>Tel: 312-731-7219</div>
</div>