MLIR ( Multi-Level Intermediate Representation) est un framework unificateur pour le développement de compilateurs. La technologie MLIR permet d'utiliser de manière optimale et unifiée une variété de plates-formes informatiques telles que les processeurs (CPU), les processeurs graphiques (GPU), les unités de traitement de données (), les unités de traitement de tenseurs (TPU), les circuits logiques programmables (FPGA), des intelligences artificielles (IA) et les processeurs quantique (QPU).
MLIR est un sous-projet du projet LLVM et vise à construire une « infrastructure de compilateur réutilisable et extensible (..) ainsi qu'à aider à connecter les compilateurs existants entre eux. » MLIR n'a pas vocation à être compilé ou exécuté. C'est simplement une représentation de code qui vise à être le même format pour tous les codes afin de simplifier la lecture de ceux-ci.
Nom Le nom du projet signifie Multi-Level Intermediate Representation, dans lequel le mot-clé multi-level fait référence à la possibilité de définir plusieurs dialectes et de conversions progressives vers du code machine. Cette capacité permet au MLIR de conserver les informations à un niveau d'abstraction plus élevé et d'effectuer des analyses et des transformations plus précises, qui autrement devraient traiter des représentations de niveau inférieur.
Dialectes Les opérations représentent l’élément central autour duquel les dialectes sont construits. Elles sont identifiées par un nom – qui doit être unique dans le dialecte auquel ils appartiennent – et comportent facultativement des opérandes, des résultats, des attributs et des régions. Les opérandes et les résultats sont des formes statiques à affectation unique (SSA). Chaque résultat est également associé à un type. Les attributs représentent les connaissances au moment de la compilation. Les régions consistent en une liste de blocs, chacun pouvant avoir des arguments d'entrée et contenir une liste d'opérations.
Applications La liberté de modélisation des représentations intermédiaires permet à MLIR d'être utilisé dans un large éventail de scénarios. Cela inclut les langages de programmation traditionnels, mais aussi la , l'informatique quantique et le chiffrement homomorphe. Les applications d'apprentissage automatique tirent également parti des dialectes ciblant les accélérateurs et autres systèmes hétérogènes.
Notes et références
Catégorie:Logiciel libre