Detection of linear algebra operations in polyhedral programs / Guillaume Iooss ; sous la direction de Alain Darte et de Sanjay Rajopadhye

Date :

Type : Livre / Book

Type : Thèse / Thesis

Langue / Language : anglais / English

Darte, Alain (1968-.... ; chercheur en informatique) (Directeur de thèse / thesis advisor)

Rajopadhye, Sanjay (Directeur de thèse / thesis advisor)

Mueller, Jennifer L. (Président du jury de soutenance / praeses)

Clauss, Philippe (19..-.... ; chercheur en informatique) (Rapporteur de la thèse / thesis reporter)

Sankaranarayanan, Sriram (Rapporteur de la thèse / thesis reporter)

Alias, Christophe (19..-.... ; chercheur en informatique) (Membre du jury / opponent)

Thomassé, Stéphan (1968-.... ; informaticien) (Membre du jury / opponent)

Chitsaz, Hamidreza (Membre du jury / opponent)

Université de Lyon (2015-....) (Organisme de soutenance / degree-grantor)

Colorado state university (Organisme de cotutelle / degree co-grantor)

École doctorale en Informatique et Mathématiques de Lyon (Ecole doctorale associée à la thèse / doctoral school)

École normale supérieure de Lyon (2010-...) (Autre partenaire associé à la thèse / thesis associated third party)

Laboratoire de l'informatique du parallélisme (Lyon ; 1988-....) (Laboratoire associé à la thèse / thesis associated laboratory)

Résumé / Abstract : Durant ces dernières années, Il est de plus en plus compliqué d'écrire du code qui utilise une architecture au mieux de ses capacités. Certaines opérations clefs ont soit un accélérateur dédié, ou admettent une implémentation finement optimisée qui délivre les meilleurs performances. Ainsi, il est intéressant d'identifier ces opérations pendant la compilation d'un programme, et de faire appel à une implémentation optimisée.Nous nous intéressons dans cette thèse au problème de détection de ces opérations. Nous proposons un procédé qui détecte des sous-calculs correspondant à des opérations d'algèbre linéaire à l'intérieur de programmes polyédriques. L'idée principale de ce procédé est de découper le programme en sous-calculs isolés, et essayer de reconnaître chaque sous-calculs comme une combinaison d'opérateurs d'algèbre linéaire.Le découpage du calcul est effectué en utilisant une transformation de programme appelée tuilage monoparamétrique. Cette transformation partitionne le calcul en tuiles dont la forme est un agrandissement paramétrique d'une tuile de taille constante. Nous montrons que le programme tuilé reste polyédrique tout en permettant une paramétrisation limitée des tailles de tuile. Les travaux précédents sur le tuilage nous forçaient à choisir l'une de ces deux propriétés.Ensuite, afin d'identifier les opérateurs, nous introduisons un algorithme de reconnaissance de template, qui est une extension d'un algorithme d'équivalence de programme. Nous proposons plusieurs extensions afin de tenir compte des propriétés sémantiques communément rencontrées en algèbre linéaire.Enfin, nous combinons les deux contributions précédentes en un procédé qui détecte les sous-calculs correspondant à des opérateurs d'algèbre linéaire. Une de ses composantes est une librairie de template, inspirée de la spécification BLAS. Nous démontrons l'efficacité de notre procédé sur plusieurs applications.

Résumé / Abstract : Writing a code which uses an architecture at its full capability has become an increasingly difficult problem over the last years. For some key operations, a dedicated accelerator or a finely tuned implementation exists and delivers the best performance. Thus, when compiling a code, identifying these operations and issuing calls to their high-performance implementation is attractive. In this dissertation, we focus on the problem of detection of these operations. We propose a framework which detects linear algebra subcomputations within a polyhedral program. The main idea of this framework is to partition the computation in order to isolate different subcomputations in a regular manner, then we consider each portion of the computation and try to recognize it as a combination of linear algebra operations.We perform the partitioning of the computation by using a program transformation called monoparametric tiling. This transformation partitions the computation into blocks, whose shape is some homothetic scaling of a fixed-size partitioning. We show that the tiled program remains polyhedral while allowing a limited amount of parametrization: a single size parameter. This is an improvement compared to the previous work on tiling, that forced us to choose between these two properties.Then, in order to recognize computations, we introduce a template recognition algorithm. This template recognition algorithm is built on a state-of-the-art program equivalence algorithm. We also propose several extensions in order to manage some semantic properties.Finally, we combine these two previous contributions into a framework which detects linear algebra subcomputations. A part of this framework is a library of template, based on the BLAS specification. We demonstrate our framework on several applications.