# High-Performance GPU-to-CPU Transpilation and Optimization via High-Level Parallel Constructs

**Authors:** William S. Moses, Ivan R. Ivanov, Jens Domke, Toshio Endo, Johannes Doerfert, Oleksandr Zinenko  
**arXiv:** [2207.00257](https://arxiv.org/abs/2207.00257)  
**Date:** 2022-07-01  
**Summary page:** https://www.summarizepaper.com/fr/paper/2207.00257v1/

## Key points

- Le parallélisme est la principale source de performance, mais les implémentations architecturales et les modèles de programmation changent à chaque nouvelle génération de matériel.
- Cela entraîne souvent une réingénierie coûteuse des applications.
- La plupart des outils de portabilité des performances nécessitent un portage manuel et onéreux des applications vers un autre modèle de programmation.
- Une solution alternative a été proposée dans l'article "High-Performance GPU-to-CPU Transpilation and Optimization via High-Level Parallel Constructs".
- Cette approche permet de traduire automatiquement les programmes écrits dans un modèle de programmation (CUDA) en un autre (threads CPU) basé sur Polygeist/MLIR sans nécessiter de portage manuel et coûteux.
- Les résultats montrent qu'elle permet d'obtenir une accélération géométrique moyenne de 76 % par rapport au code OpenMP écrit à la main.
- Ils ont réussi à faire fonctionner efficacement les noyaux CUDA de PyTorch sur le supercalculateur Fugaku uniquement avec l'intervention automatique de l'utilisateur.
- Leur couche de compatibilité PyTorch utilisant les noyaux CUDA transpilés dépasse le backend natif CPU PyTorch de 2,7 fois en termes d'efficacité.
- Cette approche pourrait avoir un impact significatif sur la réduction des coûts et des efforts liés à la portabilité des performances dans le domaine du calcul haute performance.

## Summary

Alors que le parallélisme reste la principale source de performance, les implémentations architecturales et les modèles de programmation changent à chaque nouvelle génération de matériel, entraînant souvent une réingénierie coûteuse des applications. La plupart des outils de portabilité des performances nécessitent un portage manuel et onéreux des applications vers un autre modèle de programmation. William S. Moses, Ivan R. Ivanov, Jens Domke, Toshio Endo, Johannes Doerfert et Oleksandr Zinenko ont proposé une solution alternative dans leur article intitulé "High-Performance GPU-to-CPU Transpilation and Optimization via High-Level Parallel Constructs". Cette approche permet de traduire automatiquement les programmes écrits dans un modèle de programmation (CUDA) en un autre (threads CPU) basé sur Polygeist/MLIR sans nécessiter de portage manuel et coûteux. Les résultats montrent qu'elle permet d'obtenir une accélération géométrique moyenne de 76 % par rapport au code OpenMP écrit à la main. De plus, ils ont réussi à faire fonctionner efficacement les noyaux CUDA de PyTorch sur le supercalculateur Fugaku uniquement avec l'intervention automatique de l'utilisateur. Leur couche de compatibilité PyTorch utilisant les noyaux CUDA transpilés dépasse le backend natif CPU PyTorch de 2,7 fois en termes d'efficacité. Cette approche pourrait avoir un impact significatif sur la réduction des coûts et des efforts liés à la portabilité des performances dans le domaine du calcul haute performance.
