Name
HPL_equil Equilibrate U and forward the column panel L.
Synopsis
#include "hpl.h"
void
HPL_equil(
HPL_T_panel *
PBCST,
int *
IFLAG,
HPL_T_panel *
PANEL,
const enum HPL_TRANS
TRANS,
const int
N,
double *
U,
const int
LDU,
int *
IPLEN,
const int *
IPMAP,
const int *
IPMAPM1,
int *
IWORK
);
Description
HPL_equil
equilibrates  the  local  pieces  of U, so that on exit to
this function, pieces of U contained in every process row are of the
same size. This phase makes the rolling phase optimal.  In addition,
this  function probes  for  the  column panel L and forwards it when
possible.
Arguments
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 equilibrated) information.
TRANS   (global input)                const enum HPL_TRANS
        On entry, TRANS specifies whether  U  is stored in transposed
        or non-transposed form.
N       (local input)                 const int
        On entry, N  specifies the number of rows or columns of  U. N
        must be at least 0.
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]) when  U  is stored  in
        non-transposed form, and MAX(1,N) otherwise.
IPLEN   (global input)                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 process IPMAP[i].
IPMAP   (global input)                const int *
        On entry, IPMAP is an array of dimension  NPROW.  This  array
        contains  the  logarithmic mapping of the processes. In other
        words, IPMAP[myrow]  is the absolute coordinate of the sorted
        process.
IPMAPM1 (global input)                const int *
        On entry, IPMAPM1  is an array of dimension NPROW. This array
        contains  the inverse of the logarithmic mapping contained in
        IPMAP: For i in [0.. NPROCS) IPMAPM1[IPMAP[i]] = i.
IWORK   (workspace)                   int *
        On entry, IWORK is a workarray of dimension NPROW+1.
See Also
HPL_pdlaswp01N,
HPL_pdlaswp01T.