SIONlib  1.7.0
Scalable I/O library for parallel access to task-local files
sion_mpi.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2016 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 
16 #ifndef SION_SION_MPI
17 #define SION_SION_MPI
18 
19 #ifdef MPI_VERSION
20 #include "sion_datatypes_mpi.h"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25  int sion_paropen_mpi( const char *fname,
26  const char *file_mode,
27  int *numFiles,
28  MPI_Comm gComm,
29  const MPI_Comm *lComm,
30  sion_int64 *chunksize,
31  sion_int32 *fsblksize,
32  int *globalrank,
33  FILE **fileptr,
34  char **newfname);
35 
36  int sion_parclose_mpi( int sid );
37  int sion_parreinit_mpi( int sid,
38  sion_int64 chunksize );
39 
40 /* new mapped functions */
41 
42 /* open function:
43  write-mode:
44  if numFiles > 1 --> mapping_filenrs, mapping_lranks contains local mappping
45  */
46 
47  int sion_paropen_mapped_mpi( char *fname,
48  const char *file_mode,
49  int *numFiles,
50  MPI_Comm gComm,
51  int *nlocaltasks,
52  int **globalranks,
53  sion_int64 **chunksizes,
54  int **mapping_filenrs,
55  int **mapping_lranks,
56  sion_int32 *fsblksize,
57  FILE **fileptr);
58 
59  int sion_parclose_mapped_mpi( int sid );
60 
61  /* Serialization */
62  int sion_startof_transaction_mpi( int sid );
63  int sion_endof_transaction_mpi ( int sid );
64  size_t sion_coll_fwrite_mpi(const void *data, size_t size, size_t nitems, int sid);
65  size_t sion_coll_fread_mpi( void *data, size_t size, size_t nitems, int sid);
66 
67  /* for backward compatibility */
68  int sion_paropen_comms_mpi(char *fname,
69  const char *file_mode,
70  int *numFiles,
71  MPI_Comm gComm,
72  MPI_Comm lComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, FILE **fileptr, char *newfname);
73  int sion_paropen_multi_mpi(char *fname,
74  const char *file_mode,
75  int *numFiles,
76  MPI_Comm gComm,
77  MPI_Comm *lComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, FILE **fileptr, char *newfname);
78 
79  /* for file check */
81  sion_file_check_par_args_mpi *sion_file_check_par_args_init_mpi( const char *file_mode,
82  MPI_Comm gComm,
83  int numfiles,
84  MPI_Comm lComm
85  );
86  int sion_file_check_par_args_free_mpi( sion_file_check_par_args_mpi *args );
87  int sion_file_check_par_cb_mpi( char *fname, void *args );
88 
89 #ifdef __cplusplus
90 }
91 #endif
92 
93 #else
94  #define sion_paropen_mpi "sion_paropen_mpi not defined if mpi.h not included, please include mpi.h before including sion_mpi.h"
95 #endif
96 
97 
98 #endif
int sion_paropen_mpi(const char *fname, const char *file_mode, int *numFiles, MPI_Comm gComm, const MPI_Comm *lComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, FILE **fileptr, char **newfname)
Open a sion file using MPI.
Definition: sion_mpi_gen.c:83
int sion_parclose_mpi(int sid)
Close a sion file using MPI.
Definition: sion_mpi_gen.c:239