Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
HPL_plindx1(3)		      HPL Library Functions		  HPL_plindx1(3)

NAME
     HPL_plindx1 - Compute local swapping index arrays.

SYNOPSIS
     #include "hpl.h"

     void HPL_plindx1( HPL_T_panel * PANEL, const int K, const int * IPID, int *
     IPA,  int * LINDXA, int * LINDXAU, int * IPLEN, int * IPMAP, int * IPMAPM1,
     int * PERMU, int * IWORK );

DESCRIPTION
     HPL_plindx1 computes two local arrays  LINDXA and	LINDXAU  containing  the
     local   source  and final destination position  resulting from the applica-
     tion of row interchanges.	In addition, this function computes three arrays
     IPLEN, IPMAP and IPMAPM1  that contain  the  logarithmic  mapping	informa-
     tion for the spreading phase.

ARGUMENTS
     PANEL   (local input/output)    HPL_T_panel *
	     On entry,	PANEL  points to the data structure containing the panel
	     information.

     K	     (global input)	     const int
	     On entry, K specifies the number of entries in IPID.  K is at least
	     2*N, and at most 4*N.

     IPID    (global input)	     const int *
	     On  entry,   IPID	 is an array of length K. The first K entries of
	     that array contain the src and final destination resulting from the
	     application of the interchanges.

     IPA     (global output)	     int *
	     On exit,  IPA  specifies  the  number  of	rows  that  the  current
	     process  row has that either belong to U  or should be swapped with
	     remote rows of A.

     LINDXA  (global output)	     int *
	     On entry, LINDXA  is an array of dimension 2*N. On exit, this array
	     contains the local indexes of the rows of A I have that  should  be
	     copied into U.

     LINDXAU (global output)	     int *
	     On exit, LINDXAU  is an array of dimension 2*N. On exit, this array
	     contains	the  local  destination  information encoded as follows.
	     If LINDXAU(k) >= 0, row  LINDXA(k)  of A  is  to be copied in U  at
	     position  LINDXAU(k).   Otherwise, row LINDXA(k) of A should be lo-
	     cally copied into A(-LINDXAU(k),:).

     IPLEN   (global output)	     int *
	     On entry, IPLEN is an array of dimension NPROW + 1. On  exit,  this
	     array  is	such  that  IPLEN[i]  is the number of rows of A in  the
	     processes	before	process  IPMAP[i]  after the sort with the  con-
	     vention  that  IPLEN[nprow]   is  the  total  number of rows of the
	     panel.  In other words IPLEN[i+1]-IPLEN[i] is the local  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 can be com-
	     puted as  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 NPROW. On exit, this array
	     contains	the  logarithmic  mapping  of  the  processes.	In other
	     words, IPMAP[myrow] is the corresponding sorted process coordinate.

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

     PERMU   (global output)	     int *
	     On entry,	PERMU  is an array of dimension JB. On exit, PERMU  con-
	     tains   a	sequence of permutations,  that should be applied in in-
	     creasing order to permute in place the row panel U.

     IWORK   (workspace)	     int *
	     On entry, IWORK is a workarray of dimension 2*JB.

SEE ALSO
     HPL_pdlaswp00N (3),   HPL_pdlaswp00T (3),	  HPL_pdlaswp01N (3),	 HPL_pd-
     laswp01T (3).

HPL 2.3 			December 2, 2018		  HPL_plindx1(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=HPL_plindx1&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help