<div dir="ltr"><div>Hello,<br><br></div>in my mpi program, I create 3 groups and communicators:<br><br> <span style="color:rgb(166,77,121)">       forward_rank = (int *)malloc((numprocs-1) * sizeof(int));<br>        backward_rank = (int *)malloc((numprocs-1) * sizeof(int));<br>
        comp_rank = (int *)malloc((numprocs-2) * sizeof(int));<br><br>        for (i=0; i<numprocs-1; i++){<br>                backward_rank[i] = i+1;<br>                forward_rank[i] = i;<br>        }<br>        for (i=0; i<numprocs-2; i++){<br>
                comp_rank[i] = i+1;<br>        }<br><br>        MPI_Group global_group, fgroup, bgroup, cgroup;     // forward group, backward group, computation group<br>        MPI_Comm MPI_FOR_WORLD, MPI_BACK_WORLD, MPI_COMP_WORLD;        // forward, backward, computation communicator<br>
        MPI_Comm_group(MPI_COMM_WORLD, &global_group);<br><br>        MPI_Group_incl(global_group, numprocs-1, forward_rank, &bgroup);<br>        MPI_Comm_create(MPI_COMM_WORLD, bgroup, &MPI_BACK_WORLD);<br><br>
        MPI_Group_incl(global_group, numprocs-1, backward_rank, &fgroup);<br>        MPI_Comm_create(MPI_COMM_WORLD, fgroup, &MPI_FOR_WORLD);<br><br>        MPI_Group_incl(global_group, numprocs-2, comp_rank, &cgroup);<br>
        MPI_Comm_create(MPI_COMM_WORLD, cgroup, &MPI_COMP_WORLD);</span><br clear="all"><div><div><div><div><br></div><div>And I used them for my RMA operation<br><br></div><div>So in my main function transfer new communicator to another c file as:<br>
</div><div><span style="color:rgb(166,77,121)">udp_sub(win, &MPI_FOR_WORLD);<br></span></div><div><span style="color:rgb(166,77,121)"><br></span></div><div><span style="color:rgb(166,77,121)">image_sub(rank, win, strip_buff, &MPI_FOR_WORLD, &MPI_BACK_WORLD, &MPI_COMP_WORLD);</span><br>
</div><div><br></div><div>in udp_sub and image_sub function:<br><br></div><div>I called:<span style="color:rgb(166,77,121)"><br>MPI_Win_create(image_buff, 2*image_info->image_size*sizeof(uint16), sizeof(uint16), MPI_INFO_NULL, *MPI_FOR_WORLD, win);</span><br>
<br></div><div>but I got the error when I execute them:<br><span style="color:rgb(255,0,0)">MPI_Win_create(189): MPI_Win_create(base=0x7fe50c06c010, size=9216000, disp_unit=2, MPI_INFO_NULL, MPI_COMM_NULL, win=0x1a5e940) failed<br>
MPI_Win_create(116): Null communicator</span><br></div><div><br></div><div>I already transfer the communicator address to it, but I don't understand why communicator is null. or I did in a wrong way? Any suggestions are appreciate. Thank you!<br>
</div><div>-- <br>Best Regards,<div>Sufeng Niu</div><div>ECASP lab, ECE department, Illinois Institute of Technology</div><div>Tel: 312-731-7219</div>
</div></div></div></div></div>