SIONlib  2.0.0-rc.2
Scalable I/O library for parallel access to task-local files
sion_generic.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_GENERIC_H
11 #define SION_SION_GENERIC_H
12 
123 #include <stdbool.h>
124 #include <stdint.h>
125 #include <stdio.h>
126 
127 #include "sion_enums.h"
128 
129 #ifdef __cplusplus
130 extern "C" {
131 #endif
132 
137 typedef int (*sion_create_lcg_cb)(
138  void **local_commgroup, void *global_commgroup, int grank, int gsize, int lrank, int lsize, int filenumber, int numfiles);
139 
141 typedef int (*sion_free_lcg_cb)(void *local_commgroup);
142 
146 typedef int (*sion_barrier_cb)(void *commgroup);
147 
151 typedef int (*sion_bcastr_cb)(void *data, void *commgroup, int datatype, int nelem, int root);
152 
159 typedef int (*sion_gatherr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root);
160 
168 typedef int (*sion_gathervr_cb)(void *indata, void *outdata, void *commdata, int datatype, int *count, int nelem, int root);
169 
176 typedef int (*sion_scatterr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root);
177 
185 typedef int (*sion_scattervr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int *count, int nelem, int root);
186 
187 typedef char *(*sion_get_multi_filename_cb)(const char *, int);
188 
189 typedef int64_t (*sion_gather_execute_cb)(const void *, int64_t, void *, int, int, int, int,
190  int64_t process_cb(const void *, int64_t *, int), void *, bool spec_iterator_cb(void *, int64_t *));
191 
192 typedef int64_t (*sion_execute_scatter_cb)(void *, int64_t, void *, int, int, int, int,
193  int64_t process_cb(void *, int64_t *, int), void *, bool spec_iterator_cb(void *, int64_t *));
194 
195 typedef int (*sion_get_capability_cb)(void *);
196 
202 int sion_generic_create_api(char *name);
203 
207 int sion_generic_free_api(int aip);
208 
211 
214 
217 
220 
223 
226 
229 
232 
233 int sion_generic_register_get_multi_filename_cb(int aid, sion_get_multi_filename_cb cb);
234 
236 int sion_generic_register_gather_and_execute_cb(int aid, sion_gather_execute_cb cb);
237 
239 int sion_generic_register_execute_and_scatter_cb(int aid, sion_execute_scatter_cb cb);
240 
241 int sion_generic_register_get_capability_cb(int aid, sion_get_capability_cb cb);
242 
254 
288 int sion_generic_paropen(int aid, const char *filename, sion_open_mode mode, void *gcommgroup, int grank, int gsize,
289  int filenumber, int numfiles, int lrank, int lsize, const sion_generic_options *options);
290 
311 int sion_generic_parclose(int sid);
312 
338 int sion_generic_paropen_mapped(int aid, char *fname, const char *file_mode, int *numFiles, void *gcommgroup, int grank,
339  int gsize, int *nlocaltasks, int **globalranks, int64_t **chunksizes, int **mapping_filenrs, int **mapping_lranks,
340  int32_t *fsblksize, FILE **fileptr);
341 
342 int sion_generic_parclose_mapped(int sid);
343 
344 int sion_generic_parreinit(int sid, int64_t chunksize);
345 
350 
355 
360 void sion_generic_options_set_chunksize(sion_generic_options *options, int64_t chunksize);
361 
366 void sion_generic_options_set_fsblksize(sion_generic_options *options, int32_t fsblksize);
367 
373 
382 
391 void sion_generic_options_set_buddylevel(sion_generic_options *options, int32_t buddylevel);
392 
401 
409 
416 
422 
428 
603 size_t sion_coll_write(const void *data, size_t size, size_t nitems, int sid);
622 
626 size_t sion_coll_fwrite(const void *data, size_t size, size_t nitems, int sid);
627 
648 size_t sion_coll_read(void *data, size_t size, size_t nitems, int sid);
649 
650 
654 size_t sion_coll_fread(void *data, size_t size, size_t nitems, int sid);
655 
657 
658 #ifdef __cplusplus
659 }
660 #endif
661 
663 
664 #endif
sion_lowlevel_api
specifies a low-level API to use for file system access
Definition: sion_enums.h:19
int(* sion_gatherr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root)
performs a gather operation on all tasks described with commgroup (local or global)
Definition: sion_generic.h:159
int sion_generic_register_scatterr_cb(int aid, sion_scatterr_cb cb)
register callback for communication
int sion_generic_paropen(int aid, const char *filename, sion_open_mode mode, void *gcommgroup, int grank, int gsize, int filenumber, int numfiles, int lrank, int lsize, const sion_generic_options *options)
Open a SIONlib file through a generic interface.
Definition: sion_generic.c:727
void sion_generic_options_set_collective_size(sion_generic_options *options, int32_t size)
Enable collective I/O.
Definition: sion_generic.c:704
void sion_generic_options_delete(sion_generic_options *options)
Delete an instance of sion_generic_options
Definition: sion_generic.c:669
size_t sion_coll_write(const void *data, size_t size, size_t nitems, int sid)
Write data to a SIONlib file using collective I/O.
size_t sion_coll_fread(void *data, size_t size, size_t nitems, int sid)
Read data from SIONlib file using collective I/O.
int sion_generic_register_scattervr_cb(int aid, sion_scattervr_cb cb)
register callback for communication
void sion_generic_options_set_collective(sion_generic_options *options)
Enable collective I/O.
Definition: sion_generic.c:699
size_t sion_coll_read(void *data, size_t size, size_t nitems, int sid)
Read data from SIONlib file using collective I/O.
void sion_generic_options_set_buddy(sion_generic_options *options)
Enable buddy checkpointing mechanism.
Definition: sion_generic.c:689
void sion_generic_options_set_collective_merge(sion_generic_options *options)
Use collective merging.
Definition: sion_generic.c:709
int(* sion_free_lcg_cb)(void *local_commgroup)
free data structure which local_commgroup points on
Definition: sion_generic.h:141
void sion_generic_options_set_endianness(sion_generic_options *options, sion_endianness endianness)
Set the endianness for the contents of a container.
Definition: sion_generic.c:722
int sion_generic_register_free_local_commgroup_cb(int aid, sion_free_lcg_cb cb)
register callback to free local communication group
int(* sion_bcastr_cb)(void *data, void *commgroup, int datatype, int nelem, int root)
performs a broadcast operation from task root to all other tasks described with commgroup (local or g...
Definition: sion_generic.h:151
int sion_generic_create_api(char *name)
Create new api.
Definition: sion_generic.c:31
void sion_generic_options_set_keyval_mode(sion_generic_options *options, sion_keyval_mode keyval_mode)
Set the key-value mode to use for a container.
Definition: sion_generic.c:684
void sion_generic_options_set_fsblksize(sion_generic_options *options, int32_t fsblksize)
Set the file system block size to assume.
Definition: sion_generic.c:679
void sion_generic_options_set_chunksize(sion_generic_options *options, int64_t chunksize)
Set the chunk size of a logical file in the container.
Definition: sion_generic.c:674
int sion_generic_register_barrier_cb(int aid, sion_barrier_cb cb)
register callback for communication
int sion_generic_free_api(int aip)
free new api
Definition: sion_generic.c:59
int sion_generic_register_gather_and_execute_cb(int aid, sion_gather_execute_cb cb)
register callback for communication
int(* sion_scatterr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root)
performs a scatter operation on all tasks described with commgroup (local or global)
Definition: sion_generic.h:176
size_t sion_coll_fwrite(const void *data, size_t size, size_t nitems, int sid)
Write data to a SIONlib file using collective I/O.
int sion_generic_register_gatherr_cb(int aid, sion_gatherr_cb cb)
register callback for communication
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
int sion_generic_parclose(int sid)
Close a SIONlib file.
Definition: sion_generic.c:362
sion_generic_options * sion_generic_options_new()
Allocates and initializes an instance of sion_generic_options
Definition: sion_generic.c:660
int sion_generic_register_gathervr_cb(int aid, sion_gathervr_cb cb)
register callback for communication
int sion_generic_register_bcastr_cb(int aid, sion_bcastr_cb cb)
register callback for communication
sion_endianness
declares the endianness of user data written to a file
Definition: sion_enums.h:63
int sion_generic_paropen_mapped(int aid, char *fname, const char *file_mode, int *numFiles, void *gcommgroup, int grank, int gsize, int *nlocaltasks, int **globalranks, int64_t **chunksizes, int **mapping_filenrs, int **mapping_lranks, int32_t *fsblksize, FILE **fileptr)
Definition: sion_generic.c:404
sion_open_mode
specifies for what type of access to open a file
Definition: sion_enums.h:27
void sion_generic_options_set_buddylevel(sion_generic_options *options, int32_t buddylevel)
Enable buddy checkpointing mechanism.
Definition: sion_generic.c:694
int(* sion_scattervr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int *count, int nelem, int root)
performs a scatter operation on all tasks described with commgroup (local or global)
Definition: sion_generic.h:185
struct sion_generic_options sion_generic_options
Holds non-essential arguments for sion_generic_paropen().
Definition: sion_generic.h:253
int sion_generic_register_create_local_commgroup_cb(int aid, sion_create_lcg_cb cb)
register callback to create local communication group
int(* sion_barrier_cb)(void *commgroup)
performs a barrier on all tasks described with commgroup (local or global)
Definition: sion_generic.h:146
void sion_generic_options_set_lowlevel_api(sion_generic_options *options, sion_lowlevel_api lowlevel_api)
Set the low-level API to use for opening a container.
Definition: sion_generic.c:717
int(* sion_gathervr_cb)(void *indata, void *outdata, void *commdata, int datatype, int *count, int nelem, int root)
performs a gather operation on all tasks described with commdata (local or global)
Definition: sion_generic.h:168
int(* sion_create_lcg_cb)(void **local_commgroup, void *global_commgroup, int grank, int gsize, int lrank, int lsize, int filenumber, int numfiles)
creates data structures for local communication group
Definition: sion_generic.h:137
int sion_generic_register_execute_and_scatter_cb(int aid, sion_execute_scatter_cb cb)
register callback for communication