Maison  >  Article  >  Périphériques technologiques  >  Ce compilateur peut rendre Python aussi rapide que C++ : jusqu'à cent fois plus rapide, produit par le MIT

Ce compilateur peut rendre Python aussi rapide que C++ : jusqu'à cent fois plus rapide, produit par le MIT

王林
王林avant
2023-04-07 17:50:471050parcourir

Depuis l'essor du deep learning, Python est l'un des langages de programmation les plus en vogue, dominant les domaines de la science des données et de l'apprentissage automatique, et jouant même un rôle vedette dans le calcul scientifique et mathématique. De nos jours, vous pouvez trouver un package Python correspondant à presque tous les projets que vous pouvez imaginer.

Cependant, bien que la syntaxe simplifiée d'un langage de haut niveau le rende facile à apprendre et à utiliser, il est plus lent que les langages de niveau inférieur comme le C ou le C++.

Des chercheurs du Laboratoire d'informatique et d'intelligence artificielle du MIT (CSAIL) espèrent changer cela avec Codon, un compilateur basé sur Python qui permet aux utilisateurs d'écrire des programmes aussi efficacement que C ou C++. Le code Python qui s'exécute peut être personnalisé et adapté aux différents besoins et environnements.

Le dernier article de cette recherche, "Codon: A Compiler for High-Performance Pythonic Applications and DSLs", a été publié lors de la 32e conférence internationale ACM SIGPLAN sur la construction de compilateurs en février.

Ce compilateur peut rendre Python aussi rapide que C++ : jusquà cent fois plus rapide, produit par le MIT

  • Lien du projet : https://github.com/exaloop/codon
  • Papier : https://dl.acm.org/doi/abs/10.1145/3578360.3580275

Dans le travail de développement, les gens doivent utiliser des compilateurs pour convertir le code source en code machine pouvant être exécuté par un processeur informatique. Codon peut aider les développeurs à créer de nouveaux langages spécifiques à un domaine (DSL) en Python tout en obtenant d'autres. Avantages en termes de performances du langage.

"Le Python standard sera compilé en ce qu'on appelle le bytecode, qui est exécuté dans une machine virtuelle, ce qui le rendra beaucoup plus lent", a déclaré Ariya Shajii, l'auteur principal de l'article Codon "Avec Codon, nous compilons". de manière native, vous pouvez donc exécuter le résultat final directement sur le processeur - sans passer par une machine virtuelle ou un interpréteur intermédiaire. Le pipeline de compilation de Codon inclut une vérification de type, ce qui lui permet d'exécuter du code Python plus efficacement.

Ce compilateur peut rendre Python aussi rapide que C++ : jusquà cent fois plus rapide, produit par le MIT

Le compilateur basé sur Python est livré avec des binaires prédéfinis pour Linux et macOS, et vous pouvez également créer ou générer des exécutables à partir des sources. "Avec Codon, vous pouvez distribuer du code source comme Python, ou vous pouvez le compiler en binaires", a déclaré Shajii. "Si vous souhaitez distribuer un binaire, ce sera la même chose qu'un langage comme C++, comme un binaire Linux ou un binaire Mac."

Pour rendre Codon plus rapide, les chercheurs ont décidé d'effectuer une vérification de type au moment de la compilation. . La vérification de type consiste à attribuer un type de données (tel qu'un entier, une chaîne, un caractère ou un flottant, etc.) à une valeur. Par exemple, le nombre 5 peut être attribué comme nombre entier, la lettre c peut être attribuée comme caractère, le mot bonjour peut être attribué comme chaîne et le nombre décimal 3.14 peut être attribué comme nombre à virgule flottante. "En Python standard, tous les types sont donnés au runtime", a déclaré Shajii. "En utilisant Codon, nous effectuons une vérification de type lors de la compilation, ce qui nous permet d'éviter toutes les opérations de type coûteuses au moment de l'exécution."

Saman Amarasinghe, chercheur principal au MIT CSAIL, a ajouté : "Si vous disposez d'un langage dynamique (tel que Python). ), chaque fois que vous avez des données, vous devez conserver beaucoup de métadonnées supplémentaires pour déterminer le type au moment de l'exécution, donc le code est plus rapide et les données sont plus petites.

