Massively Parallel Solvers

Designed to take full advantage of today's​ most powerful petascale supercomputers


Parallel sparse linear solver

ESPRESO framework contains several highly scalable solvers based on the methods of domain decomposition which allows the computational capacity of the state-of-the-art supercomputers to be fully utilized and thus solve problems with billions of unknowns.

CPU version

for Massively Parallel systems

GPU version

Nvidia GPU accelerated version for systems with hybrid architectures

Automatic tuning

solver setting by evolutionary and swarm optimisation algorithms

Strong scalability - elasticity problem

300 Million unknowns Jet Engine case

552 CPU cores
683 seconds
1,128 CPU cores
369 seconds
2,232 CPU cores
195 seconds
4,464 CPU cores
87 seconds
8,928 CPU cores
34 seconds

Successfully Tested on large Peta-scale machines

Largest problem solved by ESPRESO in 160 seconds

Billion unknowns
#CPU Cores
ESPRESO solver is an In-house developed highly efficient parallel solver that contains several FETI based algorithms including Hybrid Total FETI method suitable for parallel machines with tens or hundreds of thousands of cores. The solver is based on a highly efficient communication layer on top of MPI. It is not just an MPI code but, as many modern parallel applications, it uses the hybrid parallelization. The three levels of parallelization are message passing, threading using OpenMP and vectorization using Intel MKL and OpenMP.

Hybrid solver strong scalability

Heat transfer

20 billion unknowns


11 bilion unknowns

65,536 CPU cores
82 seconds
128,000 CPU cores
40 seconds
281,216 CPU cores
18 seconds
65,536 CPU cores
135 seconds
128,000 CPU cores
59 seconds
281,216 CPU cores
22 seconds

We also offer our massively parallel solver as a third party library. To interface the ESPRESO with the third party software, a general API has been implemented. The API has been successfully used to connect the ESPRESO with the Elmer. Even though the ESPRESO is C++ library, the API uses plain C only. Hence, it is easy to use it with various other languages such as Fortran

Quadratic programming

Scalable nonlinear solvers

For nonlinear problems with equality and inequality conditions, we implement in-house solver based on quadratic programming problems. This solver in combination with domain decomposition techniques brings to users a possibility to solve contact problems in parallel with almost linear complexity

semi-monotonic augmented Lagrangian method with separable convex constraints and general equality constraints

modified proportioning with the reduced gradient projection

In-house constrained QP algorithm

We combine augmented Lagrangian based solver with active set reflecting restarted preconditioned conjugate gradients in inner loop, and FETI based domain decomposition techniques. By this we are able to solve especially large contact problems efficiently on HPC infrastructures.

Available third party solvers

For highly heterogenous systems, algebraic multigrid or direct solvers can be used for solving defined problems.

Multigrid based iterative solver

multi-core and multi-node parallel direct solvers