HPL_rollN - Roll U and forward the column panel.
#include "hpl.h"
void HPL_rollN( HPL_T_panel * PBCST,
int * IFLAG, HPL_T_panel * PANEL, const
int N, double * U, const int LDU,
const int * IPLEN, const int * IPMAP, const
int * IPMAPM1 );
HPL_rollN rolls the local arrays containing the local pieces of U, so
that on exit to this function U is replicated in every process row. In
addition, this function probe for the presence of the column panel and
forwards it when available.
- PBCST (local input/output) HPL_T_panel *
- On entry, PBCST points to the data structure containing the panel (to be
broadcast) information.
- IFLAG (local input/output) int *
- On entry, IFLAG indicates whether or not the broadcast has already been
completed. If not, probing will occur, and the outcome will be contained
in IFLAG on exit.
- PANEL (local input/output) HPL_T_panel *
- On entry, PANEL points to the data structure containing the panel (to be
rolled) information.
- N (local input) const int
- On entry, N specifies the number of columns of U. N must be at least
zero.
- U (local input/output) double *
- On entry, U is an array of dimension (LDU,*) containing the local pieces
of U in each process row.
- LDU (local input) const int
- On entry, LDU specifies the local leading dimension of U. LDU should be at
least MAX(1,IPLEN[NPROW]).
- IPLEN (global input) const int *
- On entry, IPLEN is an array of dimension NPROW+1. This array is such that
IPLEN[i+1] - IPLEN[i] is the number of rows of U in each process row.
- IPMAP (global input) const int *
- On entry, IMAP is an array of dimension NPROW. This array contains the
logarithmic mapping of the processes. In other words, IMAP[myrow] is the
absolute coordinate of the sorted process.
- IPMAPM1 (global input) const int *
- On entry, IMAPM1 is an array of dimension NPROW. This array contains the
inverse of the logarithmic mapping contained in IMAP: For i in [0.. NPROW)
IMAPM1[IMAP[i]] = i.