Selon Shajii. , Codon n'a pas de données inutiles ou de vérification de type au moment de l'exécution, il n'y a donc aucune surcharge. En termes de performances, "Codon est généralement à égalité avec C++. Nous constatons généralement des améliorations de vitesse de 10 à 100 fois par rapport à Python."

D'un autre côté, l'approche de Codon a ses compromis. "Nous effectuons cette vérification de type statique et n'autorisons pas l'utilisation de certaines fonctionnalités dynamiques de Python, telles que le changement dynamique de type au moment de l'exécution", a déclaré Shajii.

"Il y a encore quelques bibliothèques Python que nous n'avons pas encore implémentées." Amarasinghe a ajouté : "Python a été testé par d'innombrables personnes, et Codon n'a pas encore atteint ce niveau. Il doit exécuter plus de programmes et obtenir plus de retours. . , et durcir davantage. Il faudra un certain temps pour atteindre un niveau stable de Python régulier. "

Codon a été conçu à l'origine pour les travaux de génomique et de bioinformatique. Les chercheurs ont essayé environ 10 applications génomiques courantes écrites en Python et les ont compilées à l’aide de Codon, atteignant des accélérations de 5 à 10 fois par rapport à l’implémentation originale optimisée manuellement.

«Les ensembles de données dans ces domaines sont devenus très volumineux aujourd'hui, et les langages de haut niveau comme Python et R sont trop lents pour gérer les téraoctets de données par ensemble de séquençage», a déclaré Shajii. "C'est la lacune que nous voulons combler - en créant un moyen de traiter le Big Data sans avoir à écrire du code C ou C++, permettant ainsi aux experts du domaine qui ne sont pas des informaticiens ou des développeurs professionnels." Le tableau ci-dessus compare les performances de Python (CPython 3), PyPy, Codon et C++ sur plusieurs benchmarks. L'axe des y montre l'accélération de l'implémentation de Codon par rapport à l'implémentation de CPython. MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM

Ce compilateur peut rendre Python aussi rapide que C++ : jusquà cent fois plus rapide, produit par le MIT

En plus de la génomique, Codon peut également être appliqué à des applications similaires traitant d'ensembles de données massifs, ainsi qu'à des domaines tels que la programmation GPU et la programmation parallèle prises en charge par Python. compilateurs basés. En fait, Codon est désormais utilisé commercialement dans la bioinformatique, l’apprentissage profond et la finance quantitative par le biais de la startup Exaloop, fondée par Shajii pour transformer Codon d’un projet académique en une application industrielle. Pour permettre à Codon de s'adapter à différents domaines, l'équipe a développé un système de plug-in. "C'est comme un compilateur extensible", a déclaré Shajii. "Vous pouvez écrire des plug-ins pour la génomique ou d'autres domaines, et ces plug-ins peuvent avoir de nouvelles bibliothèques et de nouvelles optimisations de compilateur."

De plus, les entreprises et les institutions peuvent utiliser Codon pour prototyper et développer leurs propres applications. « L’une des tendances que nous constatons est que les gens utilisent Python pour le prototypage et les tests parce qu’il est facile à utiliser, mais lorsqu’il s’agit de quelque chose d’important, ils doivent réécrire l’application ou demander à quelqu’un d’autre de la réécrire et de la tester en C ou C++. sur un ensemble de données plus vaste", a déclaré Shajii. "Avec Codon, vous pouvez utiliser pleinement Python et tirer le meilleur parti des deux mondes."

Concernant l'avenir de Codon, Shajii et son équipe travaillent actuellement sur des implémentations natives de bibliothèques Python largement utilisées, ainsi que sur des bibliothèques spécifiques. optimisations, pour aider les gens à obtenir de meilleures performances de ces bibliothèques. Ils prévoient également de créer une fonctionnalité populaire : le backend WebAssembly de Codon pour prendre en charge l'exécution de code sur un navigateur Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer