The PSBLAS library consists of various classes of subroutines:

**Computational routines**- comprising:
- Sparse matrix by dense matrix product;
- Sparse triangular systems solution for block diagonal matrices;
- Vector and matrix norms;
- Dense matrix sums;
- Dot products.

**Communication routines**- handling halo and overlap communications;
**Data management and auxiliary routines**- including:
- Parallel environment management
- Communication descriptors allocation;
- Dense and sparse matrix allocation;
- Dense and sparse matrix build and update;
- Sparse matrix and data distribution preprocessing.

**Preconditioner routines****Iterative methods**- a subset of Krylov subspace iterative methods

- all the symbols (i.e. subroutine names, data types...) are
prefixed by
`psb_`

- all the data type names are suffixed by
`_type`

- all the constant values are suffixed by
`_`

- all the subroutine names follow the rule
`psb_xxname`

where`xx`

can be either:`ge`

: the routine is related to dense data,`sp`

: the routine is related to sparse data,`cd`

: the routine is related to communication descriptor (see 3).

`psb_geins`

,`psb_spins`

and`psb_cdins`

perform the same action (see 6) on dense matrices, sparse matrices and communication descriptors respectively. Interface overloading allows the usage of the same subroutine interfaces for both real and complex data.

**global**- For input arguments, the value must be the same on all processes participating in the subroutine call; for output arguments the value is guaranteed to be the same.
**local**- Each process has its own value(s) independently.