Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MPI_File_get_size, MPI_File_get_amode, MPI_File_get_group, MPI_File_sync
authordegomme <adegomme@users.noreply.github.com>
Tue, 23 Apr 2019 12:48:50 +0000 (14:48 +0200)
committerdegomme <adegomme@users.noreply.github.com>
Tue, 23 Apr 2019 12:48:50 +0000 (14:48 +0200)
src/smpi/bindings/smpi_mpi.cpp
src/smpi/bindings/smpi_pmpi_file.cpp
src/smpi/include/smpi_file.hpp
src/smpi/mpi/smpi_file.cpp

index 9f004cd..7144c44 100644 (file)
@@ -326,6 +326,10 @@ WRAPPED_PMPI_CALL(int, MPI_File_read_ordered,(MPI_File fh, void *buf, int count,
 WRAPPED_PMPI_CALL(int, MPI_File_write_ordered,(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status), (fh, buf, count, datatype, status))
 WRAPPED_PMPI_CALL(int, MPI_File_seek_shared,(MPI_File fh, MPI_Offset offset, int whence), (fh, offset, whence))
 WRAPPED_PMPI_CALL(int, MPI_File_get_position_shared,(MPI_File fh, MPI_Offset *offset), (fh, offset))
+WRAPPED_PMPI_CALL(int, MPI_File_get_size,(MPI_File fh, MPI_Offset *size), (fh, size))
+WRAPPED_PMPI_CALL(int, MPI_File_get_group,(MPI_File fh, MPI_Group *group), (fh, group))
+WRAPPED_PMPI_CALL(int, MPI_File_get_amode,(MPI_File fh, int *amode), (fh, amode))
+WRAPPED_PMPI_CALL(int, MPI_File_sync,(MPI_File fh), (fh))
 
 /*
   Unimplemented Calls - both PMPI and MPI calls are generated.
@@ -370,9 +374,6 @@ UNIMPLEMENTED_WRAPPED_PMPI_CALL_NOFAIL(int, MPI_File_set_errhandler,( MPI_File f
 UNIMPLEMENTED_WRAPPED_PMPI_CALL_NOFAIL(int, MPI_File_get_errhandler,( MPI_File file, MPI_Errhandler *errhandler), (file, errhandler))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_set_size,(MPI_File fh, MPI_Offset size), (fh, size))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_preallocate,(MPI_File fh, MPI_Offset size), (fh, size))
-UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_size,(MPI_File fh, MPI_Offset *size), (fh, size))
-UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_group,(MPI_File fh, MPI_Group *group), (fh, group))
-UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_amode,(MPI_File fh, int *amode), (fh, amode))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_set_view,(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info), (fh, disp, etype, filetype, datarep, info))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_view,(MPI_File fh, MPI_Offset *disp, MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep), (fh, disp, etype, filetype, datarep))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_iread_at,(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Request *request), (fh, offset, buf, count, datatype, request))
@@ -401,7 +402,6 @@ UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_write_ordered_end,(MPI_File fh, vo
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_type_extent,(MPI_File fh, MPI_Datatype datatype, MPI_Aint *extent), (fh, datatype, extent))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_set_atomicity,(MPI_File fh, int flag), (fh, flag))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_get_atomicity,(MPI_File fh, int *flag), (fh, flag))
-UNIMPLEMENTED_WRAPPED_PMPI_CALL(int, MPI_File_sync,(MPI_File fh), (fh))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int,MPI_Get_elements,(MPI_Status* status, MPI_Datatype datatype, int* elements) ,(status, datatype, elements))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int,MPI_Graph_create,(MPI_Comm comm_old, int nnodes, int* index, int* edges, int reorder, MPI_Comm* comm_graph) ,(comm_old, nnodes, index, edges, reorder, comm_graph))
 UNIMPLEMENTED_WRAPPED_PMPI_CALL(int,MPI_Graphdims_get,(MPI_Comm comm, int* nnodes, int* nedges) ,(comm, nnodes, nedges))
index 2336b8d..e03a4a6 100644 (file)
@@ -18,8 +18,7 @@ int PMPI_File_open(MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_
   smpi_bench_end();
   *fh =  new simgrid::smpi::File(comm, filename, amode, info);
   smpi_bench_begin();
-  if (((*fh)->size() == 0 && not (amode & MPI_MODE_CREATE)) ||
-     ((*fh)->size() != 0 && (amode & MPI_MODE_EXCL))){
+  if ((*fh)->size() != 0 && (amode & MPI_MODE_EXCL)){
     delete fh;
     return MPI_ERR_AMODE;
   }
@@ -330,3 +329,31 @@ int PMPI_File_set_info(MPI_File  fh, MPI_Info info)
   fh->set_info(info);
   return MPI_SUCCESS;
 }
+
+int PMPI_File_get_size(MPI_File  fh, MPI_Offset* size)
+{
+  CHECK_FILE(fh)
+  *size = fh->size();
+  return MPI_SUCCESS;
+}
+
+int PMPI_File_get_amode(MPI_File  fh, int* amode)
+{
+  CHECK_FILE(fh)
+  *amode = fh->flags();
+  return MPI_SUCCESS;
+}
+
+int PMPI_File_get_group(MPI_File  fh, MPI_Group* group)
+{
+  CHECK_FILE(fh)
+  *group = fh->comm()->group();
+  return MPI_SUCCESS;
+}
+
+int PMPI_File_sync(MPI_File  fh)
+{
+  CHECK_FILE(fh)
+  fh->sync();
+  return MPI_SUCCESS;
+}
index bd49500..cf97e82 100644 (file)
@@ -35,6 +35,7 @@ class File{
   int get_position(MPI_Offset* offset);
   int get_position_shared(MPI_Offset* offset);
   int flags();
+  MPI_Comm comm();
   int sync();
   int seek(MPI_Offset offset, int whence);
   int seek_shared(MPI_Offset offset, int whence);
index 56b0edc..8d841ef 100644 (file)
@@ -225,18 +225,21 @@ namespace smpi{
     return simgrid::smpi::Colls::barrier(comm_);
   }
 
-MPI_Info File::info(){
-  if(info_== MPI_INFO_NULL)
-    info_ = new Info();
-  info_->ref();
-  return info_;
-}
+  MPI_Info File::info(){
+    if(info_== MPI_INFO_NULL)
+      info_ = new Info();
+    info_->ref();
+    return info_;
+  }
 
-void File::set_info(MPI_Info info){
-  if(info_!= MPI_INFO_NULL)
-    info->ref();
-  info_=info;
-}
+  void File::set_info(MPI_Info info){
+    if(info_!= MPI_INFO_NULL)
+      info->ref();
+    info_=info;
+  }
 
+  MPI_Comm File::comm(){
+    return comm_;
+  }
 }
 }