Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

p?larzb

Applies a block reflector or its transpose/conjugate-transpose as returned by
p?tzrzf
to a general matrix.

Syntax

void
pslarzb
(
char
*side
,
char
*trans
,
char
*direct
,
char
*storev
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
float
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
float
*t
,
float
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
float
*work
);
void
pdlarzb
(
char
*side
,
char
*trans
,
char
*direct
,
char
*storev
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
double
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
double
*t
,
double
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
double
*work
);
void
pclarzb
(
char
*side
,
char
*trans
,
char
*direct
,
char
*storev
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
MKL_Complex8
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_Complex8
*t
,
MKL_Complex8
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex8
*work
);
void
pzlarzb
(
char
*side
,
char
*trans
,
char
*direct
,
char
*storev
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
MKL_Complex16
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_Complex16
*t
,
MKL_Complex16
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex16
*work
);
Include Files
  • mkl_scalapack.h
Description
The
p?larzb
function
applies a real/complex block reflector
Q
or its transpose
Q
T
(conjugate transpose
Q
H
for complex flavors) to a real/complex distributed
m
-by-
n
matrix sub(
C
) =
C
(
ic
:
ic
+
m
-1
,
jc
:
jc
+
n
-1)
from the left or the right.
Q
is a product of
k
elementary reflectors as returned by
p?tzrzf
.
Currently, only
storev
=
'R'
and
direct
=
'B'
are supported.
Input Parameters
side
(global)
if
side
=
'L'
: apply
Q
or
Q
T
(
Q
H
for complex flavors) from the Left;
if
side
=
'R'
: apply
Q
or
Q
T
(
Q
H
for complex flavors) from the Right.
trans
(global)
if
trans
=
'N'
: No transpose, apply
Q
;
If
trans
=
'T'
: Transpose, apply
Q
T
(real flavors);
If
trans
=
'C'
: Conjugate transpose, apply
Q
H
(complex flavors).
direct
(global)
Indicates how
H
is formed from a product of elementary reflectors.
if
direct
=
'F'
:
H
=
H
(1)*
H
(2)*...*
H
(
k
)
- forward (not supported) ;
if
direct
=
'B'
:
H
=
H
(
k
)*...*
H
(2)*
H
(1)
- backward.
storev
(global)
Indicates how the vectors that define the elementary reflectors are stored:
if
storev
=
'C'
: columnwise (not supported ).
if
storev
=
'R'
: rowwise.
m
(global)
The number of rows in the distributed submatrix sub(
C
).
(
m
0)
.
n
(global)
The number of columns in the distributed submatrix sub(
C
).
(
n
0)
.
k
(global)
The order of the matrix
T
. (= the number of elementary reflectors whose product defines the block reflector).
l
(global)
The columns of the distributed submatrix sub(
A
) containing the meaningful part of the Householder reflectors.
If
side
=
'L'
,
m
l
0
,
if
side
=
'R'
,
n
l
0
.
v
(local).
Pointer into the local memory to an array of size
lld_v
*
LOCc
(
jv
+
m
-1)
if
side
=
'L'
,
lld_v
*
LOCc
(
jv
+
m
-1)
if
side
=
'R'
.
It contains the local pieces of the distributed vectors
V
representing the Householder transformation as returned by
p?tzrzf
.
lld_v
LOCr
(
iv
+
k
-1).
iv
,
jv
(global)
The row and column indices in the global matrix
V
indicating the first row and the first column of the submatrix sub(
V
), respectively.
descv
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
V
.
t
(local)
Array of size
mb_v
*
mb_v
.
The lower triangular matrix
T
in the representation of the block reflector.
c
(local).
Pointer into the local memory to an array of size
lld_c
*
LOCc
(
jc
+
n
-1)
.
On entry, the
m
-by-
n
distributed matrix sub(
C
).
ic
,
jc
(global)
The row and column indices in the global matrix
C
indicating the first row and the first column of the submatrix sub(
C
), respectively.
descc
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
C
.
work
(local).
Array of size
lwork
.
If storev = 'C' ,
  if side = 'L' ,
    lwork ≥(nqc0 + mpc0)* k
  else if side = 'R' ,
    lwork ≥ (nqc0 + max(npv0 + numroc(numroc(n+icoffc, nb_v, 0, 0, npcol),
   nb_v, 0, 0, lcmq), mpc0))* k
  end if
else if storev = 'R' ,
  if side = 'L' ,
    lwork ≥ (mpc0 + max(mqv0 + numroc(numroc(m+iroffc, mb_v, 0, 0, nprow),
        mb_v, 0, 0, lcmp), nqc0))* k
  else if side = 'R' ,
    lwork ≥ (mpc0 + nqc0) * k
  end if
end if.
Here
lcmq
=
lcm
/
npcol
with
lcm
= iclm(
nprow
,
npcol
)
,
iroffv
=
mod
(
iv
-1,
mb_v
)
,
icoffv
=
mod
(
jv
-
1
,
nb_v
)
,
ivrow
=
indxg2p
(
iv
,
mb_v
,
myrow
,
rsrc
_v,
nprow
)
,
ivcol
=
indxg2p
(
jv
,
nb_v
,
mycol
,
csrc_v
,
npcol
)
,
mqv0
=
numroc
(
m
+
icoffv
,
nb_v
,
mycol
,
ivcol
,
npcol
)
,
npv0
=
numroc
(
n
+
iroffv
,
mb_v
,
myrow
,
ivrow
,
nprow
)
,
iroffc
=
mod
(
ic
-1,
mb_c
),
icoffc
=
mod
(
jc
-1,
nb_c
)
,
icrow
=
indxg2p
(
ic
,
mb_c
,
myrow
,
rsrc
_c,
nprow
)
,
iccol
=
indxg2p
(
jc
,
nb_c
,
mycol
,
csrc
_c,
npcol
)
,
mpc0
=
numroc
(
m
+
iroffc
,
mb_c
,
myrow
,
icrow
,
nprow
)
,
npc0
=
numroc
(
n
+
icoffc
,
mb_c
,
myrow
,
icrow
,
nprow
)
,
nqc0
=
numroc
(
n
+
icoffc
,
nb_c
,
mycol
,
iccol
,
npcol
)
,
ilcm
,
indxg2p
, and
numroc
are ScaLAPACK tool functions;
myrow
,
mycol
,
nprow
, and
npcol
can be determined by calling the
function
blacs_gridinfo
.
Output Parameters
c
(local).
On exit, sub(
C
) is overwritten by the
Q
*sub(
C
),
or
Q'
*sub(
C
),
or
sub(
C
)*
Q
, or
sub(
C
)*
Q'
, where
Q'
is the transpose (conjugate transpose) of
Q
.

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