Gromacs  2018.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Enumerations | Functions
#include "gromacs/math/vectypes.h"

Description

This file declares functions for (mostly) the domdec module to use MPI functionality.

Todo:
Wrap the raw dd_bcast in md.cpp into a higher-level function in the domdec module, then this file can be module-internal.
Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Enumerations

enum  { dddirForward, dddirBackward }
 

Functions

void dd_sendrecv_int (const struct gmx_domdec_t *dd, int ddimind, int direction, int *buf_s, int n_s, int *buf_r, int n_r)
 Move integers in the communication region one cell along the domain decomposition. More...
 
void dd_sendrecv_real (const struct gmx_domdec_t *dd, int ddimind, int direction, real *buf_s, int n_s, real *buf_r, int n_r)
 Move reals in the comm. region one cell along the domain decomposition. More...
 
void dd_sendrecv_rvec (const struct gmx_domdec_t *dd, int ddimind, int direction, rvec *buf_s, int n_s, rvec *buf_r, int n_r)
 Move revc's in the comm. region one cell along the domain decomposition. More...
 
void dd_sendrecv2_rvec (const struct gmx_domdec_t *dd, int ddimind, rvec *buf_s_fw, int n_s_fw, rvec *buf_r_fw, int n_r_fw, rvec *buf_s_bw, int n_s_bw, rvec *buf_r_bw, int n_r_bw)
 Move revc's in the comm. region one cell along the domain decomposition. More...
 
void dd_bcast (struct gmx_domdec_t *dd, int nbytes, void *data)
 Broadcasts nbytes from data on DDMASTERRANK to all PP ranks.
 
void dd_bcastc (struct gmx_domdec_t *dd, int nbytes, void *src, void *dest)
 Copies nbytes from src to dest on DDMASTERRANK and then broadcasts to dest on all PP ranks.
 
void dd_scatter (struct gmx_domdec_t *dd, int nbytes, const void *src, void *dest)
 Scatters nbytes from src on DDMASTERRANK to all PP ranks, received in dest.
 
void dd_gather (struct gmx_domdec_t *dd, int nbytes, const void *src, void *dest)
 Gathers nbytes from src on all PP ranks, received in dest on DDMASTERRANK.
 
void dd_scatterv (struct gmx_domdec_t *dd, int *scounts, int *disps, const void *sbuf, int rcount, void *rbuf)
 Scatters scounts bytes from src on DDMASTERRANK to all PP ranks, receiving rcount bytes in dest. More...
 
void dd_gatherv (struct gmx_domdec_t *dd, int scount, const void *sbuf, int *rcounts, int *disps, void *rbuf)
 Gathers rcount bytes from src on all PP ranks, received in scounts bytes in dest on DDMASTERRANK. More...
 

Function Documentation

void dd_gatherv ( struct gmx_domdec_t *  dd,
int  scount,
const void *  sbuf,
int *  rcounts,
int *  disps,
void *  rbuf 
)

Gathers rcount bytes from src on all PP ranks, received in scounts bytes in dest on DDMASTERRANK.

See man MPI_Gatherv for details of how to construct scounts and disps.

If scount==0, sbuf is allowed to be NULL

void dd_scatterv ( struct gmx_domdec_t *  dd,
int *  scounts,
int *  disps,
const void *  sbuf,
int  rcount,
void *  rbuf 
)

Scatters scounts bytes from src on DDMASTERRANK to all PP ranks, receiving rcount bytes in dest.

See man MPI_Scatterv for details of how to construct scounts and disps. If rcount==0, rbuf is allowed to be NULL

void dd_sendrecv2_rvec ( const struct gmx_domdec_t *  dd,
int  ddimind,
rvec *  buf_s_fw,
int  n_s_fw,
rvec *  buf_r_fw,
int  n_r_fw,
rvec *  buf_s_bw,
int  n_s_bw,
rvec *  buf_r_bw,
int  n_r_bw 
)

Move revc's in the comm. region one cell along the domain decomposition.

Moves in dimension indexed by ddimind, simultaneously in the forward and backward directions.

void dd_sendrecv_int ( const struct gmx_domdec_t *  dd,
int  ddimind,
int  direction,
int *  buf_s,
int  n_s,
int *  buf_r,
int  n_r 
)

Move integers in the communication region one cell along the domain decomposition.

Moves in the dimension indexed by ddimind, either forward (direction=dddirFoward) or backward (direction=dddirBackward).

void dd_sendrecv_real ( const struct gmx_domdec_t *  dd,
int  ddimind,
int  direction,
real buf_s,
int  n_s,
real buf_r,
int  n_r 
)

Move reals in the comm. region one cell along the domain decomposition.

Moves in the dimension indexed by ddimind, either forward (direction=dddirFoward) or backward (direction=dddirBackward).

void dd_sendrecv_rvec ( const struct gmx_domdec_t *  dd,
int  ddimind,
int  direction,
rvec *  buf_s,
int  n_s,
rvec *  buf_r,
int  n_r 
)

Move revc's in the comm. region one cell along the domain decomposition.

Moves in dimension indexed by ddimind, either forward (direction=dddirFoward) or backward (direction=dddirBackward).