Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
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

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.