Parallel & scientific computing

Parallel thinking.
Scientific progress.

I’m Eero Vainikko, Professor of Distributed Systems at the University of Tartu. I study how parallel algorithms and modern hardware can work together to solve demanding scientific problems.

FIG. 01 / DOMAIN DECOMPOSITIONMatching subdomains in the xy-plane.
4 × 4 subdomains · 8 × 8 cells each
Institute of Computer ScienceUniversity of Tartu, Estonia
Computer Science MScProgramme director & thesis supervisor
Delta Centre · Room 3038Narva mnt 18, Tartu
01 / Research

From mathematical ideas
to scalable computation.

My work connects numerical methods, parallel programming, and the practical challenges of scientific computing.

01

Computing on GPUs

Efficient Krylov solvers, kernel fusion, mixed precision and multiple right-hand sides. Much of modern GPU performance depends on how often data moves—and whether algorithms can be reorganised to move it less.

GPU COMPUTING / KRYLOV METHODS / KERNEL FUSION / MIXED PRECISION
02

Domain decomposition

Breaking large PDE problems into smaller, interacting subproblems. Overlapping Schwarz methods and preconditioning for challenging Helmholtz systems.

SCHWARZ METHODS / HELMHOLTZ / FGMRES
03

Parallel scientific systems

Connecting algorithms with their execution on real machines. Performance, communication, and reproducible experiments across CPUs, GPUs, and HPC systems.

HPC / PARALLEL ALGORITHMS / PERFORMANCE
Selected work / DD29 proceedings

Solving Helmholtz problems
with GPU-accelerated FGMRES.

Ziya Mammadov & Eero Vainikko

Combining an outer flexible Krylov solver with overlapping Schwarz preconditioning and GPU subdomain solvers. The work explores simultaneous local solves and the role of multiple right-hand sides in efficient computation.

Read the paper · PDF GPU-Accelerated FGMRES with Overlapping Schwarz Preconditioner for Efficient Solution of Helmholtz Equations
02 / MSc thesis supervision

A good question.
A place to begin.

Interested in parallel computing? Explore a possible thesis direction, then get in touch to shape a question around your interests and experience.

6 topics shown
01

GPU-resident local solvers for domain decomposition

Can keeping local iterations and working data on the GPU reduce the cost of Schwarz preconditioning?

GPU + DOMAIN DECOMPOSITION

Research continuation · implementation and numerical methods

A starting experiment

Compare CPU local solves, batched OpenCL solves and a kernel that performs several local iterations before returning. Vary subdomain size, overlap and precision; measure total solution time, true residual and kernel launches.

Useful background

Python or C/C++, GPU programming and iterative methods. Begin with small subdomains and a model elliptic problem; extend to Helmholtz once the baseline is reliable. Investigate register and local-memory limits.

Discuss this direction
02

Kernel fusion for GPU Block-CG

Can solving several related systems together reduce memory traffic and kernel-launch overhead?

GPU + MULTIPLE RHS

Implementation-focused · a clear starting project

A starting experiment

Compare independent CG solves, Block-CG and a fused GPU Block-CG implementation. Vary the number of right-hand sides; measure memory traffic, launch count, runtime and true residuals.

Useful background

Linear algebra and GPU programming. Start with Hermitian positive-definite systems. Check loss of rank and numerical stability; general Helmholtz systems require a suitable alternative to standard Block-CG.

Discuss this direction
Kernel fusion · a vector-update example
Separate kernels
Update xwrite / readScale x
Fused kernel
Update + scale xkeep intermediate values in registers

Compatible operations can share a memory pass. Whole solver iterations may still require separate kernels and global reductions.

03

Adaptive-precision FGMRES–RAS

Can local precision and stopping tolerances adapt as the outer solver converges?

GPU + PARALLEL SOLVERS

Numerical-methods-focused · accuracy and performance

A starting experiment

Compare an FP64 baseline with FP32 local solves and adaptive precision or local stopping tolerances inside flexible GMRES with restricted additive Schwarz. Measure outer iterations, true residuals evaluated in FP64 and total runtime.

Useful background

Floating-point arithmetic, iterative methods and Python or C/C++. Change one policy at a time and test robustness across problem sizes and conditioning.

Discuss this direction
04

Overlapping communication and computation in Krylov solvers

How much communication can be hidden behind useful GPU computation?

DISTRIBUTED / HPC

Advanced project · multi-GPU or distributed experiments

A starting experiment

Start with conventional and pipelined CG on positive-definite problems. Measure reductions, halo exchanges and GPU work with multiple MPI processes or GPUs; compare overlap efficiency, true residuals and total solution time.

Useful background

MPI, GPU programming and Krylov methods. Map dependencies before changing scheduling. Extending overlap to FGMRES–RAS is an advanced step; overlap does not imply asynchronous Schwarz iterations.

Discuss this direction
05

GPU-friendly ILU and IC preconditioners

Can greater parallelism compensate for a weaker, cheaper preconditioner?

GPU + PRECONDITIONING

Implementation and numerical methods · local solver performance

A starting experiment

Compare conventional sparse triangular solves with a fine-grained decomposed or block-local alternative. Measure setup and application costs, outer convergence and complete solution time.

Useful background

Sparse linear algebra and GPU programming. Begin with one preconditioner and a small benchmark family. Use IC with suitable positive-definite systems and ILU with an appropriate outer solver.

Discuss this direction
06

Learning to choose Schwarz parameters

Can inexpensive problem features help select overlap, local tolerance or coarse correction?

AI FOR HPC

Experimental project · a focused AI-for-HPC question

A starting experiment

Build a benchmark dataset for a small set of Schwarz configurations. Compare a lightweight learned selector with fixed defaults and simple heuristics, including feature extraction, training and tuning costs.

Useful background

Python, basic machine learning and iterative solvers. Start by selecting one parameter. Separate training and test problem families and evaluate the selected configuration by total solver time and reliability.

Discuss this direction
Further research directions

Other interests for discussion include asynchronous and fault-tolerant Schwarz methods; energy-to-solution optimisation; performance portability across GPU architectures; Processing-in-Memory modelling for Krylov solvers; automatic kernel-fusion selection; LLM-assisted HPC optimisation; reproducible HPC workflows with Jupyter; and numerical stability of invertible neural networks.

Have a related idea? Get in touch to discuss a suitable research question and scope.

Possible research directions, with the final scope and supervision arrangements agreed in discussion.

Let’s find your research question.

Send a short introduction, the direction that interests you, and a little about your programming and mathematics background. An initial idea is enough to start a conversation.

Discuss a thesis idea

English or Estonian · University of Tartu