Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?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 Ai matrices are stored at constant stride_ipiv from each other.

The operation is defined as

for i = 0 … batch_size-1
	Ai is a matrix at offset i * stride_a from A
	ipivi is an array at offset i * stride_ipiv from ipiv
	Ainvi is a matrix at offset i * stride_ainv from Ainv
	Ainvi :=  inv(Pi * Li* Ui)
end for

where Pi is a permutation matrix, Li is lower triangular with unit diagonal elements (lower trapezoidal if m>n), and Ui 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 Ai 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 Ai matrices.

lda

INTEGER. Specifies the leading dimension of the Ai matrices; ldan.

stride_a

INTEGER. Stride between two consecutive Ai matrices; ; stride_alda * n.

ipiv
INTEGER.

Array of size at least stride_ipiv * batch_size, holding the pivot array associated with each of the LU-factored Ai matrices, as returned by ?getrf_batch_strided.

stride_ipiv
INTEGER.

Stride between two consecutive pivot arrays; stride_ipivn.

ldainv

INTEGER. Specifies the leading dimension of the Ainvi matrices; ldainvn.

stride_ainv

INTEGER. Stride between two consecutive Ainvi matrices; ; stride_ainvldainv * n.

batch_size

INTEGER.

Number of Ai matrices to be factorized. Must be at least 0.

Output Parameters

Ainv

Array holding the inverses Ainvi matrices. Each matrix is overwritten by their respective Li and Uifactors. 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 Ai.

If info(i) = -j, the j-th parameter had an illegal value for Ai.

If info(i) = j, the j-th diagonal element of the factor Ui is 0, Ui is exactly singular. Division by - will occur if you use the factor Ui to solve a system of linear equations.