:ref:`MPI_Aint_add`, :ref:`MPI_Aint_diff` - Portable functions for arithmetic on MPI_Aint values.
#include <mpi.h>
MPI_Aint MPI_Aint_add(MPI_Aint base, MPI_Aint disp)
MPI_Aint MPI_Aint_diff(MPI_Aint addr1, MPI_Aint addr2)
USE MPI
! or the older form: INCLUDE 'mpif.h'
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_ADD(BASE, DISP)
INTEGER(KIND=MPI_ADDRESS_KIND) BASE, DISP
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_DIFF(ADDR1, ADDR2)
INTEGER(KIND=MPI_ADDRESS_KIND) ADDR1, ADDR2
USE mpi_f08
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_ADD(BASE, DISP)
INTEGER(KIND=MPI_ADDRESS_KIND) BASE, DISP
INTEGER(KIND=MPI_ADDRESS_KIND) MPI_AINT_DIFF(ADDR1, ADDR2)
INTEGER(KIND=MPI_ADDRESS_KIND) ADDR1, ADDR2
base
: Base address (integer).disp
: Displacement (integer).addr1
: Minuend address (integer).addr2
: Subtrahend address (integer).
:ref:`MPI_Aint_add` produces a new MPI_Aint value that is equivalent to the sum of the base and disp arguments, where base represents a base address returned by a call to :ref:`MPI_Get_address` and disp represents a signed integer displacement. The resulting address is valid only at the process that generated base, and it must correspond to a location in the same object referenced by base, as described in MPI-3.1 section 4.1.12. The addition is performed in a manner that results in the correct MPI_Aint representation of the output address, as if the process that originally produced base had called:
MPI_Get_address ((char *) base + disp, &result);
:ref:`MPI_Aint_diff` produces a new MPI_Aint value that is equivalent to
the difference between addr1 and addr2 arguments, where addr1
and addr2 represent addresses returned by calls to
:ref:`MPI_Get_address`. The resulting address is valid only at the
process that generated addr1 and addr2, and addr1 and addr2
must correspond to locations in the same object in the same process,
as described in MPI-3.1 section 4.1.12. The difference is calculated
in a manner that results in the signed difference from addr1 to
addr2, as if the process that originally produced the addresses had
called (char *) addr1
- (char *) addr2
on the addresses
initially passed to :ref:`MPI_Get_address`.
.. seealso::
* :ref:`MPI_Get_address`