From: degomme Date: Tue, 23 Apr 2019 12:48:50 +0000 (+0200) Subject: MPI_File_get_size, MPI_File_get_amode, MPI_File_get_group, MPI_File_sync X-Git-Tag: v3.22.2~64 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e3fd4ced0204c7d9334a68482e1b9730c8293a35?ds=sidebyside MPI_File_get_size, MPI_File_get_amode, MPI_File_get_group, MPI_File_sync --- diff --git a/src/smpi/bindings/smpi_mpi.cpp b/src/smpi/bindings/smpi_mpi.cpp index 9f004cd8be..7144c444e2 100644 --- a/src/smpi/bindings/smpi_mpi.cpp +++ b/src/smpi/bindings/smpi_mpi.cpp @@ -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)) diff --git a/src/smpi/bindings/smpi_pmpi_file.cpp b/src/smpi/bindings/smpi_pmpi_file.cpp index 2336b8dd41..e03a4a650a 100644 --- a/src/smpi/bindings/smpi_pmpi_file.cpp +++ b/src/smpi/bindings/smpi_pmpi_file.cpp @@ -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; +} diff --git a/src/smpi/include/smpi_file.hpp b/src/smpi/include/smpi_file.hpp index bd495001b0..cf97e82abe 100644 --- a/src/smpi/include/smpi_file.hpp +++ b/src/smpi/include/smpi_file.hpp @@ -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); diff --git a/src/smpi/mpi/smpi_file.cpp b/src/smpi/mpi/smpi_file.cpp index 56b0edc02b..8d841ef4f7 100644 --- a/src/smpi/mpi/smpi_file.cpp +++ b/src/smpi/mpi/smpi_file.cpp @@ -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_; + } } }