SIONlib  2.0.0-rc.2
Scalable I/O library for parallel access to task-local files
Typedefs | Functions
MPI Parallel API

Open (and close) SIONlib files from multiple MPI processes in parallel. More...

Typedefs

typedef struct sion_mpi_options sion_mpi_options
 Holds non-essential arguments for sion_paropen_mpi(). More...
 
typedef struct _sion_file_check_par_args_mpi_struct sion_file_check_par_args_mpi
 

Functions

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. More...
 
int sion_parclose_mpi (int sid)
 Close a SIONlib file using MPI. More...
 
int sion_parreinit_mpi (int sid, int64_t chunksize)
 
int sion_paropen_mapped_mpi (char *fname, const char *file_mode, int *numFiles, MPI_Comm gComm, int *nlocaltasks, int **globalranks, int64_t **chunksizes, int **mapping_filenrs, int **mapping_lranks, int32_t *fsblksize, FILE **fileptr)
 
int sion_parclose_mapped_mpi (int sid)
 
sion_file_check_par_args_mpision_file_check_par_args_init_mpi (sion_open_mode mode, MPI_Comm communicator, const sion_mpi_options *options)
 
void sion_file_check_par_args_free_mpi (sion_file_check_par_args_mpi *args)
 
int sion_file_check_par_cb_mpi (char *fname, void *args)
 
sion_mpi_optionssion_mpi_options_new ()
 Allocates and initializes an instance of sion_mpi_options More...
 
void sion_mpi_options_delete (sion_mpi_options *options)
 Delete an instance of sion_mpi_options More...
 
void sion_mpi_options_set_chunksize (sion_mpi_options *options, int64_t chunksize)
 Set the chunk size of a logical file in the container. More...
 
void sion_mpi_options_set_fsblksize (sion_mpi_options *options, int32_t fsblksize)
 Set the file system block size to assume. More...
 
void sion_mpi_options_set_multifile_number (sion_mpi_options *options, int multifile_number)
 Set the number of physical files to use. More...
 
void sion_mpi_options_set_multifile_communicator (sion_mpi_options *options, MPI_Comm multifile_communicator)
 Create multiple physical files based on disjunct communicators. More...
 
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. More...
 
void sion_mpi_options_set_buddy (sion_mpi_options *options)
 Enable buddy checkpointing mechanism. More...
 
void sion_mpi_options_set_buddylevel (sion_mpi_options *options, int32_t buddylevel)
 Enable buddy checkpointing mechanism. More...
 
void sion_mpi_options_set_collective (sion_mpi_options *options)
 Enable collective I/O. More...
 
void sion_mpi_options_set_collective_size (sion_mpi_options *options, int32_t size)
 Enable collective I/O. More...
 
void sion_mpi_options_set_collective_merge (sion_mpi_options *options)
 Use collective merging. More...
 
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. More...
 
void sion_mpi_options_set_endianness (sion_mpi_options *options, sion_endianness endianness)
 Set the endianness for the contents of a container. More...
 

Detailed Description

Open (and close) SIONlib files from multiple MPI processes in parallel.

Typedef Documentation

◆ sion_mpi_options

Holds non-essential arguments for sion_paropen_mpi().

These are:

  • the sizes of chunks for the logical file opened by this task,
  • the size of a file system block to assume,
  • whether and in what mode to use SIONlib's key-value mechanism,
  • whether to use the buddy redundancy mechanism,
  • whether to use collective I/O,
  • what low-level API to use for file system access,
  • the endianness of user data in the file,
  • how many files to use.

Definition at line 44 of file sion_mpi.h.

Function Documentation

◆ sion_mpi_options_delete()

void sion_mpi_options_delete ( sion_mpi_options options)

Delete an instance of sion_mpi_options

Parameters
[in]optionsa pointer to the instance to delete

Definition at line 170 of file sion_mpi_gen.c.

◆ sion_mpi_options_new()

sion_mpi_options* sion_mpi_options_new ( )

Allocates and initializes an instance of sion_mpi_options

Returns
a pointer to the new instance or NULL if allocation failed

Definition at line 161 of file sion_mpi_gen.c.

◆ sion_mpi_options_set_buddy()

void sion_mpi_options_set_buddy ( sion_mpi_options options)

Enable buddy checkpointing mechanism.

Has the same effect as sion_generic_options_set_buddylevel(options, 1).

See also
resiliency
Parameters
[in]optionsan options object

Definition at line 202 of file sion_mpi_gen.c.

References sion_mpi_options_set_buddylevel().

◆ sion_mpi_options_set_buddylevel()

void sion_mpi_options_set_buddylevel ( sion_mpi_options options,
int32_t  buddylevel 
)

Enable buddy checkpointing mechanism.

Enables a specific level of buddy redundancy.

