Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
SMPI over SIMIX_network in a two days rush.
[simgrid.git] / src / smpi / smpi_comm.c
diff --git a/src/smpi/smpi_comm.c b/src/smpi/smpi_comm.c
new file mode 100644 (file)
index 0000000..59aa85d
--- /dev/null
@@ -0,0 +1,34 @@
+#include "private.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_comm, smpi,
+                                "Logging specific to SMPI (comm)");
+
+typedef struct s_smpi_mpi_communicator {
+  MPI_Group group;
+} s_smpi_mpi_communicator_t;
+
+MPI_Comm smpi_comm_new(MPI_Group group) {
+  MPI_Comm comm;
+
+  comm = xbt_new(s_smpi_mpi_communicator_t, 1);
+  comm->group = group;
+  smpi_group_use(comm->group);
+  return comm;
+}
+
+void smpi_comm_destroy(MPI_Comm comm) {
+  smpi_group_destroy(comm->group);
+  xbt_free(comm);
+}
+
+MPI_Group smpi_comm_group(MPI_Comm comm) {
+  return comm->group;
+}
+
+int smpi_comm_size(MPI_Comm comm) {
+  return smpi_group_size(smpi_comm_group(comm));
+}
+
+int smpi_comm_rank(MPI_Comm comm) {
+  return smpi_group_rank(smpi_comm_group(comm), smpi_process_index());
+}