Developer Reference for Intel® oneAPI Math Kernel Library for C
p?laqge
Scales a general rectangular matrix, using row and column scaling factors computed by p?geequ .
Syntax
void pslaqge(MKL_INT *m, MKL_INT *n, float *a, MKL_INT *ia, MKL_INT *ja, MKL_INT *desca,
float *r, float *c, float *rowcnd, float *colcnd, float *amax, char *equed);
void pdlaqge(MKL_INT *m, MKL_INT *n, double *a, MKL_INT *ia, MKL_INT *ja, MKL_INT *desca,
double *r, double *c, double *rowcnd, double *colcnd, double *amax,
char *equed);
void pclaqge(MKL_INT *m, MKL_INT *n, MKL_Complex8 *a, MKL_INT *ia, MKL_INT *ja,
MKL_INT *desca, float *r, float *c, float *rowcnd, float *colcnd,
float *amax, char *equed);
void pzlaqge(MKL_INT *m, MKL_INT *n, MKL_Complex16 *a, MKL_INT *ia, MKL_INT *ja,
MKL_INT *desca, double *r, double *c, double *rowcnd, double *colcnd,
double *amax, char *equed);
Include Files
mkl_scalapack.h
Description
pslaqge pdlaqge pclaqge pzlaqge The p?laqge routine function equilibrates a general m -by- n distributed matrix sub( A ) = A(ia:ia+m-1 , ja:ja+n-1) using the row and scaling factors in the vectors r and c computed by p?geequ (Computes row and column scaling factors intended to equilibrate a general rectangular distributed matrix and reduce its condition number.) .
Input Parameters
m
(global)
The number of rows in the distributed matrix sub( A ). (m ≥0) .
n
(global)
The number of columns in the distributed matrix sub( A ). (n ≥0) .
- a
-
(local). REAL for pslaqge DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge .
Pointer into the local memory to an array of size (lld_a, LOCc(ja+n-1))lld_a * LOCc(ja+n-1) .
On entry, this array contains the distributed matrix sub( A ).
ia , ja
(global) The row and column indices in the global matrix A indicating the first row and the first column of the matrix sub( A ), respectively.
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A .
- r
-
(local). REAL for pslaqge DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge . Array of size LOCr(m_a) . The row scale factors for sub( A ). r is aligned with the distributed matrix A , and replicated across every process column. r is tied to the distributed matrix A .
- c
-
(local). REAL for pslaqge DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge . Array of size LOCc(n_a) . The row scale factors for sub( A ). c is aligned with the distributed matrix A , and replicated across every process column. c is tied to the distributed matrix A .
- rowcnd
-
(local). REAL for pslaqge DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge .
The global ratio of the smallest r [ i ] to the largest r [ i ] , ia-1 ≤ i ≤ ia+m -2 .
- colcnd
-
(local). REAL for pslaqge DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge .
The global ratio of the smallest c [ i ] to the largest c [ i ], ia-1 ≤ i ≤ ia+n -2 .
amax
(global).
DOUBLE PRECISION for pdlaqge COMPLEX for pclaqge COMPLEX*16 for pzlaqge . Absolute value of largest distributed submatrix entry.
Output Parameters
- a
-
(local). On exit, the equilibrated distributed matrix. See equed for the form of the equilibrated distributed submatrix.
equed
(global)
Specifies the form of equilibration that was done. = ‘N’ : No equilibration = ‘R’ : Row equilibration, that is, sub( A ) has been pre-multiplied by diag(r(ia:ia+m-1))diag(r[ia-1:ia+m-2]) , = ‘C’ : column equilibration, that is, sub( A ) has been post-multiplied by diag(c(ja:ja+n-1))diag(c[ja-1:ja+n-2]) , = ‘B’ : Both row and column equilibration, that is, sub( A ) has been replaced by diag(r(ia:ia+m-1))* sub(A) * diag(c(ja:ja+n-1))diag(r[ia-1:ia+m-2])* sub(A) * diag(c[ja-1:ja+n-2]) .