10 #ifndef SION_SION_MPI_H 11 #define SION_SION_MPI_H 28 #include "sion_const.h" 29 #include "sion_enums.h" 31 #include "sion_datatypes_mpi.h" 70 int sion_paropen_mpi(
const char *fname,
const char *file_mode,
int *numFiles, MPI_Comm gComm,
const MPI_Comm *lComm,
71 int64_t *chunksize, int32_t *fsblksize,
int *globalrank, FILE **fileptr,
char **newfname);
85 int sion_parreinit_mpi(
int sid, int64_t chunksize);
94 int sion_paropen_mapped_mpi(
char *fname,
const char *file_mode,
int *numFiles, MPI_Comm gComm,
int *nlocaltasks,
95 int **globalranks, int64_t **chunksizes,
int **mapping_filenrs,
int **mapping_lranks, int32_t *fsblksize, FILE **fileptr);
97 int sion_parclose_mapped_mpi(
int sid);
100 int sion_startof_transaction_mpi(
int sid);
101 int sion_endof_transaction_mpi(
int sid);
102 size_t sion_coll_fwrite_mpi(
const void *data,
size_t size,
size_t nitems,
int sid);
103 size_t sion_coll_fread_mpi(
void *data,
size_t size,
size_t nitems,
int sid);
106 int sion_paropen_comms_mpi(
char *fname,
const char *file_mode,
int *numFiles, MPI_Comm gComm, MPI_Comm lComm, int64_t *chunksize,
107 int32_t *fsblksize,
int *globalrank, FILE **fileptr,
char *newfname);
108 int sion_paropen_multi_mpi(
char *fname,
const char *file_mode,
int *numFiles, MPI_Comm gComm, MPI_Comm *lComm, int64_t *chunksize,
109 int32_t *fsblksize,
int *globalrank, FILE **fileptr,
char *newfname);
114 const char *file_mode, MPI_Comm gComm,
int numfiles, MPI_Comm lComm);
116 int sion_file_check_par_cb_mpi(
char *fname,
void *args);
118 typedef enum { _SION_MULTIFILE_SINGLE, _SION_MULTIFILE_NUMBER, _SION_MULTIFILE_COMMUNICATOR } _sion_mpi_multifile_mode;
122 MPI_Comm communicator;
129 _sion_mpi_multifile_mode multifile_mode;
132 sion_keyval_mode keyval_mode;
137 bool collective_merge;
142 void sion_mpi_options_set_chunksize(
sion_mpi_options *options, int64_t chunksize);
143 void sion_mpi_options_set_fsblksize(
sion_mpi_options *options, int32_t fsblksize);
145 void sion_mpi_options_set_multifile_number(
sion_mpi_options *options,
int multifile_number);
146 void sion_mpi_options_set_multifile_communicator(
sion_mpi_options *options, MPI_Comm multifile_communicator);
148 void sion_mpi_options_set_keyval_mode(
sion_mpi_options *options, sion_keyval_mode keyval_mode);
151 void sion_mpi_options_set_buddylevel(
sion_mpi_options *options, int32_t buddylevel);
154 void sion_mpi_options_set_collective_size(
sion_mpi_options *options, int32_t size);
157 int sion_paropen_mpi_with_options(
158 const char *filename, sion_open_mode mode, MPI_Comm communicator,
const sion_mpi_options *options);
int sion_parclose_mpi(int sid)
Close a sion file using MPI.
int sion_paropen_mpi(const char *fname, const char *file_mode, int *numFiles, MPI_Comm gComm, const MPI_Comm *lComm, int64_t *chunksize, int32_t *fsblksize, int *globalrank, FILE **fileptr, char **newfname)
Open a sion file using MPI.