Triton s’offre une nouvelle arme pour les GPU : le backend CUDA Tile IR en version bêta
NVIDIA a introduit CUDA Tile, un modèle de programmation GPU conçu pour améliorer la portabilité et exploiter pleinement les performances des Tensor Cores NVIDIA. Lancé avec CUDA 13.1, CUDA Tile marque une évolution majeure en déplaçant l’abstraction du modèle SIMT traditionnel (basé sur les threads individuels) vers une approche par tuiles (tiled computation), où les opérations sont exprimées sur des blocs de données (tiles). Ce modèle permet aux développeurs de décrire les calculs à un niveau plus élevé, la compilation et le runtime s’occupant automatiquement du planification des threads, de l’attribution des ressources et du mapping matériel. CUDA Tile IR, une représentation intermédiaire basée sur MLIR, formalise ce modèle grâce à un système de types, des opérations et des sémantiques clairement définis, offrant ainsi une base robuste pour des optimisations compilateur avancées. Le projet Triton-to-TileIR vise à intégrer CUDA Tile IR comme backend pour OpenAI Triton, un langage DSL open source en Python conçu pour écrire efficacement des noyaux de calcul pour l’apprentissage profond sur GPU. Triton, lui-même fondé sur une programmation par tuiles, permet aux chercheurs sans expérience en CUDA d’écrire du code GPU performant. Jusqu’à présent, son compilateur MLIR génère du PTX. Avec Triton-to-TileIR, les noyaux Triton peuvent désormais être compilés directement vers CUDA Tile IR, préservant ainsi l’abstraction par tuiles et accédant aux fonctionnalités natives des Tensor Cores. Cette intégration permet une transition fluide vers les architectures GPU modernes sans réécriture de code, avec un simple changement de configuration via une variable d’environnement. Les utilisateurs peuvent choisir dynamiquement le backend (PTX ou CUDA Tile IR) au niveau de chaque noyau. Le projet, hébergé dans l’organisation triton-lang, est encore en phase d’incubation. Son développement repose sur plusieurs axes : la mise en place d’infrastructures de conversion MLIR pour passer des opérations Triton vers CUDA Tile IR, des tests rigoureux pour garantir la correction sémantique (notamment pour les flux de contrôle, les accès mémoire et la précision numérique), des benchmarks comparatifs entre les deux backends sur des opérations clés (multiplication matricielle, convolutions, réductions), ainsi que l’intégration dans d’autres projets open source comme Helion. Actuellement, le projet nécessite une compilation à partir des sources, sans binaires précompilés. Une fois installé, l’utilisation se fait via des tutoriels comme l’addition vectorielle, avec un cache de noyaux en extension .tileIR au lieu de .cubin. Cependant, des limitations persistent : certaines opérations Triton ne sont pas encore implémentées dans le backend Tile IR, et des performances suboptimales ont été observées pour le modèle « tensor-of-pointer », couramment utilisé pour décrire des accès mémoire complexes. Ce problème est temporaire et peut être atténué en adoptant l’API TMA (Tensor Memory Accelerator), qui permet de décrire les tuiles par leurs dimensions, pas par des pointeurs explicites, ce qui améliore significativement les performances. En résumé, Triton-to-TileIR représente une avancée stratégique dans la programmation GPU, combinant la productivité offerte par Triton et l’efficacité des architectures modernes. Il illustre comment les partenariats entre fabricants de matériel (NVIDIA) et communautés open source (Triton) peuvent accélérer l’innovation. Pour les chercheurs, cela signifie pouvoir écrire du code performant avec peu de connaissances en bas niveau. Pour l’écosystème, c’est un pas vers une programmation GPU plus abstraite, portable et optimisée. Son succès final se mesurera à la capacité de permettre à des utilisateurs non experts d’obtenir des performances proches du maximum sur les GPU NVIDIA. Pour en savoir plus, consulter le dépôt GitHub triton-lang/Triton-to-tile-IR et les guides de tuning pour CUDA Tile IR.
