PDTRAN(3) MathKeisan ScaLAPACK routine PDTRAN(3)
NAME
PDTRAN - Transpose a matrix
PDTRAN performs the following matrix computation:
C<--beta*C+alpha*op(A)
SYNOPSIS
SUBROUTINE PDTRAN( M, N, ALPHA, A, IA, JA, DESCA, BETA, C, IC, JC,
DESCC )
INTEGER IA,IC,JA,JC,M,N
DOUBLE ALPHA,BETA
INTEGER DESCA,DESCC
DOUBLE A ( * ), C ( * )
PURPOSE
PDTRAN transposes a matrix
sub( C ) := beta*sub( C ) + alpha*op( sub( A ) )
where:
sub( C ) denotes C(IC:IC+M-1,JC:JC+N-1)
sub( A ) denotes A(IA:IA+N-1,JA:JA+M-1)
Thus, op( sub( A ) ) denotes A(IA:IA+N-1,JA:JA+M-1)'. Beta is a
scalar, sub( C ) is an m by n submatrix, and sub( A ) is an n by m sub-
matrix.
Notes
=====
A description vector is associated with each 2D block-cyclicly dis-
tributed matrix. This vector stores the information required to
establish the mapping between a matrix entry and its corresponding
process and memory location.
In the following comments,the character _ should be read as "of the
distributed matrix". Let A be a generic term for any 2D block
cyclicly distributed matrix. Its description vector is DESC_A:
NOTATION STORED IN EXPLANATION
---------------- --------------- ------------------------------------
DTYPE_A (global) DESCA( DTYPE_ ) The descriptor type.
CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating
the NPROW x NPCOL BLACS process grid
A is distributed over. The context
itself is global, but the handle
(the integer value) may vary.
M_A (global) DESCA( M_ ) The number of rows in the distribu-
ted matrix A, M_A >= 0.
N_A (global) DESCA( N_ ) The number of columns in the distri-
buted matrix A, N_A >= 0.
IMB_A (global) DESCA( IMB_ ) The number of rows of the upper left
block of the matrix A, IMB_A > 0.
INB_A (global) DESCA( INB_ ) The number of columns of the upper
left block of the matrix A,
INB_A > 0.
MB_A (global) DESCA( MB_ ) The blocking factor used to distri-
bute the last M_A-IMB_A rows of A,
MB_A > 0.
NB_A (global) DESCA( NB_ ) The blocking factor used to distri-
bute the last N_A-INB_A columns of
A, NB_A > 0.
RSRC_A (global) DESCA( RSRC_ ) The process row over which the first
row of the matrix A is distributed,
NPROW > RSRC_A >= 0.
CSRC_A (global) DESCA( CSRC_ ) The process column over which the
first column of A is distributed.
NPCOL > CSRC_A >= 0.
LLD_A (local) DESCA( LLD_ ) The leading dimension of the local
array storing the local blocks of
the distributed matrix A,
IF( Lc( 1, N_A ) > 0 )
LLD_A >= MAX( 1, Lr( 1, M_A ) )
ELSE
LLD_A >= 1.
Let K be the number of rows of a matrix A starting at the global index
IA,i.e, A( IA:IA+K-1, : ). Lr( IA, K ) denotes the number of rows that
the process of row coordinate MYROW ( 0 <= MYROW < NPROW ) would
receive if these K rows were distributed over NPROW processes. If K
is the number of columns of a matrix A starting at the global index
JA, i.e, A( :, JA:JA+K-1, : ), Lc( JA, K ) denotes the number of
columns that the process MYCOL ( 0 <= MYCOL < NPCOL ) would receive if
these K columns were distributed over NPCOL processes.
The values of Lr() and Lc() may be determined via a call to the func-
tion PB_Cnumroc: Lr( IA, K ) = PB_Cnumroc( K, IA, IMB_A, MB_A, MYROW,
RSRC_A, NPROW ) Lc( JA, K ) = PB_Cnumroc( K, JA, INB_A, NB_A, MYCOL,
CSRC_A, NPCOL )
ARGUMENTS
=========
M (global input) INTEGER
On entry, M specifies the number of rows of the submatrix
sub(C) and the number of columns of the submatrix sub( A ).
M must be at least zero.
N (global input) INTEGER
On entry, N specifies the number of columns of the
submatrix sub( C ) and the number of rows of the submatrix
sub( A ). N must be at least zero.
ALPHA (global input) COMPLEX 16
On entry, ALPHA specifies the scalar alpha.When ALPHA is
supplied as zero then the local entries of the array A
corresponding to the entries of the submatrix sub( A ) need
not be set on input.
A (local input) COMPLEX 16 array
On entry, A is an array of dimension (LLD_A, Ka), where Ka
is at least Lc( 1, JA+M-1 ).Before entry, this array
contains the local entries of the matrix A.
IA (global input) INTEGER
On entry, IA specifies A's global row index, which points
to the beginning of the submatrix sub( A ).
JA (global input) INTEGER
On entry, JA specifies A's global column index, which
points to the beginning of the submatrix sub( A ).
DESCA (global and local input) INTEGER array
On entry, DESCA is an integer array of dimension DLEN_.
This is the array descriptor for the matrix A.
BETA (global input) COMPLEX 16
On entry, BETA specifies the scalar beta. When BETA
is supplied as zero then the local entries of the
array C corresponding to the entries of the submatrix
sub( C ) need not be set on input.
C (local input/local output) COMPLEX 16 array
On entry, C is an array of dimension (LLD_C, Kc), where
Kc is at least Lc( 1, JC+N-1 ). Before entry, this array
contains the local entries of the matrix C.On exit, the
entries of this array corresponding to the local entries
of the submatrix sub( C ) are overwritten by the
local entries of the m by n updated submatrix.
IC (global input) INTEGER
On entry, IC specifies C's global row index, which points
to the beginning of the submatrix sub( C ).
JC (global input) INTEGER
On entry, JC specifies C's global column index, which
points to the beginning of the submatrix sub( C ).
DESCC (global and local input) INTEGER array
On entry, DESCC is an integer array of dimension DLEN_.
This is the array descriptor for the matrix C.
ScaLAPACK version 1.7 13 August 2001 PDTRAN(3)