PSBLAS
User’s and Reference Guide
A reference guide for the Parallel Sparse BLAS library
Salvatore Filippone
Alfredo Buttari
Software version: 3.8.0
May 1st, 2022

Contents
1 Introduction
2 General overview
 2.1 Basic Nomenclature
 2.2 Library contents
 2.3 Application structure
 2.4 Programming model
3 Data Structures and Classes
 3.1 Descriptor data structure
 3.2 Sparse Matrix class
 3.3 Dense Vector Data Structure
 3.4 Preconditioner data structure
 3.5 Heap data structure
4 Computational routines
 4.1 psb_geaxpby — General Dense Matrix Sum
 4.2 psb_gedot — Dot Product
 4.3 psb_gedots — Generalized Dot Product
 4.4 psb_normi — Infinity-Norm of Vector
 4.5 psb_geamaxs — Generalized Infinity Norm
 4.6 psb_norm1 — 1-Norm of Vector
 4.7 psb_geasums — Generalized 1-Norm of Vector
 4.8 psb_norm2 — 2-Norm of Vector
 4.9 psb_genrm2s — Generalized 2-Norm of Vector
 4.10 psb_norm1 — 1-Norm of Sparse Matrix
 4.11 psb_normi — Infinity Norm of Sparse Matrix
 4.12 psb_spmm — Sparse Matrix by Dense Matrix Product
 4.13 psb_spsm — Triangular System Solve
 4.14 psb_gemlt — Entrywise Product
 4.15 psb_gediv — Entrywise Division
 4.16 psb_geinv — Entrywise Inversion
5 Communication routines
 5.1 psb_halo — Halo Data Communication
 5.2 psb_ovrl — Overlap Update
 5.3 psb_gather — Gather Global Dense Matrix
 5.4 psb_scatter — Scatter Global Dense Matrix
6 Data management routines
 6.1 psb_cdall — Allocates a communication descriptor
 6.2 psb_cdins — Communication descriptor insert routine
 6.3 psb_cdasb — Communication descriptor assembly routine
 6.4 psb_cdcpy — Copies a communication descriptor
 6.5 psb_cdfree — Frees a communication descriptor
 6.6 psb_cdbldext — Build an extended communication descriptor
 6.7 psb_spall — Allocates a sparse matrix
 6.8 psb_spins — Insert a set of coefficients into a sparse matrix
 6.9 psb_spasb — Sparse matrix assembly routine
 6.10 psb_spfree — Frees a sparse matrix
 6.11 psb_sprn — Reinit sparse matrix structure for psblas routines.
 6.12 psb_geall — Allocates a dense matrix
 6.13 psb_geins — Dense matrix insertion routine
 6.14 psb_geasb — Assembly a dense matrix
 6.15 psb_gefree — Frees a dense matrix
 6.16 psb_gelp — Applies a left permutation to a dense matrix
 6.17 psb_glob_to_loc — Global to local indices convertion
 6.18 psb_loc_to_glob — Local to global indices conversion
 6.19 psb_is_owned —
 6.20 psb_owned_index —
 6.21 psb_is_local —
 6.22 psb_local_index —
 6.23 psb_get_boundary — Extract list of boundary elements
 6.24 psb_get_overlap — Extract list of overlap elements
 6.25 psb_sp_getrow — Extract row(s) from a sparse matrix
 6.26 psb_sizeof — Memory occupation
 6.27 Sorting utilities —
7 Parallel environment routines
 7.1 psb_init — Initializes PSBLAS parallel environment
 7.2 psb_info — Return information about PSBLAS parallel environment
 7.3 psb_exit — Exit from PSBLAS parallel environment
 7.4 psb_get_mpi_comm — Get the MPI communicator
 7.5 psb_get_mpi_rank — Get the MPI rank
 7.6 psb_wtime — Wall clock timing
 7.7 psb_barrier — Sinchronization point parallel environment
 7.8 psb_abort — Abort a computation
 7.9 psb_bcast — Broadcast data
 7.10 psb_sum — Global sum
 7.11 psb_max — Global maximum
 7.12 psb_min — Global minimum
 7.13 psb_amx — Global maximum absolute value
 7.14 psb_amn — Global minimum absolute value
 7.15 psb_nrm2 — Global 2-norm reduction
 7.16 psb_snd — Send data
 7.17 psb_rcv — Receive data
8 Error handling
 8.1 psb_errpush — Pushes an error code onto the error stack
 8.2 psb_error — Prints the error stack content and aborts execution
 8.3 psb_set_errverbosity — Sets the verbosity of error messages
 8.4 psb_set_erraction — Set the type of action to be taken upon error condition
9 Utilities
 9.1 hb_read — Read a sparse matrix from a file in the Harwell–Boeing format
 9.2 hb_write — Write a sparse matrix to a file in the Harwell–Boeing format
 9.3 mm_mat_read — Read a sparse matrix from a file in the MatrixMarket format
 9.4 mm_array_read — Read a dense array from a file in the MatrixMarket format
 9.5 mm_mat_write — Write a sparse matrix to a file in the MatrixMarket format
 9.6 mm_array_write — Write a dense array from a file in the MatrixMarket format
10 Preconditioner routines
 10.1 init — Initialize a preconditioner
 10.2 build — Builds a preconditioner
 10.3 apply — Preconditioner application routine
 10.4 descr — Prints a description of current preconditioner
 10.5 clone — clone current preconditioner
 10.6 free — Free a preconditioner
11 Iterative Methods
 11.1 psb_krylov — Krylov Methods Driver Routine
References