Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Dieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT

Dieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT

王林
王林nach vorne
2023-04-07 17:50:471050Durchsuche

Seit dem Aufkommen des Deep Learning ist Python eine der angesagtesten Programmiersprachen, dominiert die Bereiche Datenwissenschaft und maschinelles Lernen und spielt sogar eine Hauptrolle im wissenschaftlichen und mathematischen Rechnen. Heutzutage kann man für fast jedes erdenkliche Projekt ein entsprechendes Python-Paket finden.

Obwohl die vereinfachte Syntax einer Hochsprache das Erlernen und Verwenden erleichtert, ist sie im Vergleich zu Sprachen auf niedrigerem Niveau wie C oder C++ langsamer.

Forscher am MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) hoffen, dies mit Codon zu ändern, einem Python-basierten Compiler, der es Benutzern ermöglicht, Programme so effizient wie C oder C++ zu schreiben. Der ausgeführte Python-Code kann angepasst und angepasst werden angepasst an unterschiedliche Bedürfnisse und Umgebungen.

Das neueste Papier dieser Forschung, „Codon: A Compiler for High-Performance Pythonic Applications and DSLs“, wurde auf der 32. ACM SIGPLAN International Conference on Compiler Construction im Februar veröffentlicht.

Dieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT

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

Bei der Entwicklungsarbeit müssen Menschen Compiler verwenden, um Quellcode in Maschinencode umzuwandeln, der von einem Computerprozessor ausgeführt werden kann, und kann Entwicklern dabei helfen, neue domänenspezifische Sprachen (DSLs) in Python zu erstellen und gleichzeitig andere zu erhalten Leistungsvorteile der Sprache.

„Reguläres Python wird in sogenannten Bytecode kompiliert, der in einer virtuellen Maschine ausgeführt wird, was es viel langsamer macht“, sagte Ariya Shajii, der Hauptautor des Codon-Papiers. „Mit Codon kompilieren wir.“ nativ, sodass Sie das Endergebnis direkt auf der CPU ausführen können – ohne den Umweg über eine zwischengeschaltete virtuelle Maschine oder einen Interpreter. Die Kompilierungspipeline von Codon umfasst eine Typprüfung, wodurch Python-Code effizienter ausgeführt werden kann.

Dieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT

Der Python-basierte Compiler wird mit vorgefertigten Binärdateien für Linux und macOS geliefert, und Sie können auch ausführbare Dateien aus dem Quellcode erstellen oder generieren. „Mit Codon können Sie Quellcode wie Python verteilen oder ihn in Binärdateien kompilieren“, sagte Shajii. „Wenn Sie eine Binärdatei verteilen möchten, ist sie mit einer Sprache wie C++ identisch, beispielsweise einer Linux-Binärdatei oder einer Mac-Binärdatei.“ . Bei der Typprüfung wird einem Wert ein Datentyp (z. B. Ganzzahl, Zeichenfolge, Zeichen oder Gleitkommazahl usw.) zugewiesen. Beispielsweise kann die Zahl 5 als Ganzzahl, der Buchstabe c als Zeichen, das Wort Hallo als Zeichenfolge und die Dezimalzahl 3,14 als Gleitkommazahl zugewiesen werden.

„In regulärem Python werden alle Typen an die Laufzeit übergeben“, sagte Shajii. „Mit Codon führen wir eine Typprüfung während der Kompilierung durch, wodurch wir alle teuren Typoperationen zur Laufzeit vermeiden können.“ ), jedes Mal, wenn Sie Daten haben, müssen Sie viele zusätzliche Metadaten um sie herum aufbewahren, um den Typ zur Laufzeit zu bestimmen, sodass der Code schneller ist und die Daten kleiner sind Codon führt zur Laufzeit keine unnötigen Daten- oder Typprüfungen durch, sodass kein Overhead entsteht. In Bezug auf die Leistung ist „Codon im Allgemeinen mit C++ vergleichbar. Wir sehen im Vergleich zu Python typischerweise 10- bis 100-fache Geschwindigkeitsverbesserungen.“ „Wir führen diese statische Typprüfung durch und erlauben nicht die Verwendung einiger dynamischer Funktionen von Python, wie beispielsweise die dynamische Änderung von Typen zur Laufzeit“, sagte Shajii.

