Skip to main content
`Ctrl`+`K`

# PetscBinarySynchronizedRead

Reads from a binary file, all MPI processes get the same values

## Synopsis

    PetscErrorCode PetscBinarySynchronizedRead(MPI_Comm comm, int fd, void *data, PetscInt num, PetscInt *count, PetscDataType type)

Collective, No Fortran Support

## Input Parameters

- comm - the MPI communicator

- fd - the file descriptor

- num - the maximum number of items to read

- type - the type of items to read (`PETSC_INT`, `PETSC_REAL`, `PETSC_SCALAR`, etc.)

## Output Parameters

- data - the buffer, an array of the type that matches the value in `type`

- count - the number of items read, optional

## Notes

Does a `PetscBinaryRead()` followed by an `MPI_Bcast()`

If `count` is not provided and the number of items read is less than the maximum number of items to read, then this routine errors.

`PetscBinarySynchronizedRead()` uses byte swapping to work on all machines. The files are written using big-endian ordering to the file. On little-endian machines the numbers are converted to the big-endian format when they are written to disk. When PETSc is configured using `./configure with --with-64-bit-indices` the integers are written to the file as 64-bit integers, this means they can only be read back in when the option `--with-64-bit-indices` is used.

## See Also

`PetscBinaryWrite()`, `PetscBinaryOpen()`, `PetscBinaryClose()`, `PetscBinaryRead()`, `PetscBinarySynchronizedWrite()`, `PetscBinarySynchronizedSeek()`

## Level

developer

## Location

src/sys/fileio/sysio.c

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages