HPL_logsort man page

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)

See Also

HPL_plindx1 (3), HPL_plindx10 (3), HPL_pdlaswp01N (3), HPL_pdlaswp01T (3).


October 26, 2012 HPL 2.1 HPL Library Functions