p?laqge

Scales a general rectangular matrix, using row and column scaling factors computed by p?geequ .

Syntax

Fortran:

call pslaqge(m, n, a, ia, ja, desca, r, c, rowcnd, colcnd, amax, equed)

call pdlaqge(m, n, a, ia, ja, desca, r, c, rowcnd, colcnd, amax, equed)

call pclaqge(m, n, a, ia, ja, desca, r, c, rowcnd, colcnd, amax, equed)

call pzlaqge(m, n, a, ia, ja, desca, r, c, rowcnd, colcnd, amax, equed)

C:

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

  • C: mkl_scalapack.h

Description

The p?laqge routine 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.

Input Parameters

m

(global) INTEGER.

The number of rows to be operated on, that is, the number of rows of the distributed submatrix sub(A). (m 0).

n

(global) INTEGER.

The number of columns to be operated on, that is, the number of columns of the distributed submatrix 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)).

On entry, this array contains the distributed matrix sub(A).

ia, ja

(global) INTEGER. The row and column indices in the global array A indicating the first row and the first column of the submatrix sub(A), respectively.

desca

(global and local) INTEGER array, 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, 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, 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), iaiia+m-1.

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), iaiia+n-1.

amax

(global). REAL for pslaqge

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) CHARACTER.

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)),

= 'C': column equilibration, that is, sub(A) has been post-multiplied by diag(c(ja:ja+n-1)),

= '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)).

Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.