# Development of Scientific Software

 image/svg+xml Write 80% of your source code with yourself and your fellow programmers in mind, that is, to make your life easier, not your computer's life easier. The CPU will never read your source code without an interpreter or compiler anyway. D. Rouson, J. Xia, X. Xu - Scientific Software Design

## Parallel Sparse Computation Toolkit

 Sparse linear algebra is essential for a wide variety of scientific applications. The availability of massively parallel sparse solvers and preconditioners lies at the core of pretty much all multi-physics and multi-scale simulations. Technology is nowadays expanding to target exascale platforms. With this work, we then try to face these challenges by developing both algorithmic and theoretical strategies to make Exascale Computing possible. I am a collaborator on the PSCTOOLKIT, and I work on the development of the two main packages PSBLAS and AMG4PSBLAS. These are Fortran 2003 libraries capable of running sparse linear algebra, Krylov methods, and several type of preconditioners on machines with tens of thousand of cores. All information is available on psctoolkit.github.io.

## GitHub Repository

Most of my works contain numerical tests of some kind. For some of them, for which the code / implementation is not completely transparent, I made the code available on my GitHub repository.

• Nonlocal Pagerank. Matlab codes for the NonLocalPageRank Algorithm. This repository contains the codes used for generating the examples in the paper
• Cipolla, Stefano; Durastante, Fabio; Tudisco, Francesco. Nonlocal Pagerank. ESAIM Mathematical Modelling and Numerical Analysis (2020), In Press.
• IRfun. Regularization of Inverse Problems by an Approximate Matrix-Function Technique (Matlab). The code in this repository is discussed in the paper:
• Cipolla, Stefano; Donatelli, Marco; Durastante, Fabio. Regularization of Inverse Problems by an Approximate Matrix–Function Technique. Numer. Algorithms In Press.

### PSFun: Parallel Sparse Function

This is probably the biggest new programming project I'm working on. The aim of this library is the computation of matrix-function vector products $$\mathbf{y} = f(A)\mathbf{x}, \qquad A \in \mathbb{R}^{N \times N}, \; \mathbf{x},\mathbf{y} \in \mathbb{R}^{N},$$ for large and sparse matrix in a distributed setting. The library is based on PSBLAS and AMG4PSBLAS and exploits their architecture to manage the use of sparse linear algebra in a distributed environment and the solution of auxiliary linear systems necessary for the calculation of the matrix function.

• PSFun. The code, that is still in full development, is available on GitHub,
• A draft of the documentation, which is updated as development progresses, is available at cirdans-home.github.io/psfun/

Collaborators on this project are more than welcome!