Translation Validation of Tensor Compilers
Validation de Traduction pour Compilateurs de Tenseurs
Résumé
Tensor compilers are used in domains such as image processing and deep learning to generate efficient low-level code from high-level specifications on multidimensional tensors. After the application of both loop transformations and algebraic simplifications to the specification, the resulting low-level code can have a drastically different structure. This makes the formal verification of tensor compilers an arduous task, unsuitable for standard bisimulation techniques. I propose a new method for the verification of tensor compilers in the presence of loop and algebraic transformations. This method draws inspiration from polyhedral techniques for program representation, and relies on a refinement mapping from assignments in the low-level code to tensor definition in the specifications provided by the tensor compiler. Each run of the compiler is verified by an independent verification tool implemented in OCaml, making the method an instance of translation validation. This verification tool is tested on Halide, an industrial-grade tensor compiler.
Les compilateurs de tenseurs sont utilisés dans des domaines comme le traitement d'image et l'apprentissage profond pour générer du code bas niveau efficace à partir de spécification de haut niveau sur des tenseurs multi-dimensionnels. Le code généré peut présenter une structure drastiquement différente de celle de la spécification suite à l'application de transformations de boucles et de simplifications algébriques. La vérification formelle des compilateurs de tenseurs est donc une tâche ardue, qui ne peut être traitée par les techniques standard à base de bisimulations. Je propose une nouvelle méthode pour la vérification de compilateurs de tenseurs en présence de transformations algébriques et de boucles. Cette méthode s'inspire des techniques polyédriques de représentation de programmes, et s'appuie sur une association de raffinement depuis les affectations dans le code bas niveau vers les définitions de tenseurs dans la spécification fournie par le compilateur. Chaque exécution du compilateur est vérifiée par un outil de vérification indépendant implanté en OCaml, faisant donc de la méthode un validateur de traduction. Cet outil de vérification est testé sur Halide, un compilateur de tenseurs de niveau industriel.
Fichier principal
Thèse_Basile_Clément_Validation_de_Traduction_pour_Compilateurs_de_Tenseurs.pdf (2.06 Mo)
Télécharger le fichier
Origine | Fichiers produits par l'(les) auteur(s) |
---|