„Es gibt immer noch einige Python-Bibliotheken, die wir noch nicht implementiert haben.“ Amarasinghe fügte hinzu: „Python wurde tatsächlich von unzähligen Leuten getestet, und Codon hat dieses Niveau noch nicht erreicht. Es muss mehr Programme ausführen und mehr Feedback erhalten.“ . und es wird einige Zeit dauern, bis ein stabiles Niveau von regulärem Python erreicht ist. „Codon wurde ursprünglich für Genomik- und Bioinformatikarbeiten entwickelt. Die Forscher testeten etwa zehn gängige Genomikanwendungen, die in Python geschrieben waren, und kompilierten sie mit Codon. Dabei erzielten sie eine fünf- bis zehnfache Geschwindigkeitssteigerung im Vergleich zur ursprünglichen manuell optimierten Implementierung.

„Datensätze in diesen Bereichen sind heutzutage sehr groß geworden, und Hochsprachen wie Python und R sind zu langsam, um die Terabytes an Daten pro Sequenzierungssatz zu verarbeiten“, sagte Shajii. „Das ist die Lücke, die wir schließen wollen – indem wir Domänenexperten, die keine Informatiker oder professionellen Entwickler sind, eine Möglichkeit bieten, große Datenmengen zu verarbeiten, ohne C- oder C++-Code schreiben zu müssen.“ vergleicht die Leistung von Python (CPython 3), PyPy, Codon und C++ bei mehreren Benchmarks. Die y-Achse zeigt die Beschleunigung der Codon-Implementierung im Vergleich zur CPython-Implementierung. MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM

Neben der Genomik kann Codon auch auf ähnliche Anwendungen angewendet werden, die sich mit riesigen Datensätzen befassen, sowie auf Bereiche wie GPU-Programmierung und parallele Programmierung, die von Python unterstützt werden. basierte Compiler. Tatsächlich wird Codon jetzt durch das Startup Exaloop, das Shajii gegründet hat, um Codon von einem akademischen Projekt in eine Industrieanwendung zu verwandeln, kommerziell in den Bereichen Bioinformatik, Deep Learning und quantitative Finanzen eingesetzt.

Dieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT

Um Codon die Anpassung an verschiedene Bereiche zu ermöglichen, entwickelte das Team ein Plug-in-System. „Es ist wie ein erweiterbarer Compiler“, sagte Shajii. „Sie können Plug-ins für die Genomik oder andere Bereiche schreiben, und diese Plug-ins können über neue Bibliotheken und neue Compiler-Optimierungen verfügen.“ Darüber hinaus können Unternehmen und Institutionen Codon verwenden, um Prototypen zu erstellen und ihre eigenen Anwendungen zu entwickeln. „Eines der Muster, die wir sehen, ist, dass die Leute Python zum Prototyping und Testen verwenden, weil es einfach zu verwenden ist, aber wenn es um etwas Wichtiges geht, müssen sie die Anwendung neu schreiben oder es von jemand anderem in C oder C++ umschreiben und testen lassen.“ auf einem größeren Datensatz“, sagte Shajii. „Mit Codon können Sie Python vollständig nutzen und das Beste aus beiden Welten nutzen.“

Im Hinblick auf die Zukunft von Codon arbeiten Shajii und sein Team derzeit an nativen Implementierungen weit verbreiteter Python-Bibliotheken sowie bibliotheksspezifischer Optimierungen, um Benutzern zu helfen, eine bessere Leistung aus diesen Bibliotheken zu erzielen. Sie planen außerdem die Entwicklung einer beliebten Funktion: Codons WebAssembly-Backend, um die Ausführung von Code in einem Webbrowser zu unterstützen.

Das obige ist der detaillierte Inhalt vonDieser Compiler kann Python so schnell wie C++ machen: bis zu hundertmal schneller, produziert vom MIT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen