PSGETRI(l) | LAPACK routine (version 1.5) | PSGETRI(l) |
NAME¶
PSGETRI - compute the inverse of a distributed matrix using the LU factorization computed by PSGETRFSYNOPSIS¶
- SUBROUTINE PSGETRI(
- N, A, IA, JA, DESCA, IPIV, WORK, LWORK, IWORK, LIWORK, INFO )
- INTEGER
- IA, INFO, JA, LIWORK, LWORK, N
- INTEGER
- DESCA( * ), IPIV( * ), IWORK( * )
- REAL
- A( * ), WORK( * )
PURPOSE¶
PSGETRI computes the inverse of a distributed matrix using the LU factorization computed by PSGETRF. This method inverts U and then computes the inverse of sub( A ) = A(IA:IA+N-1,JA:JA+N-1) denoted InvA by solving the system InvA*L = inv(U) for InvA.DTYPE_A = 1.
the BLACS process grid A is distribu-
ted over. The context itself is glo-
bal, but the handle (the integer
value) may vary.
array A.
array A.
the rows of the array.
the columns of the array.
row of the array A is distributed. CSRC_A (global) DESCA( CSRC_ ) The process column over which the
first column of the array A is
distributed.
array. LLD_A >= MAX(1,LOCr(M_A)).
LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ),
LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ). An upper bound for these quantities may be computed by:
LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A
LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A
ARGUMENTS¶
- N (global input) INTEGER
- The number of rows and columns to be operated on, i.e. the order of the distributed submatrix sub( A ). N >= 0.
- A (local input/local output) REAL pointer into the
- local memory to an array of dimension (LLD_A,LOCc(JA+N-1)). On entry, the local pieces of the L and U obtained by the factorization sub( A ) = P*L*U computed by PSGETRF. On exit, if INFO = 0, sub( A ) contains the inverse of the original distributed matrix sub( A ).
- IA (global input) INTEGER
- The row index in the global array A indicating the first row of sub( A ).
- JA (global input) INTEGER
- The column index in the global array A indicating the first column of sub( A ).
- DESCA (global and local input) INTEGER array of dimension DLEN_.
- The array descriptor for the distributed matrix A.
- IPIV (local input) INTEGER array, dimension LOCr(M_A)+MB_A
- keeps track of the pivoting information. IPIV(i) is the global row index the local row i was swapped with. This array is tied to the distributed matrix A.
- WORK (local workspace/local output) REAL array,
- dimension (LWORK) On exit, WORK(1) returns the minimal and optimal LWORK.
- LWORK (local or global input) INTEGER
- The dimension of the array WORK. LWORK is local input and
must be at least LWORK = LOCr(N+MOD(IA-1,MB_A))*NB_A. WORK is used to keep
a copy of at most an entire column block of sub( A ).
- IWORK (local workspace/local output) INTEGER array,
- dimension (LIWORK) On exit, IWORK(1) returns the minimal and optimal LIWORK.
- LIWORK (local or global input) INTEGER
- The dimension of the array IWORK used as workspace for
physically transposing the pivots. LIWORK is local input and must be at
least if NPROW == NPCOL then LIWORK = LOCc( N_A + MOD(JA-1, NB_A) ) +
NB_A, else LIWORK = LOCc( N_A + MOD(JA-1, NB_A) ) + MAX(
CEIL(CEIL(LOCr(M_A)/MB_A)/(LCM/NPROW)), NB_A ) where LCM is the least
common multiple of process rows and columns (NPROW and NPCOL). end if
- INFO (global output) INTEGER
- = 0: successful exit
12 May 1997 | LAPACK version 1.5 |