MPI\_AINT\_ADD(3) Open MPI MPI\_AINT\_ADD(3)

MPI\_Aint\_add, MPI\_Aint\_diff &lt;#mpi-aint-diff&gt; - Portable functions for arithmetic on MPI\_Aint values.

# [SYNTAX](#SYNTAX)

## [C Syntax](#C_Syntax)

```
#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)
```

## [Fortran Syntax](#Fortran_Syntax)

```
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
```

## [Fortran 2008 Syntax](#Fortran_2008_Syntax)

```
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
```

# [INPUT PARAMETERS](#INPUT_PARAMETERS)

- **base**: Base address (integer).
- **disp**: Displacement (integer).
- **addr1**: Minuend address (integer).
- **addr2**: Subtrahend address (integer).

# [DESCRIPTION](#DESCRIPTION)

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 MPI\_Get\_address &lt;#mpi-get-address&gt; 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);
```

MPI\_Aint\_diff &lt;#mpi-aint-diff&gt; 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 MPI\_Get\_address &lt;#mpi-get-address&gt;. 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 MPI\_Get\_address &lt;#mpi-get-address&gt;.

**See also:**

•

MPI\_Get\_address &lt;#mpi-get-address&gt;

# [Copyright](#Copyright)

2003-2026, The Open MPI Community

September 16, 2026

---

Document: MPI_Aint_add(3) from openmpi-cuda-12.8 5.0.11-r1 (Chainguard OS)
Source: https://github.com/open-mpi/ompi
