|
KMR
|
Communication Routines. More...
#include <mpi.h>#include <stdlib.h>#include <limits.h>#include <errno.h>#include <assert.h>#include "kmr.h"#include "kmrimpl.h"Go to the source code of this file.
Functions | |
| int | kmr_allgatherv (KMR *mr, _Bool rankzeroonly, void *sbuf, long scnt, void *rbuf, long *rcnts, long *rdsps) |
| All-gathers data, or gathers data when RANKZEROONLY. More... | |
| static int | kmr_alltoall_bruck (KMR *mr, void *sbuf, void *rbuf, int cnt) |
| int | kmr_alltoallv (KMR *mr, void *sbuf, long *scnts, long *sdsps, void *rbuf, long *rcnts, long *rdsps) |
| Does all-to-all-v, but it takes the arguments by long-integers. More... | |
| static int | kmr_alltoallv_bruck (KMR *mr, long maxcnt, void *sbuf, long *scnts, long *sdsps, void *rbuf, long *rcnts, long *rdsps) |
| static int | kmr_alltoallv_mpi (KMR *mr, void *sbuf, long *scnts, long *sdsps, void *rbuf, long *rcnts, long *rdsps) |
| static int | kmr_alltoallv_naive (KMR *mr, void *sbuf, long *scnts, long *sdsps, void *rbuf, long *rcnts, long *rdsps) |
| static int | kmr_alltoallv_wait_requests (KMR *mr, int reqcnt, MPI_Request *rqs, MPI_Status *sts, int *indexes) |
| static void | kmr_atoa_dump_ (KMR *mr, void *sbuf, int sz, char *title, int step) |
| int | kmr_exchange_sizes (KMR *mr, long *sbuf, long *rbuf) |
| Calls all-to-all to exchange one long-integer. More... | |
| int | kmr_gather_sizes (KMR *mr, long siz, long *rbuf) |
| Calls all-gather for collecting one long-integer. More... | |
| static _Bool | kmr_powerof2_p (int x) |
| static _Bool | kmr_powerof4_p (int x) |
Communication Routines.
KMR makes almost all data exchanges through this. Some exceptions are "kmrmapms.c" and "kmrfiles.c". It provides operations with size_t data length.
Definition in file kmratoa.c.
| int kmr_exchange_sizes | ( | KMR * | mr, |
| long * | sbuf, | ||
| long * | rbuf | ||
| ) |
| int kmr_gather_sizes | ( | KMR * | mr, |
| long | siz, | ||
| long * | rbuf | ||
| ) |
| int kmr_allgatherv | ( | KMR * | mr, |
| _Bool | rankzeroonly, | ||
| void * | sbuf, | ||
| long | scnt, | ||
| void * | rbuf, | ||
| long * | rcnts, | ||
| long * | rdsps | ||
| ) |
| int kmr_alltoallv | ( | KMR * | mr, |
| void * | sbuf, | ||
| long * | scnts, | ||
| long * | sdsps, | ||
| void * | rbuf, | ||
| long * | rcnts, | ||
| long * | rdsps | ||
| ) |
Does all-to-all-v, but it takes the arguments by long-integers.
It switches the methods with regard to the size of the largest message among the ranks. Setting ATOA_THRESHOLD=0 forces to use MPI all-to-all-v. It switches to a naive implementation of all-to-all-v when the sizes of messages are very large (larger than 16GB).
1.8.14