2 #include "gnunet_util_lib.h"
6 * Generic logging shorthand
8 #define LOG(kind,...) \
9 GNUNET_log_from (kind, "gnunet-mpi-test", __VA_ARGS__)
11 int main (int argc, char *argv[])
23 if (MPI_SUCCESS != MPI_Init (&argc, &argv))
25 if (MPI_SUCCESS != MPI_Comm_size (MPI_COMM_WORLD, &ntasks))
27 if (MPI_SUCCESS != MPI_Comm_rank (MPI_COMM_WORLD, &rank))
30 (void) GNUNET_asprintf (&filename, "%d-%d.mpiout", (int) pid, rank);
31 msg_size = GNUNET_asprintf (&msg, "My rank is: %d\n", rank);
33 if (msg_size == GNUNET_DISK_fn_write (filename,
35 GNUNET_DISK_PERM_USER_READ
36 | GNUNET_DISK_PERM_GROUP_READ
37 | GNUNET_DISK_PERM_USER_WRITE
38 | GNUNET_DISK_PERM_GROUP_WRITE))
40 GNUNET_free (filename);
50 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "fork");
57 (void) GNUNET_asprintf (&filename, "%d-%d.mpiout", (int) pid, rank);
58 msg_size = GNUNET_asprintf (&msg, "Child of %d\n", (int) ppid);
60 if (msg_size == GNUNET_DISK_fn_write (filename,
62 GNUNET_DISK_PERM_USER_READ
63 | GNUNET_DISK_PERM_GROUP_READ
64 | GNUNET_DISK_PERM_USER_WRITE
65 | GNUNET_DISK_PERM_GROUP_WRITE))
67 GNUNET_free (filename);
69 return (GNUNET_OK == ret) ? 0 : 1;
75 childpid = waitpid (pid, &status, 0);
81 if (!WIFEXITED (status))
86 if (0 != WEXITSTATUS (status))
94 (void) MPI_Finalize ();
95 return (GNUNET_OK == ret) ? 0 : 1;