Trading Performance for Memory in Sparse Direct Solvers using Low-rank Compression
Résumé
Sparse direct solvers using Block Low-Rank compression have been proven efficient to solve problems arising in many real-life applications. Improving those solvers is crucial for being able to 1) solve larger problems and 2) speed up computations. A main characteristic of a sparse direct solver using low-rank compression is when compression is performed. There are two distinct approaches: (1) all blocks are compressed before starting the factorization, which reduces the memory as much as possible, or (2) each block is compressed as late as possible, which usually leads to better speedup. The objective of this paper is to design a composite approach, to speedup computations while staying under a given memory limit. This should allow to solve large problems that cannot be solved with Approach 2 while reducing the execution time compared to Approach 1.
We propose a memory-aware strategy where each block can be compressed either at the beginning or as late as possible. We first consider the problem of choosing when to compress each block, under the assumption that all information on blocks is perfectly known, i.e., memory requirement and execution time of a block when compressed or not. We show that this problem is a variant of the NP-complete Knapsack problem, and adapt an existing 2-approximation algorithm for our problem. Unfortunately, the required information on blocks depends on numerical properties and in practice cannot be known in advance. We thus introduce models to estimate those values. Experiments on the PaStiX solver demonstrate that our new approach can achieve an excellent trade-off between memory consumption and computational cost. For instance on matrix Geo1438, Approach 2 uses three times as much memory as Approach 1 while being three times faster. Our new approach leads to an execution time only 30% larger than Approach 2 when given a memory 30% larger than the one needed by Approach 1.
Les solveurs directs creux utilisant de la compression low-rank ont montré leur efficacité pour résoudre de grands systèmes. Les améliorer permet
de 1) résoudre de plus grands problèmes et 2) accélérer la résolution. Une caractéristique principale de ces solveurs est quand la compression est réalisée. Il existe deux approches: (1) tous les blocs sont compressés avant le début de la factorisation, ce qui minimise la consommation mémoire, ou (2) chaque bloc est compressé au plus tard, ce qui permet d’avoir de meilleures performances. L’objectif de cet article est de proposer une approche intermédiaire, qui accélère les calculs au maximum tout en restant en dessous d’une limite mémoire donnée. Cela devrait permettre de résoudre de grands problèmes que l’approche 2 ne peut pas résoudre ou de réduire le temps d’exécution de l’approche 1. Nous proposons
une stratégie memory-aware où chaque bloc peut ˆêtre compressé au début ou au plus tard. Nous commençons par considérer le problème où toutes les informations (consommation mémoire et temps d’exécution en version compressée ou non) sont parfaitement connues. Nous montrons que ce problème est une variante du problème NP-complet Knapsack et adaptons une 2-approximation pour notre problème. Malheureusement, toutes ces informations dépendent de propriétés numériques et ne sont pas connues `a l’avance. Des modèles sont donc introduits afin d’estimer ces valeurs. Des expérimentations avec le solveur PaStiX montrent que notre approche permet d’avoir un excellent compromis entre consommation mémoire et temps d’exécution. Par exemple, pour la matrice Geo1438, l’approche 2 utilise trois fois plus de mémoire que l’approche 1, qui est trois fois plus lente. Notre nouvelle méthode permet d’obtenir à la fois un temps d’exécution seulement 30% supérieur à celui de l’approche 2 tout en ayant une consommation mémoire seulement supérieure de 30% à celle de l’approche 1.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...