SIONlib  2.0.0-rc.1
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-2018 **
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 #ifdef __cplusplus
128 extern "C" {
129 #endif
130 
135 typedef int (*sion_create_lcg_cb)(
136  void **local_commgroup, void *global_commgroup, int grank, int gsize, int lrank, int lsize, int filenumber, int numfiles);
137 
139 typedef int (*sion_free_lcg_cb)(void *local_commgroup);
140 
144 typedef int (*sion_barrier_cb)(void *commgroup);
145 
149 typedef int (*sion_bcastr_cb)(void *data, void *commgroup, int datatype, int nelem, int root);
150 
157 typedef int (*sion_gatherr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root);
158 
166 typedef int (*sion_gathervr_cb)(void *indata, void *outdata, void *commdata, int datatype, int *count, int nelem, int root);
167 
174 typedef int (*sion_scatterr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int nelem, int root);
175 
183 typedef int (*sion_scattervr_cb)(void *indata, void *outdata, void *commgroup, int datatype, int *count, int nelem, int root);
184 
185 typedef char *(*sion_get_multi_filename_cb)(const char *, int);
186 
187 typedef int64_t (*sion_gather_execute_cb)(const void *, int64_t, void *, int, int, int, int,
188  int64_t process_cb(const void *, int64_t *, int), void *, bool spec_iterator_cb(void *, int64_t *));
189 
190 typedef int64_t (*sion_execute_scatter_cb)(void *, int64_t, void *, int, int, int, int,
191  int64_t process_cb(void *, int64_t *, int), void *, bool spec_iterator_cb(void *, int64_t *));
192 
193 typedef int (*sion_get_capability_cb)(void *);
194 
200 int sion_generic_create_api(char *name);
201 
205 int sion_generic_free_api(int aip);
206 
209 
212 
215 
218 
221 
224 
227 
230 
231 int sion_generic_register_get_multi_filename_cb(int aid, sion_get_multi_filename_cb cb);
232 
234 int sion_generic_register_gather_and_execute_cb(int aid, sion_gather_execute_cb cb);
235 
237 int sion_generic_register_execute_and_scatter_cb(int aid, sion_execute_scatter_cb cb);
238 
239 int sion_generic_register_get_capability_cb(int aid, sion_get_capability_cb cb);
240 
273 int sion_generic_paropen(int aid, const char *fname, const char *file_mode, int64_t *chunksize, int32_t *fsblksize,
274  void *gcommgroup, int grank, int gsize, int *filenumber, int *numfiles, const int *lrank, const int *lsize, FILE **fileptr,
275  char **newfname);
276 
277 int sion_generic_parclose(int sid);
278 
304 int sion_generic_paropen_mapped(int aid, char *fname, const char *file_mode, int *numFiles, void *gcommgroup, int grank,
305  int gsize, int *nlocaltasks, int **globalranks, int64_t **chunksizes, int **mapping_filenrs, int **mapping_lranks,
306  int32_t *fsblksize, FILE **fileptr);
307 
308 int sion_generic_parclose_mapped(int sid);
309 
310 int sion_generic_parreinit(int sid, int64_t chunksize);
311 
486 size_t sion_coll_fwrite(const void *data, size_t size, size_t nitems, int sid);
487 size_t sion_coll_fread(void *data, size_t size, size_t nitems, int sid);
488 
490 
491 #ifdef __cplusplus
492 }
493 #endif
494 
496 
497 #endif
498 
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:157
int sion_generic_register_scatterr_cb(int aid, sion_scatterr_cb cb)
register callback for communication
int sion_generic_register_scattervr_cb(int aid, sion_scattervr_cb cb)
register callback for communication
int sion_generic_paropen(int aid, const char *fname, const char *file_mode, int64_t *chunksize, int32_t *fsblksize, void *gcommgroup, int grank, int gsize, int *filenumber, int *numfiles, const int *lrank, const int *lsize, FILE **fileptr, char **newfname)
Open a sion file a generic interface.
Definition: sion_generic.c:362
int(* sion_free_lcg_cb)(void *local_commgroup)
free data structure which local_commgroup points on
Definition: sion_generic.h:139
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:149
int sion_generic_create_api(char *name)
Create new api.
Definition: sion_generic.c:31
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:174
int sion_generic_register_gatherr_cb(int aid, sion_gatherr_cb cb)
register callback for communication
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
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:620
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:183
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:144
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:166
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:135
int sion_generic_register_execute_and_scatter_cb(int aid, sion_execute_scatter_cb cb)
register callback for communication