Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
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

p?gbtrs

Solves a system of distributed linear equations with a general band matrix, using the LU factorization computed by p?gbtrf.

Syntax

void psgbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , float *a , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , float *b , MKL_INT *ib , MKL_INT *descb , float *af , MKL_INT *laf , float *work , MKL_INT *lwork , MKL_INT *info );

void pdgbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , double *a , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , double *b , MKL_INT *ib , MKL_INT *descb , double *af , MKL_INT *laf , double *work , MKL_INT *lwork , MKL_INT *info );

void pcgbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex8 *a , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_Complex8 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex8 *af , MKL_INT *laf , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );

void pzgbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex16 *a , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_Complex16 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex16 *af , MKL_INT *laf , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );

Include Files

  • mkl_scalapack.h

Description

The p?gbtrs function solves a system of distributed linear equations with a general band distributed matrix sub(A) = A(1:n, ja:ja+n-1) using the LU factorization computed by p?gbtrf.

The system has one of the following forms specified by trans:

sub(A)*X = sub(B) (no transpose),

sub(A)T*X = sub(B) (transpose),

sub(A)H*X = sub(B) (conjugate transpose),

where sub(B) = B(ib:ib+n-1, 1:nrhs).

Before calling this function,you must call p?gbtrf to compute the LU factorization of sub(A).

Input Parameters

trans

(global) Must be 'N' or 'T' or 'C'.

Indicates the form of the equations:

If trans = 'N', then sub(A)*X = sub(B) is solved for X.

If trans = 'T', then sub(A)T*X = sub(B) is solved for X.

If trans = 'C', then sub(A)H *X = sub(B) is solved for X.

n

(global) The number of linear equations; the order of the distributed matrix sub(A) (n 0).

bwl

(global) The number of sub-diagonals within the band of A( 0 ≤ bwln-1 ).

bwu

(global) The number of super-diagonals within the band of A( 0 ≤ bwun-1 ).

nrhs

(global) The number of right hand sides; the number of columns of the distributed matrix sub(B) (nrhs 0).

a, b

(local)

Pointers into the local memory to arrays of local sizes lld_a*LOCc(ja+n-1) and lld_b*LOCc(nrhs), respectively.

The array a contains details of the LU factorization of the distributed band matrix A.

On entry, the array b contains the local pieces of the right hand sides B(ib:ib+n-1, 1:nrhs).

ja

(global) The index in the global matrix A indicating the start of the matrix to be operated on ( which may be either all of A or a submatrix of A).

desca

(global and local) array of size dlen_. The array descriptor for the distributed matrix A.

If dtype_a = 501, then dlen_ 7;

else if dtype_a = 1, then dlen_ 9.

ib

(global) The index in the global matrix A indicating the start of the matrix to be operated on (which may be either all of A or a submatrix of A).

descb

(global and local) array of size dlen_. The array descriptor for the distributed matrix A.

If dtype_b = 502, then dlen_ 7;

else if dtype_b = 1, then dlen_ 9.

laf

(local) The size of the array af.

Must be lafnb_a*(bwl+bwu)+6*(bwl+bwu)*(bwl+2*bwu).

If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af[0].

work

(local) Same type as a. Workspace array of size lwork.

lwork

(local or global) The size of the work array, must be at least lworknrhs*(nb_a+2*bwl+4*bwu).

Output Parameters

ipiv

(local) array.

The size of ipiv must be nb_a.

Contains pivot indices for local factorizations. Note that you should not alter the contents of this array between factorization and solve.

b

On exit, overwritten by the local pieces of the solution distributed matrix X.

af

(local)

Array of size laf.

Auxiliary Fill-in space. The fill-in space is created in a call to the factorization function p?gbtrf and is stored in af.

Note that if a linear system is to be solved using p?gbtrs after the factorization function,af must not be altered after the factorization.

work[0]

On exit, work[0] contains the minimum value of lwork required for optimum performance.

info

If info=0, the execution is successful.

info < 0:

If the i-th argument is an array and the j-th entry, indexed j - 1, had an illegal value, then info = -(i*100+j); if the i-th argument is a scalar and had an illegal value, then info = -i.

See Also