See also
resiliency
Parameters
[in]optionsan options object
[in]buddylevelthe level of redundancy to use

Definition at line 207 of file sion_mpi_gen.c.

References sion_generic_options_set_buddylevel().

Referenced by sion_mpi_options_set_buddy().

Here is the caller graph for this function:

◆ sion_mpi_options_set_chunksize()

void sion_mpi_options_set_chunksize ( sion_mpi_options options,
int64_t  chunksize 
)

Set the chunk size of a logical file in the container.

Parameters
[in,out]optionsan options object
[in]chunksizechunk sizes for the logical file opened by this process

Definition at line 175 of file sion_mpi_gen.c.

References sion_generic_options_set_chunksize().

◆ sion_mpi_options_set_collective()

void sion_mpi_options_set_collective ( sion_mpi_options options)

Enable collective I/O.

The size of collector groups will be determined via heuristics.

See also
Collective API
Parameters
[in]optionsan options object

Definition at line 212 of file sion_mpi_gen.c.

References sion_mpi_options_set_collective_size().

◆ sion_mpi_options_set_collective_merge()

void sion_mpi_options_set_collective_merge ( sion_mpi_options options)

Use collective merging.

See also
Collective API
Parameters
[in]optionsan options object

Definition at line 222 of file sion_mpi_gen.c.

References sion_generic_options_set_collective_merge().

◆ sion_mpi_options_set_collective_size()

void sion_mpi_options_set_collective_size ( sion_mpi_options options,
int32_t  size 
)

Enable collective I/O.

See also
Collective API
Parameters
[in]optionsan options object
[in]sizesize of the collector groups

Definition at line 217 of file sion_mpi_gen.c.

References sion_generic_options_set_collective_size().

Referenced by sion_mpi_options_set_collective().

Here is the caller graph for this function:

◆ sion_mpi_options_set_endianness()

void sion_mpi_options_set_endianness ( sion_mpi_options options,
sion_endianness  endianness 
)

Set the endianness for the contents of a container.

Parameters
[in,out]optionsan options object
[in]endiannessthe endianness of the contents

Definition at line 232 of file sion_mpi_gen.c.

References sion_generic_options_set_endianness().

◆ sion_mpi_options_set_fsblksize()

void sion_mpi_options_set_fsblksize ( sion_mpi_options options,
int32_t  fsblksize 
)

Set the file system block size to assume.

Parameters
[in,out]optionsan options object
[in]fsblksizethe file system block size

Definition at line 180 of file sion_mpi_gen.c.

References sion_generic_options_set_fsblksize().

◆ sion_mpi_options_set_keyval_mode()

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.

Parameters
[in,out]optionsan options object
[in]keyval_modethe key-value mode to use

Definition at line 197 of file sion_mpi_gen.c.

References sion_generic_options_set_keyval_mode().

◆ sion_mpi_options_set_lowlevel_api()

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.

Parameters
[in,out]optionsan options object
[in]lowlevel_apithe low-level API to use

Definition at line 227 of file sion_mpi_gen.c.

References sion_generic_options_set_lowlevel_api().

◆ sion_mpi_options_set_multifile_communicator()

void sion_mpi_options_set_multifile_communicator ( sion_mpi_options options,
MPI_Comm  multifile_communicator 
)

Create multiple physical files based on disjunct communicators.

A separate physical file will be created for every distinct communicator. The union of all the different communicators should be the communicator passed to sion_paropen_mpi().

Parameters
[in,out]optionsan options object
[in]multifile_communicator

Definition at line 191 of file sion_mpi_gen.c.

◆ sion_mpi_options_set_multifile_number()

void sion_mpi_options_set_multifile_number ( sion_mpi_options options,
int  multifile_number 
)

Set the number of physical files to use.

Parameters
[in,out]optionsan options object
[in]multifile_numberhow many files to use

Definition at line 185 of file sion_mpi_gen.c.

◆ sion_parclose_mpi()

int sion_parclose_mpi ( int  sid)

Close a SIONlib file using MPI.

Uses sion_generic_parclose() internally.

Parameters
[in]sidSIONlib file handle
Returns
success value (SION_SUCCESS or SION_NOT_SUCCESS)
Examples
simple/sionpar.c.

Definition at line 34 of file sion_mpi_gen.c.

◆ sion_paropen_mpi()

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.

This function opens a SIONlib file using MPI. It processes the MPI specific parts and then passes its arguments on to sion_generic_paropen().

Parameters
[in]filenamename of the file (must match on all processes)
[in]modewhat mode to open the file in
[in]communicatora communicator containing all processes that call this function
[in]optionsadditional options or NULL
Returns
SIONlib file handle or -1 if an error occurred
Examples
simple/sionpar.c.

Definition at line 237 of file sion_mpi_gen.c.