Task-based Conjugate Gradient: from multi-GPU towards heterogeneous architectures
Résumé
Whereas most parallel High Performance Computing (HPC) numerical
libaries have been written as highly tuned and mostly monolithic
codes, the increased complexity of modern architectures led the
computational science and engineering community to consider more modular programming paradigms such as
task-based paradigms to design new generation of parallel simulation code;
this enables to delegate part of the work to a third party
software such as a runtime system. That latter approach has been
shown to be very productive and efficient with compute-intensive
algorithms, such as dense linear algebra and sparse direct
solvers. In this study, we consider a much more irregular, and
synchronizing algorithm, namely the Conjugate Gradient (CG)
algorithm. We propose a task-based formulation of the algorithm
together with a very fine instrumentation of the runtime system. We
show that almost optimum speed up may be reached on a multi-GPU
platform (relatively to the mono-GPU case) and, as a very
preliminary but promising result, that the approach can be
effectively used to handle heterogenous architectures composed of a
multicore chip and multiple GPUs. We expect that these results will
pave the way for investigating the design of new advanced, irregular
numerical algorithms on top of runtime systems.