Contents

p?lahrd

Reduces the first
nb
columns of a general rectangular matrix A so that elements below the k
-th subdiagonal are zero, by an orthogonal/unitary transformation, and returns auxiliary matrices that are needed to apply the transformation to the unreduced part of A.

Syntax

void
pslahrd
(
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*nb
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
float
*tau
,
float
*t
,
float
*y
,
MKL_INT
*iy
,
MKL_INT
*jy
,
MKL_INT
*descy
,
float
*work
);
void
pdlahrd
(
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*nb
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
double
*tau
,
double
*t
,
double
*y
,
MKL_INT
*iy
,
MKL_INT
*jy
,
MKL_INT
*descy
,
double
*work
);
void
pclahrd
(
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*nb
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex8
*tau
,
MKL_Complex8
*t
,
MKL_Complex8
*y
,
MKL_INT
*iy
,
MKL_INT
*jy
,
MKL_INT
*descy
,
MKL_Complex8
*work
);
void
pzlahrd
(
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*nb
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex16
*tau
,
MKL_Complex16
*t
,
MKL_Complex16
*y
,
MKL_INT
*iy
,
MKL_INT
*jy
,
MKL_INT
*descy
,
MKL_Complex16
*work
);
Include Files
  • mkl_scalapack.h
Description
The
p?lahrd
function
reduces the first
nb
columns of a real general
n
-by-(
n-k
+1) distributed matrix
A
(
ia
:
ia
+
n
-1 ,
ja
:
ja
+
n-k
)
so that elements below the
k
-th subdiagonal are zero. The reduction is performed by an orthogonal/unitary similarity transformation
Q'*A*Q
. The
function
returns the matrices
V
and
T
which determine
Q
as a block reflector
I
-
V*T*V'
, and also the matrix
Y
=
A*V*T
.
This is an auxiliary
function
called by
p?gehrd
. In the following comments sub(
A
) denotes
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n
-1)
.
Input Parameters
n
(global)
The order of the distributed matrix sub(
A
).
n
0
.
k
(global)
The offset for the reduction. Elements below the
k
-th subdiagonal in the first
nb
columns are reduced to zero.
nb
(global)
The number of columns to be reduced.
a
(local).
Pointer into the local memory to an array of size
lld_a
*
LOCc
(
ja
+
n-k
)
. On entry, this array contains the local pieces of the
n
-by-(
n-k
+1) general distributed matrix
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n-k
).
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
.
iy
,
jy
(global) The row and column indices in the global matrix
Y
indicating the first row and the first column of the matrix sub(
Y
), respectively.
descy
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
Y
.
work
(local).
Array of size
nb
.
Output Parameters
a
(local).
On exit, the elements on and above the
k
-th subdiagonal in the first
nb
columns are overwritten with the corresponding elements of the reduced distributed matrix; the elements below the
k
-th subdiagonal, with the array
tau
, represent the matrix
Q
as a product of elementary reflectors. The other columns of
the matrix
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n-k
) are unchanged.
(See
Application Notes
below.)
tau
(local)
Array of size
LOCc
(
ja
+
n
-2). The scalar factors of the elementary reflectors (see
Application Notes
below).
tau
is tied to the distributed matrix
A
.
t
(local)
Array of size
nb_a
*
nb_a
. The upper triangular matrix
T
.
y
(local).
Pointer into the local memory to an array of size
lld_y
*
nb_a
. On exit, this array contains the local pieces of the
n
-by-
nb
distributed matrix
Y
.
lld_y
LOCr
(
ia
+
n
-1).
Application Notes
The matrix
Q
is represented as a product of
nb
elementary reflectors
Q
=
H
(1)*
H
(2)*...*
H
(
nb
)
.
Each
H
(
i
)
has the form
H
(
i
) =
i
-
tau
*
v
*
v'
,
where
tau
is a real/complex scalar, and
v
is a real/complex vector with
v
(1:
i
+
k
-1)= 0,
v
(
i
+
k
)= 1;
v
(
i
+
k
+1:
n
) is stored on exit in
A
(
ia
+
i
+
k
:
ia
+
n
-1,
ja
+
i
-1), and
tau
in
tau
[
ja
+
i
-2]
.
The elements of the vectors
v
together form the (
n-k
+1)-by-
nb
matrix
V
which is needed, with
T
and
Y
, to apply the transformation to the unreduced part of the matrix, using an update of the form:
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n-k
) := (
I-V*T*V'
)*(
A
(
ia
:
ia
+
n
-1,
ja
:
ja
+
n-k
)-
Y*V'
).
The contents of
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n-k
) on exit are illustrated by the following example with
n
= 7
,
k
= 3
, and
nb
= 2
:
Equation
where
a
denotes an element of the original matrix
A
(
ia
:
ia
+
n
-1
,
ja
:
ja
+
n-k
),
h
denotes a modified element of the upper Hessenberg matrix
H
, and
vi
denotes an element of the vector defining
H
(
i
)
.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804