SIONlib  2.0.0-rc.3
Scalable I/O library for parallel access to task-local files
simple/sionpar.c

Parallel example showing the very basic usage of SIONlib using MPI.

More examples can be found in 'examples' folder of the SIONlib installation.

/****************************************************************************
** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
*****************************************************************************
** Copyright (c) 2008-2021 **
** Forschungszentrum Juelich, Juelich Supercomputing Centre **
** **
** See the file COPYRIGHT in the package base directory for details **
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
#include "sion.h"
#define BUFFER_SIZE (1024 * 1024)
int main(int argc, char** argv)
{
MPI_Init(&argc, &argv);
int size, rank;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
char localbuffer[BUFFER_SIZE];
memset(localbuffer, 'A', BUFFER_SIZE);
int sid = sion_paropen_mpi("parfile.sion", SION_OPEN_WRITE, MPI_COMM_WORLD, NULL);
size_t bwrote = sion_write(localbuffer, 1, BUFFER_SIZE, sid);
printf("Task %02d: wrote bytes: %zu\n", rank, bwrote);
sid = sion_paropen_mpi("parfile.sion", SION_OPEN_READ, MPI_COMM_WORLD, NULL);
size_t bread = sion_read(localbuffer, 1, BUFFER_SIZE, sid);
printf("Task %02d: read bytes: %zu\n", rank, bread);
printf("Task %02d: at end of file: %s\n", rank, (sion_eof(sid)) ? "true" : "false");
MPI_Finalize();
return 0;
}
size_t sion_write(const void *data, size_t size, size_t nitems, int sid)
Write data to a SIONlib file.
Definition: sion_common.c:313
size_t sion_read(void *data, size_t size, size_t nitems, int sid)
Read data from SIONlib file.
Definition: sion_common.c:374
int sion_eof(int sid)
Function that indicates whether the end of this logical file has been reached.
Definition: sion_common.c:555
@ SION_OPEN_WRITE
open the file for writing only
Definition: sion_enums.h:49
@ SION_OPEN_READ
open the file for reading only
Definition: sion_enums.h:47
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:336
int sion_parclose_mpi(int sid)
Close a SIONlib file using MPI.
Definition: sion_mpi_gen.c:34