MPI_AINT_ADD(3)

πŸ’– MPI_AINT_ADD πŸ’–

okay bestie, welcome to the Open MPI manual page for MPI_Aint_add and MPI_Aint_diff β€” the portable girlies for doing arithmetic on MPI_Aint values ✨ no cap, this is the whole thing, so grab a boba πŸ“


🌸 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 πŸŽ€

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 πŸ¦‹

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 πŸ’…

  • base β€” base address, and yeah it's an integer bestie πŸ’œ
  • disp β€” the displacement, also an integer, no thoughts head empty 🫢
  • addr1 β€” minuend address (integer), she comes first πŸ₯‡
  • addr2 β€” subtrahend address (integer), she gets taken away 😭

πŸ‘‘ DESCRIPTION πŸ‘‘

ok so MPI_Aint_add produces a brand-new MPI_Aint value that's equivalent to the sum of the base and disp arguments. base here represents a base address that got returned by a call to 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, exactly like MPI-3.1 section 4.1.12 says. 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);

lowkey iconic, right? ✨

MPI_Aint_diff produces a new MPI_Aint value that's equivalent to the difference between the addr1 and addr2 arguments, where addr1 and addr2 represent addresses returned by calls to 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 MPI_Get_address.

ngl bestie, mind the "same object, same process" rule β€” the vibes are portable but the addresses are not, and that's on purpose πŸ’€

See also:

  • MPI_Get_address

2003-2026, The Open MPI Community


and that's a wrap, my love 🫢 this whole page came to you straight out of Open MPI, dated Sep 10, 2026, filed under MPI_AINT_ADD(3) β€” go forth and do cute portable pointer math, periodt πŸ’…βœ¨

πŸ“¦ where this page comes from