SIONlib  2.0.0-rc.2
Scalable I/O library for parallel access to task-local files
sion_mpi.h
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2019 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 
10 #ifndef SION_SION_MPI_H
11 #define SION_SION_MPI_H
12 
13 #ifdef SION_MPI
14 
18 
19 #include <mpi.h>
20 #include <stdbool.h>
21 #include <stdint.h>
22 #include <stdio.h>
23 
24 #include "sion_const.h"
25 #include "sion_enums.h"
26 
27 #include "sion_datatypes_mpi.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
45 
58 int sion_paropen_mpi(const char *filename, sion_open_mode mode, MPI_Comm communicator, const sion_mpi_options *options);
59 
67 int sion_parclose_mpi(int sid);
68 
69 int sion_parreinit_mpi(int sid, int64_t chunksize);
70 
71 /* new mapped functions */
72 
73 /* open function:
74  write-mode:
75  if numFiles > 1 --> mapping_filenrs, mapping_lranks contains local mappping
76  */
77 
78 int sion_paropen_mapped_mpi(char *fname, const char *file_mode, int *numFiles, MPI_Comm gComm, int *nlocaltasks,
79  int **globalranks, int64_t **chunksizes, int **mapping_filenrs, int **mapping_lranks, int32_t *fsblksize, FILE **fileptr);
80 
81 int sion_parclose_mapped_mpi(int sid);
82 
83 /* for file check */
85 sion_file_check_par_args_mpi *sion_file_check_par_args_init_mpi(
86  sion_open_mode mode, MPI_Comm communicator, const sion_mpi_options *options);
87 void sion_file_check_par_args_free_mpi(sion_file_check_par_args_mpi *args);
88 int sion_file_check_par_cb_mpi(char *fname, void *args);
89 
94 
99 
104 void sion_mpi_options_set_chunksize(sion_mpi_options *options, int64_t chunksize);
105 
110 void sion_mpi_options_set_fsblksize(sion_mpi_options *options, int32_t fsblksize);
111 
116 void sion_mpi_options_set_multifile_number(sion_mpi_options *options, int multifile_number);
117 
126 void sion_mpi_options_set_multifile_communicator(sion_mpi_options *options, MPI_Comm multifile_communicator);
127 
133 
142 
151 void sion_mpi_options_set_buddylevel(sion_mpi_options *options, int32_t buddylevel);
152 
161 
168 void sion_mpi_options_set_collective_size(sion_mpi_options *options, int32_t size);
169 
176 
182 
188 
189 #ifdef __cplusplus
190 }
191 #endif
192 
194 
195 #endif
196 
197 #endif
sion_lowlevel_api
specifies a low-level API to use for file system access
Definition: sion_enums.h:19
sion_mpi_options * sion_mpi_options_new()
Allocates and initializes an instance of sion_mpi_options
Definition: sion_mpi_gen.c:161
void sion_mpi_options_set_collective(sion_mpi_options *options)
Enable collective I/O.
Definition: sion_mpi_gen.c:212
void sion_mpi_options_set_buddy(sion_mpi_options *options)
Enable buddy checkpointing mechanism.
Definition: sion_mpi_gen.c:202
void sion_mpi_options_set_collective_size(sion_mpi_options *options, int32_t size)
Enable collective I/O.
Definition: sion_mpi_gen.c:217
void sion_mpi_options_delete(sion_mpi_options *options)
Delete an instance of sion_mpi_options
Definition: sion_mpi_gen.c:170
void sion_mpi_options_set_chunksize(sion_mpi_options *options, int64_t chunksize)
Set the chunk size of a logical file in the container.
Definition: sion_mpi_gen.c:175
int sion_paropen_mpi(const char *filename, sion_open_mode mode, MPI_Comm communicator, const sion_mpi_options *options)
Open a SIONlib file from multiple MPI processes.
Definition: sion_mpi_gen.c:237
void sion_mpi_options_set_fsblksize(sion_mpi_options *options, int32_t fsblksize)
Set the file system block size to assume.
Definition: sion_mpi_gen.c:180
int sion_parclose_mpi(int sid)
Close a SIONlib file using MPI.
Definition: sion_mpi_gen.c:34
void sion_mpi_options_set_multifile_communicator(sion_mpi_options *options, MPI_Comm multifile_communicator)
Create multiple physical files based on disjunct communicators.
Definition: sion_mpi_gen.c:191
void sion_mpi_options_set_keyval_mode(sion_mpi_options *options, sion_keyval_mode keyval_mode)
Set the key-value mode to use for a container.
Definition: sion_mpi_gen.c:197
void sion_mpi_options_set_endianness(sion_mpi_options *options, sion_endianness endianness)
Set the endianness for the contents of a container.
Definition: sion_mpi_gen.c:232
sion_keyval_mode
specifies whether to use SIONlib's key-value mechanism for accessing file content and if so in what m...
Definition: sion_enums.h:35
void sion_mpi_options_set_multifile_number(sion_mpi_options *options, int multifile_number)
Set the number of physical files to use.
Definition: sion_mpi_gen.c:185
sion_endianness
declares the endianness of user data written to a file
Definition: sion_enums.h:63
sion_open_mode
specifies for what type of access to open a file
Definition: sion_enums.h:27
void sion_mpi_options_set_collective_merge(sion_mpi_options *options)
Use collective merging.
Definition: sion_mpi_gen.c:222
void sion_mpi_options_set_buddylevel(sion_mpi_options *options, int32_t buddylevel)
Enable buddy checkpointing mechanism.
Definition: sion_mpi_gen.c:207
struct sion_mpi_options sion_mpi_options
Holds non-essential arguments for sion_paropen_mpi().
Definition: sion_mpi.h:44
void sion_mpi_options_set_lowlevel_api(sion_mpi_options *options, sion_lowlevel_api lowlevel_api)
Set the low-level API to use for opening a container.
Definition: sion_mpi_gen.c:227