hwloc: null check for cpuset
[mpich-dev.git] / examples / parent.c
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  *  (C) 2001 by Argonne National Laboratory.
4  *      See COPYRIGHT in top-level directory.
5  */
6
7 #include <stdio.h>
8 #include "mpi.h"
9
10 int main( int argc, char *argv[] )
11 {
12     char str[10];
13     int err=0, errcodes[256], rank, nprocs;
14     MPI_Comm intercomm;
15
16     MPI_Init(&argc, &argv);
17
18     MPI_Comm_size(MPI_COMM_WORLD,&nprocs); 
19
20     if (nprocs != 4) {
21         printf("Run this program with 4 processes\n");
22         MPI_Abort(MPI_COMM_WORLD,1);
23     }
24
25     err = MPI_Comm_spawn("child", MPI_ARGV_NULL, 4,
26                          MPI_INFO_NULL, 1, MPI_COMM_WORLD,
27                          &intercomm, errcodes);  
28     if (err) printf("Error in MPI_Comm_spawn\n");
29
30     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
31
32     if (rank == 3) {
33         err = MPI_Recv(str, 3, MPI_CHAR, 3, 0, intercomm, MPI_STATUS_IGNORE);
34         printf("Parent received from child: %s\n", str);
35         fflush(stdout);
36         
37         err = MPI_Send("bye", 4, MPI_CHAR, 3, 0, intercomm); 
38     }
39
40     MPI_Finalize();
41
42     return 0;
43 }
44