Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
convert between Fortran and C MPI_*_NULL handles
authorAugustin Degomme <adegomme@users.noreply.github.com>
Wed, 24 Jul 2019 21:38:03 +0000 (23:38 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Wed, 24 Jul 2019 23:13:43 +0000 (01:13 +0200)
src/smpi/bindings/smpi_pmpi_comm.cpp
src/smpi/bindings/smpi_pmpi_group.cpp
src/smpi/bindings/smpi_pmpi_info.cpp
src/smpi/bindings/smpi_pmpi_op.cpp
src/smpi/bindings/smpi_pmpi_request.cpp
src/smpi/bindings/smpi_pmpi_type.cpp
src/smpi/bindings/smpi_pmpi_win.cpp

index 7291ed2..73e4379 100644 (file)
@@ -217,10 +217,14 @@ int PMPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int, MPI_Comm* comm_o
 }
 
 MPI_Comm PMPI_Comm_f2c(MPI_Fint comm){
+  if(comm==-1)
+    return MPI_COMM_NULL;
   return static_cast<MPI_Comm>(simgrid::smpi::Comm::f2c(comm));
 }
 
 MPI_Fint PMPI_Comm_c2f(MPI_Comm comm){
+  if(comm==MPI_COMM_NULL)
+    return -1;
   return comm->c2f();
 }
 
index 4155bf6..83b08ed 100644 (file)
@@ -182,9 +182,13 @@ int PMPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group * n
 }
 
 MPI_Group PMPI_Group_f2c(MPI_Fint group){
+  if(group==-1)
+    return MPI_GROUP_NULL;
   return simgrid::smpi::Group::f2c(group);
 }
 
 MPI_Fint PMPI_Group_c2f(MPI_Group group){
+  if(group==MPI_GROUP_NULL)
+    return -1;
   return group->c2f();
 }
index ca08ebf..82634cf 100644 (file)
@@ -74,9 +74,13 @@ int PMPI_Info_get_valuelen( MPI_Info info, const char *key, int *valuelen, int *
 }
 
 MPI_Info PMPI_Info_f2c(MPI_Fint info){
+  if(info==-1)
+    return MPI_INFO_NULL;
   return static_cast<MPI_Info>(simgrid::smpi::Info::f2c(info));
 }
 
 MPI_Fint PMPI_Info_c2f(MPI_Info info){
+  if(info==MPI_INFO_NULL)
+    return -1;
   return info->c2f();
 }
index 505914e..b52c518 100644 (file)
@@ -45,9 +45,13 @@ int PMPI_Op_commutative(MPI_Op op, int* commute){
 }
 
 MPI_Op PMPI_Op_f2c(MPI_Fint op){
+  if(op==-1)
+    return MPI_OP_NULL;
   return static_cast<MPI_Op>(simgrid::smpi::Op::f2c(op));
 }
 
 MPI_Fint PMPI_Op_c2f(MPI_Op op){
+  if(op==MPI_OP_NULL)
+    return -1;
   return op->c2f();
 }
index 5d36e12..5090682 100644 (file)
@@ -843,9 +843,13 @@ int PMPI_Request_get_status( MPI_Request request, int *flag, MPI_Status *status)
 }
 
 MPI_Request PMPI_Request_f2c(MPI_Fint request){
+  if(request==-1)
+    return MPI_REQUEST_NULL;
   return static_cast<MPI_Request>(simgrid::smpi::Request::f2c(request));
 }
 
 MPI_Fint PMPI_Request_c2f(MPI_Request request) {
+  if(request==MPI_REQUEST_NULL)
+    return -1;
   return request->c2f();
 }
index 868a2a9..5e35a9d 100644 (file)
@@ -301,10 +301,14 @@ int PMPI_Type_get_name(MPI_Datatype  datatype, char * name, int* len)
 }
 
 MPI_Datatype PMPI_Type_f2c(MPI_Fint datatype){
+  if(datatype==-1)
+    return MPI_DATATYPE_NULL;
   return static_cast<MPI_Datatype>(simgrid::smpi::F2C::f2c(datatype));
 }
 
 MPI_Fint PMPI_Type_c2f(MPI_Datatype datatype){
+  if(datatype==MPI_DATATYPE_NULL)
+    return -1;
   return datatype->c2f();
 }
 
index 6bbeef2..c833206 100644 (file)
@@ -839,9 +839,13 @@ int PMPI_Win_free_keyval(int* keyval) {
 }
 
 MPI_Win PMPI_Win_f2c(MPI_Fint win){
+  if(win==-1)
+    return MPI_WIN_NULL;
   return static_cast<MPI_Win>(simgrid::smpi::Win::f2c(win));
 }
 
 MPI_Fint PMPI_Win_c2f(MPI_Win win){
+  if(win==MPI_WIN_NULL)
+    return -1;
   return win->c2f();
 }