Developing software that not only can be ported across different platforms but also assures consistent performance levels with minimum platform-specific code required, is crucial to efficiently exploit present hardware systems – especially supercomputers. However, some of the most utilised software libraries, within the scientific computing community, struggle with making their codebase interoperable across different families of accelerators, while only a few others have effectively proven both platform- and performance-portable. One such case is “Ginkgo”, a C++ library of sparse linear solvers and preconditioners, that thoroughly enforces portability-by-design to addresses sustainability challenges. This dissertation describes the effort put toward the implementation of shared-memory parallel coarse grid generation algorithms for Algebraic Multgrid Methods (AMG), and their integration within Ginkgo. Namely, a number of coarsening and interpolation algorithms from the C-based library “hypre” were re-implemented in modern C++ and parallelised using OpenMP. Despite still requiring more tuning and benchmarks, the re-factored code achieves moderate speedups, and can – in the forseeable future - take benefit of Ginkgo’s flexible infrastructure to run on graphics processing units and within distributed environments

Algoritmi Paralleli di Coarsening per Metodi Algebraic Multigrid (AMG). Lo sviluppo di software che non solo possa essere operato su piattaforme differenti, ma che garantisca anche prestazioni stabili e vantaggiose con il minimo apporto di codice “platform-specific”, è un requisito fondamentale per sfruttare in modo efficiente i sistemi hardware ad oggi disponibili – specialmente supercalcolatori. Tuttavia, quella di garantire l’interoperabilità del proprio codice fra molteplici famiglie di acceleratori, si è rivelata un’ardua sfida per alcune delle librerie software più utilizzate nella comunità del calcolo scientifico. Poche, infatti, sono quelle che si sono dimostrate effettivamente portabili sia a livello di piattaforma che di prestazioni. Uno di questi casi è "Ginkgo", una libreria C++ di risolutori lineari sparsi e precondizionatori, che si propone di affrontare le sfide riguardanti la sostenibilità del software mediante la ferrea adozione del principio di “portability-by-design”. Questa tesi descrive gli sforzi legati all’implementazione ed all’integrazione in “Ginkgo” di algoritmi paralleli, su sistemi a memoria condivisa, per metodi “Algebraic Multigrid” (AMG). In particolare, alcuni degli algoritmi di “coarsening” e interpolazione gia presenti nella libreria "hypre", che sfrutta il linguaggio C, sono stati reimplementati in moderno C++ e parallelizzati utilizzando OpenMP. Nonostante la necessità di rifinimenti e benchmark, il codice rifattorizzato è in grado di raggiungere “speedup” moderati e potrà, nel prossimo futuro, sfruttare l'infrastruttura flessibile di “Ginkgo” per essere eseguito su processori grafici ed in ambienti di calcolo distribuito.

Parallel Coarse Grid Generation Algorithms for Algebraic Multigrid Methods (AMG)

MAUROGIOVANNI, STEFANO
2021/2022

Abstract

Developing software that not only can be ported across different platforms but also assures consistent performance levels with minimum platform-specific code required, is crucial to efficiently exploit present hardware systems – especially supercomputers. However, some of the most utilised software libraries, within the scientific computing community, struggle with making their codebase interoperable across different families of accelerators, while only a few others have effectively proven both platform- and performance-portable. One such case is “Ginkgo”, a C++ library of sparse linear solvers and preconditioners, that thoroughly enforces portability-by-design to addresses sustainability challenges. This dissertation describes the effort put toward the implementation of shared-memory parallel coarse grid generation algorithms for Algebraic Multgrid Methods (AMG), and their integration within Ginkgo. Namely, a number of coarsening and interpolation algorithms from the C-based library “hypre” were re-implemented in modern C++ and parallelised using OpenMP. Despite still requiring more tuning and benchmarks, the re-factored code achieves moderate speedups, and can – in the forseeable future - take benefit of Ginkgo’s flexible infrastructure to run on graphics processing units and within distributed environments
2021
Parallel Coarse Grid Generation Algorithms for Algebraic Multigrid Methods (AMG)
Algoritmi Paralleli di Coarsening per Metodi Algebraic Multigrid (AMG). Lo sviluppo di software che non solo possa essere operato su piattaforme differenti, ma che garantisca anche prestazioni stabili e vantaggiose con il minimo apporto di codice “platform-specific”, è un requisito fondamentale per sfruttare in modo efficiente i sistemi hardware ad oggi disponibili – specialmente supercalcolatori. Tuttavia, quella di garantire l’interoperabilità del proprio codice fra molteplici famiglie di acceleratori, si è rivelata un’ardua sfida per alcune delle librerie software più utilizzate nella comunità del calcolo scientifico. Poche, infatti, sono quelle che si sono dimostrate effettivamente portabili sia a livello di piattaforma che di prestazioni. Uno di questi casi è "Ginkgo", una libreria C++ di risolutori lineari sparsi e precondizionatori, che si propone di affrontare le sfide riguardanti la sostenibilità del software mediante la ferrea adozione del principio di “portability-by-design”. Questa tesi descrive gli sforzi legati all’implementazione ed all’integrazione in “Ginkgo” di algoritmi paralleli, su sistemi a memoria condivisa, per metodi “Algebraic Multigrid” (AMG). In particolare, alcuni degli algoritmi di “coarsening” e interpolazione gia presenti nella libreria "hypre", che sfrutta il linguaggio C, sono stati reimplementati in moderno C++ e parallelizzati utilizzando OpenMP. Nonostante la necessità di rifinimenti e benchmark, il codice rifattorizzato è in grado di raggiungere “speedup” moderati e potrà, nel prossimo futuro, sfruttare l'infrastruttura flessibile di “Ginkgo” per essere eseguito su processori grafici ed in ambienti di calcolo distribuito.
File in questo prodotto:
Non ci sono file associati a questo prodotto.

È consentito all'utente scaricare e condividere i documenti disponibili a testo pieno in UNITESI UNIPV nel rispetto della licenza Creative Commons del tipo CC BY NC ND.
Per maggiori informazioni e per verifiche sull'eventuale disponibilità del file scrivere a: unitesi@unipv.it.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14239/15688