Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?getri_oop_batch
Computes the inverses for 1 or more groups of LU factored, n-by-n matrices.
Syntax
call sgetri_oop_batch ( n_array , A_array , lda_array , ipiv_array , Ainv_array , ldainv_array , group_count , group_size , info_array )
call dgetri_oop_batch ( n_array , A_array , lda_array , ipiv_array , Ainv_array , ldainv_array , group_count , group_size , info_array )
call cgetri_oop_batch ( n_array , A_array , lda_array , ipiv_array , Ainv_array , ldainv_array , group_count , group_size , info_array )
call zgetri_oop_batch ( n_array , A_array , lda_array , ipiv_array , Ainv_array , ldainv_array , group_count , group_size , info_array )
Include Files
mkl.fi
Description
The ?getri_oop_batch routines are similar to the ?getri counterparts, but instead compute the inverses for groups of n-by-n LU factored matrices, processing one or more groups at once. Each group contains matrices with the same parameters.
The operation is defined as
i = 1
for g = 1 … group_count
n(g) and lda(g) in n_array(g) and lda_array(g)
for j = 1 … group_size(g)
A(i), Ainv(i), ipiv(i) in A_array(i), Ainv_array(i), ipiv_array(i)
Ainv(i) := inv(P(i) * L(i) * U(i))
i = i + 1
end for
end for
where P(i) is a permutation matrix, L(i) is lower triangular with unit diagonal elements and U(i) is upper triangular. These routines use partial pivoting, with row interchanges.
A(i) and Ainv(i) represents matrices stored at the addresses pointed to by A_array and Ainv_array . The dimensions of each matrix is n(g) -by- n(g) , where n(g) is the g -th elements of n_array . Similarly, ipiv(i) represents the pivot arrays stored at addresses pointed to by ipiv_array , where the size of the pivoting arrays is n(g) .
The number of entries in A_array , Ainv_array and ipiv_array is total_batch_count , which is equal to the sum of all the entries in the array group_size .
Refer to ?getri for a detailed description of the inversion of LU factorized matrices.
Input Parameters
n_array
INTEGER . Array of size group_count . For the group g , n(g) = n_array(g) specifies the order of the matrices A(i) in group g .
The value of each element of n_array must be at least zero.
- A_array
-
INTEGER*8 for Intel ® 64 architecture Array, size total_batch_count , of pointers to the A(i) matrices.
lda_array
INTEGER . Array of size group_count . For group g , lda(g) =lda_array(g) specifies the leading dimension of the matricies A(i) in group g , as declared in the calling (sub)program.
The value of lda(g) must be at least max(1, n(g) ).
- ipiv_array
-
INTEGER*8 for Intel ® 64 architecture Array, size total_batch_count , of pointers to the pivot arrays associated with the LU-factored A(i) matrices, as returned by ?getrf_batch .
- group_count
-
INTEGER . Specifies the number of groups. Must be at least 0.
- group_size
-
INTEGER . Array of size group_count . The element group_size(g) specifies the number of matrices in group g . Each element in group_size must be at least 0.
Output Parameters
- Ainv_array
-
INTEGER*8 for Intel ® 64 architecture Array, size total_batch_count , of pointers to the Ainv(i) matrices. Each matrix is overwritten by the n(g) -by- n(g) matrix inv ( A(i) ).
ldainv_array
INTEGER .
Array of size group_count . For group g , ldainv(g) = ldainv_array(g) specifies the leading dimension of the matrices Ainv(i) in group g . The value of ldainv(g) must be at least max(1, n(g) ).
info_array
INTEGER .
Array of size total_batch_count , which reports the inversion 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 singular, and the inversion could not be completed.
Related Information
Refer to ?getri_oop_batch_strided , which computes inverses for a group of n -by- n matrices that are allocated at a constant stride from each other in the same contiguous block of memory.