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?dbsv

Solves a general band system of linear equations.

Syntax

void psdbsv (MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , float *a , MKL_INT *ja , MKL_INT *desca , float *b , MKL_INT *ib , MKL_INT *descb , float *work , MKL_INT *lwork , MKL_INT *info );

void pddbsv (MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , double *a , MKL_INT *ja , MKL_INT *desca , double *b , MKL_INT *ib , MKL_INT *descb , double *work , MKL_INT *lwork , MKL_INT *info );

void pcdbsv (MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex8 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );

void pzdbsv (MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex16 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );

Include Files

  • mkl_scalapack.h

Description

The p?dbsvfunction solves the following system of linear equations:

A(1:n, ja:ja+n-1)* X = B(ib:ib+n-1, 1:nrhs),

where A(1:n, ja:ja+n-1) is an n-by-n real/complex banded diagonally dominant-like distributed matrix with bandwidth bwl, bwu.

Gaussian elimination without pivoting is used to factor a reordering of the matrix into LU.

Product and Performance Information

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.

Notice revision #20201201

Input Parameters

n

(global) The order of the distributed submatrix A, (n 0).

bwl

(global) Number of subdiagonals. 0 ≤ bwln-1.

bwu

(global) Number of subdiagonals. 0 ≤ bwun-1.

nrhs

(global) The number of right-hand sides; the number of columns of the distributed submatrix B, (nrhs ≥ 0).

a

(local).

Pointer into the local memory to an array with leading size lld_a ≥ (bwl+bwu+1) (stored in desca). On entry, this array contains the local pieces of the distributed matrix.

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.

If 1d type (dtype_a=501 or 502), dlen ≥ 7;

If 2d type (dtype_a=1), dlen ≥ 9.

The array descriptor for the distributed matrix A.

Contains information of mapping of A to memory.

b

(local)

Pointer into the local memory to an array of local lead size lld_bnb. On entry, this array contains the local pieces of the right hand sides B(ib:ib+n-1, 1:nrhs).

ib

(global) The row index in the global matrix B indicating the first row of the matrix to be operated on (which may be either all of b or a submatrix of B).

descb

(global and local) array of size dlen.

If 1d type (dtype_b =502), dlen ≥ 7;

If 2d type (dtype_b =1), dlen ≥ 9.

The array descriptor for the distributed matrix B.

Contains information of mapping of B to memory.

work

(local).

Temporary workspace. This space may be overwritten in between calls to functions. work must be the size given in lwork.

lwork

(local or global) Size of user-input workspace work. If lwork is too small, the minimal acceptable size will be returned in work[0] and an error code is returned.

lworknb(bwl+bwu)+6max(bwl,bwu)*max(bwl,bwu)+max((max(bwl,bwu)nrhs), max(bwl,bwu)*max(bwl,bwu))

Output Parameters

a

On exit, this array contains information containing details of the factorization.

Note that permutations are performed on the matrix, so that the factors returned are different from those returned by LAPACK.

b

On exit, this contains the local piece of the solutions distributed matrix X.

work

On exit, work[0] contains the minimal lwork.

info

(local) If info=0, the execution is successful.

< 0: If the i-th argument is an array and the j-entry 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.

> 0: If info = k < NPROCS, the submatrix stored on processor info and factored locally was not positive definite, and the factorization was not completed.

If info = k > NPROCS, the submatrix stored on processor info-NPROCS representing interactions with other processors was not positive definite, and the factorization was not completed.

See Also