[mpich-discuss] Howto use MPI_Comm_merge together with MPI_Comm_spawn

Umit umitcanyilmaz at gmail.com
Thu Feb 16 17:54:00 CST 2012


Thank a lot. It worked.

On 16 February 2012 16:38, Nick Radcliffe <nradclif at cray.com> wrote:

>  The parent and child's call to MPI_Intercomm_merge have to be distinct.
> The child should use 'parentcomm' as its intercommunicator argument, and
> the child should use 'intercomm' as its intercommunicator argument. Also,
> the flag used should be different, e.g., the parent could use 0 and the
> child 1, or vice versa. This flag determines how the ranks of each half of
> the intercommunicator map into ranks for the intracommunicator.
>
>
>  ------------------------------
> *From:* mpich-discuss-bounces at mcs.anl.gov [
> mpich-discuss-bounces at mcs.anl.gov] on behalf of Umit [
> umitcanyilmaz at gmail.com]
> *Sent:* Thursday, February 16, 2012 9:19 AM
> *To:* mpich-discuss at mcs.anl.gov
> *Subject:* Re: [mpich-discuss] Howto use MPI_Comm_merge together with
> MPI_Comm_spawn
>
>  *Hello Nick, *
>
> *Thank you for your e-mail. *
>
> *If  I call MPI_Intercomm_merge with all processes like this:
> *
> #define NUM_SPAWNS 4
> double timer;
> int i;
> char str[100];
>
> int main( int argc, char *argv[] )
> {
>     MPI_Comm parentcomm, intercomm;
>     MPI_Comm comm;
>     MPI_Init( &argc, &argv );
>     MPI_Comm_get_parent( &parentcomm );
>     int np = NUM_SPAWNS;
>
>     if (parentcomm == MPI_COMM_NULL)
>     {
>         int errcodes[np];
>         MPI_Comm_spawn( "/home/umit/Desktop/merge/./a.out", MPI_ARGV_NULL,
> np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes );
>     }
>     else
>     {
>         printf("I'm the spawned.\n");
>     }
>     *MPI_Intercomm_merge( intercomm, 1, &comm );*
>     MPI_Finalize();
>     return 0;
> }
>
> *
> I am getting this time follgende error:*
>
> umit at ubuntu:~/Desktop/merge$ mpirun -np 1 ./a.out
> I'm the spawned.
> *Fatal error in MPI_Intercomm_merge: Invalid communicator, error stack:*
> MPI_Intercomm_merge(288): MPI_Intercomm_merge(comm=0x331ff4, high=1,
> newintracomm=0xbf9d0720) failed
> MPI_Intercomm_merge(93).: Invalid communicator
> I'm the spawned.
> Fatal error in MPI_Intercomm_merge: Invalid communicator, error stack:
> MPI_Intercomm_merge(288): MPI_Intercomm_merge(comm=0xc71ff4, high=1,
> newintracomm=0xbffec690) failed
> MPI_Intercomm_merge(93).: Invalid communicator
> rank 3 in job 56  ubuntu_38267   caused collective abort of all ranks
>   exit status of rank 3: killed by signal 9
> rank 0 in job 56  ubuntu_38267   caused collective abort of all ranks
>   exit status of rank 0: killed by signal 9
>
> Best Regards,
>
>
>
>
> On 16 February 2012 15:56, Nick Radcliffe <nradclif at cray.com> wrote:
>
>>  One problem is that the spawned child is not calling
>> MPI_INTERCOMM_MERGE. The child needs to call the merge function in the
>> 'else' part of your 'if (parentcomm == MPI_COMM_NULL)'.
>>
>> -Nick
>>  ------------------------------
>> *From:* mpich-discuss-bounces at mcs.anl.gov [
>> mpich-discuss-bounces at mcs.anl.gov] on behalf of Umit [
>> umitcanyilmaz at gmail.com]
>> *Sent:* Thursday, February 16, 2012 7:06 AM
>> *To:* mpich-discuss at mcs.anl.gov
>> *Subject:* [mpich-discuss] Howto use MPI_Comm_merge together with
>> MPI_Comm_spawn
>>
>>   Hello All,
>>
>> Can anyone tell me what is wrong with this simple code:
>>
>> #define NUM_SPAWNS 4
>> double timer;
>> int i;
>> char str[100];
>> int main( int argc, char *argv[] )
>> {
>>     MPI_Comm parentcomm, intercomm;
>>     MPI_Comm comm, scomm;
>>     MPI_Init( &argc, &argv );
>>     MPI_Comm_get_parent( &parentcomm );
>>     int np = NUM_SPAWNS;
>>     int size;
>>     MPI_Comm_size( MPI_COMM_WORLD , &size );
>>     if (parentcomm == MPI_COMM_NULL)
>>     {
>>        scomm = MPI_COMM_WORLD;
>>        int errcodes[np];
>>        MPI_Comm_spawn( "/home/test/Desktop/merge/./a.out", MPI_ARGV_NULL,
>> np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes );
>>        MPI_Intercomm_merge( intercomm, 1, &comm );
>>     }
>>     else
>>     {
>>         printf("I'm the spawned.\n");
>>     }
>>     MPI_Finalize();
>>     return 0;
>> }
>>
>> I called MPI_Intercomm_merge outside of if statement but I got the same
>> error.
>> Spawn is successfull. I have especially tested it. If I try to merge, i
>> got the following error:
>>
>> test at ubuntu:~/Desktop/merge$ mpirun -np 1 ./a.out
>> I'm the spawned.
>> I'm the spawned.
>> I'm the spawned.
>> I'm the spawned.
>> Fatal error in MPI_Intercomm_merge: Other MPI error, error stack:
>> MPI_Intercomm_merge(288)..........: MPI_Intercomm_merge(comm=0x84000000,
>> high=1, newintracomm=0xbf97ff40) failed
>> MPI_Intercomm_merge(263)..........:
>> MPIR_Get_contextid(639)...........:
>> MPI_Allreduce(773)................: MPI_Allreduce(sbuf=MPI_IN_PLACE,
>> rbuf=0xbf97fd18, count=64, MPI_INT, MPI_BAND, comm=0x84000002) failed
>> MPIR_Allreduce(289)...............:
>> MPIC_Sendrecv(161)................:
>> MPIC_Wait(513)....................:
>> MPIDI_CH3I_Progress(150)..........:
>> MPID_nem_mpich2_blocking_recv(948):
>> MPID_nem_tcp_connpoll(1720).......:
>> state_commrdy_handler(1556).......:
>> MPID_nem_tcp_recv_handler(1446)...: socket closed
>> rank 0 in job 21  ubuntu_38267   caused collective abort of all ranks
>>   exit status of rank 0: killed by signal 9
>>
>>
>> Thanks In Advance,
>>
>>
>>
>> _______________________________________________
>> mpich-discuss mailing list     mpich-discuss at mcs.anl.gov
>> To manage subscription options or unsubscribe:
>> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>>
>>
>
> _______________________________________________
> mpich-discuss mailing list     mpich-discuss at mcs.anl.gov
> To manage subscription options or unsubscribe:
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20120217/b2489ceb/attachment-0001.htm>


More information about the mpich-discuss mailing list