p?laevswp

Moves the eigenvectors from where they are computed to ScaLAPACK standard block cyclic array.

Syntax

Fortran:

call pslaevswp(n, zin, ldzi, z, iz, jz, descz, nvs, key, rwork, lrwork)

call pdlaevswp(n, zin, ldzi, z, iz, jz, descz, nvs, key, rwork, lrwork)

call pclaevswp(n, zin, ldzi, z, iz, jz, descz, nvs, key, rwork, lrwork)

call pzlaevswp(n, zin, ldzi, z, iz, jz, descz, nvs, key, rwork, lrwork)

C:

void pslaevswp (MKL_INT *n , float *zin , MKL_INT *ldzi , float *z , MKL_INT *iz , MKL_INT *jz , MKL_INT *descz , MKL_INT *nvs , MKL_INT *key , float *work , MKL_INT *lwork );

void pdlaevswp (MKL_INT *n , double *zin , MKL_INT *ldzi , double *z , MKL_INT *iz , MKL_INT *jz , MKL_INT *descz , MKL_INT *nvs , MKL_INT *key , double *work , MKL_INT *lwork );

void pclaevswp (MKL_INT *n , float *zin , MKL_INT *ldzi , MKL_Complex8 *z , MKL_INT *iz , MKL_INT *jz , MKL_INT *descz , MKL_INT *nvs , MKL_INT *key , float *rwork , MKL_INT *lrwork );

void pzlaevswp (MKL_INT *n , double *zin , MKL_INT *ldzi , MKL_Complex16 *z , MKL_INT *iz , MKL_INT *jz , MKL_INT *descz , MKL_INT *nvs , MKL_INT *key , double *rwork , MKL_INT *lrwork );

Include Files

  • C: mkl_scalapack.h

Description

The p?laevswp routine moves the eigenvectors (potentially unsorted) from where they are computed, to a ScaLAPACK standard block cyclic array, sorted so that the corresponding eigenvalues are sorted.

Input Parameters

np = the number of rows local to a given process.

nq = the number of columns local to a given process.

n

(global) INTEGER.

The order of the matrix A. n 0.

zin

(local).

REAL for pslaevswp

DOUBLE PRECISION for pdlaevswp

COMPLEX for pclaevswp

COMPLEX*16 for pzlaevswp. Array, size (ldzi, nvs(iam) ). The eigenvectors on input. Each eigenvector resides entirely in one process. Each process holds a contiguous set of nvs(iam) eigenvectors. The first eigenvector which the process holds is: sum for i=[0, iam-1) of nvs(i).

ldzi

(local)

INTEGER. The leading dimension of the zin array.

iz, jz

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

descz

(global and local) INTEGER array, size (dlen_). The array descriptor for the distributed matrix Z.

nvs

(global) INTEGER.

Array, size( nprocs+1)

nvs(i) = number of processes number of eigenvectors held by processes [0, i-1)

nvs(1) = number of eigen vectors held by[0, 1 -1) = 0

nvs(nprocs+1)= number of eigen vectors held by [0, nprocs)= total number of eigenvectors.

key

(global) INTEGER.

Array, size (n). Indicates the actual index (after sorting) for each of the eigenvectors.

rwork

(local).

REAL for pslaevswp

DOUBLE PRECISIONfor pdlaevswp

COMPLEX for pclaevswp

COMPLEX*16 for pzlaevswp. Array, size (lrwork).

lrwork

(local)

INTEGER. Size of work.

Output Parameters

z

(local).

REAL for pslaevswp

DOUBLE PRECISION for pdlaevswp

COMPLEX for pclaevswp

COMPLEX*16 for pzlaevswp.

Array, global size n by n, local size (descz(dlen_), nq). The eigenvectors on output. The eigenvectors are distributed in a block cyclic manner in both dimensions, with a block size of nb.

For more complete information about compiler optimizations, see our Optimization Notice.