HPL_logsort - Sort the processes in logarithmic order.

**#include "hpl.h"**
**void** **HPL_logsort(** **const int** *NPROCS*,

**const int**
*ICURROC*,

**int *** *IPLEN*,

**int *** *IPMAP*,

**int
*** *IPMAPM1* **);**
**HPL_logsort** computes an array IPMAP and its inverse IPMAPM1 that contain
the logarithmic sorted processes id with repect to the local number of rows of
U that they own. This is necessary to ensure that the logarithmic spreading of
U is optimal in terms of number of steps and communication volume as well. In
other words, the larget pieces of U will be sent a minimal number of times.

- NPROCS (global input) const int
- On entry, NPROCS specifies the number of process rows in the process grid.
NPROCS is at least one.

- ICURROC (global input) const int
- On entry, ICURROC is the source process row.

- IPLEN (global input/output) int *
- On entry, IPLEN is an array of dimension NPROCS+1, such that IPLEN[0] is
0, and IPLEN[i] contains the number of rows of U, that process i-1 has. On
exit, IPLEN[i] is the number of rows of U in the processes before process
IPMAP[i] after the sort, with the convention that IPLEN[NPROCS] is the
total number of rows of the panel. In other words, IPLEN[i+1] - IPLEN[i]
is the number of rows of A that should be moved to the process IPMAP[i].
IPLEN is such that the number of rows of the source process row is
IPLEN[1] - IPLEN[0], and the remaining entries of this array are sorted so
that the quantities IPLEN[i+1]-IPLEN[i] are logarithmically sorted.

- IPMAP (global output) int *
- On entry, IPMAP is an array of dimension NPROCS. On exit, array contains
the logarithmic mapping of the processes. In other words, IPMAP[myroc] is
the corresponding sorted process coordinate.

- IPMAPM1 (global output) int *
- On entry, IPMAPM1 is an array of dimension NPROCS. On exit, this array
contains the inverse of the logarithmic mapping contained in IPMAP:
IPMAPM1[ IPMAP[i] ] = i, for all i in [0.. NPROCS)

**HPL_plindx1** (3),

**HPL_plindx10** (3),

**HPL_pdlaswp01N** (3),

**HPL_pdlaswp01T** (3).