Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?getri_oop_batch_strided
Computes the inverses of a group of LU factored matrices that are stored at a constant stride from each other in a contiguous block of memory.
Syntax
call sgetri_oop_batch_strided ( n , A , lda , stride_a , ipiv , stride_ipiv , Ainv , ldainv , stride_ainv , batch_size , info )
call dgetri_oop_batch_strided ( n , A , lda , stride_a , ipiv , stride_ipiv , Ainv , ldainv , stride_ainv , batch_size , info )
call cgetri_oop_batch_strided ( n , A , lda , stride_a , ipiv , stride_ipiv , Ainv , ldainv , stride_ainv , batch_size , info )
call zgetri_oop_batch_strided ( n , A , lda , stride_a , ipiv , stride_ipiv , Ainv , ldainv , stride_ainv , batch_size , info )
Include Files
mkl.fi
Description
The ?getri_oop_batch_strided routines are similar to the ?getri counterparts, but instead compute the inverses for a group of LU factored matrices.
All matrices have the same parameters (matrix size, leading dimension) and are stored at constant stride_a from each other in a contiguous block of memory. The output arrays are stored at constant stride_ainv from each other in a contiguous block of memory. Their respective pivot arrays associated with each of the LU-factored A(i) matrices are stored at constant stride_ipiv from each other.
The operation is defined as
for i = 0 … batch_size-1
A(i) is a matrix at offset i * stride_a from A
ipiv(i) is an array at offset i * stride_ipiv from ipiv
Ainv(i) is a matrix at offset i * stride_ainv from Ainv
Ainv(i) := inv(P(i) * L(i)* U(i))
end for
where P(i) is a permutation matrix, L(i) is lower triangular with unit diagonal elements (lower trapezoidal if m > n ), and U(i) is upper triangular (upper trapezoidal if m < n ). The routine uses partial pivoting, with row interchanges.
Input Parameters
n
INTEGER . The number of columns in the A(i) matrices; n ≥ 0.
- A
-
REAL for sgetri_oop_batch_strided DOUBLE PRECISION for dgetri_oop_batch_strided COMPLEX for cgetri_oop_batch_strided DOUBLE COMPLEX for zgetri_oop_batch_strided The A array of size at least stride_a * batch_size holding the A(i) matrices.
lda
INTEGER . Specifies the leading dimension of the A(i) matrices; lda ≥ n .
stride_a
INTEGER . Stride between two consecutive A(i) matrices; ; stride_a ≥ lda * n .
- ipiv
-
Array of size at least stride_ipiv * batch_size , holding the pivot array associated with each of the LU-factored A(i) matrices, as returned by ?getrf_batch_strided .
- stride_ipiv
-
Stride between two consecutive pivot arrays; stride_ipiv ≥ n .
ldainv
INTEGER . Specifies the leading dimension of the Ainv(i) matrices; ldainv ≥ n .
stride_ainv
INTEGER . Stride between two consecutive Ainv(i) matrices; ; stride_ainv ≥ ldainv * n .
- batch_size
-
INTEGER . Number of A(i) matrices to be factorized. Must be at least 0.
Output Parameters
- Ainv
-
Array holding the inverses Ainv(i) matrices. Each matrix is overwritten by their respective L(i) and U(i) factors. The unit diagonal elements of L are not stored.
info
INTEGER .
Array of size batch_size , which reports the factorization status for each matrix.
If info(i) = 0, the execution is successful for A(i) .
If info(i) = - j , the j -th parameter had an illegal value for A(i) .
If info(i) = j , the j -th diagonal element of the factor U(i) is 0, U(i) is exactly singular. Division by - will occur if you use the factor U(i) to solve a system of linear equations.