Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
9416dd0ba1ce6d96bc15e2a4f47f2ff2473bcfec
[simgrid.git] / src / smpi / smpi_comm.c
1 /* Copyright (c) 2010. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5   * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "private.h"
8
9 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_comm, smpi,
10                                 "Logging specific to SMPI (comm)");
11
12 typedef struct s_smpi_mpi_communicator {
13   MPI_Group group;
14 } s_smpi_mpi_communicator_t;
15
16 MPI_Comm smpi_comm_new(MPI_Group group)
17 {
18   MPI_Comm comm;
19
20   comm = xbt_new(s_smpi_mpi_communicator_t, 1);
21   comm->group = group;
22   smpi_group_use(comm->group);
23   return comm;
24 }
25
26 void smpi_comm_destroy(MPI_Comm comm)
27 {
28   smpi_group_destroy(comm->group);
29   xbt_free(comm);
30 }
31
32 MPI_Group smpi_comm_group(MPI_Comm comm)
33 {
34   return comm->group;
35 }
36
37 int smpi_comm_size(MPI_Comm comm)
38 {
39   return smpi_group_size(smpi_comm_group(comm));
40 }
41
42 int smpi_comm_rank(MPI_Comm comm)
43 {
44   return smpi_group_rank(smpi_comm_group(comm), smpi_process_index());
45 }