Codon ist ein Python-basierter Compiler, der darauf abzielt, Hochleistungsrechnen zu demokratisieren. Bildnachweis: Alex Shipps/MIT CSAIL über Midjourney
2018 veröffentlichte The Economist einen ausführlichen Artikel über die Programmiersprache Python. „In den letzten 12 Monaten“, heißt es in dem Artikel, „haben Google-Nutzer in Amerika häufiger nach Python gesucht als nach Kim Kardashian.“ Reality-TV-Stars, seien Sie vorsichtig.
Auch die High-Level-Sprache hat sich ihre Popularität verdient, da Legionen von Benutzern täglich zu der Sprache strömen, weil sie einfach zu bedienen ist, was zum Teil auf ihre einfache und leicht zu erlernende Syntax zurückzuführen ist. Dies veranlasste Forscher des Computer Science and Artificial Intelligence Laboratory (CSAIL) des MIT und anderswo, ein Tool zu entwickeln, das dabei hilft, Python-Code effizienter und effektiver auszuführen und gleichzeitig eine Anpassung und Anpassung an unterschiedliche Bedürfnisse und Kontexte zu ermöglichen. Der Compiler, ein Softwaretool, das Quellcode in Maschinencode übersetzt, der vom Prozessor eines Computers ausgeführt werden kann, ermöglicht es Entwicklern, neue domänenspezifische Sprachen (DSLs) in Python zu erstellen – was normalerweise um Größenordnungen langsamer ist als Sprachen wie C oder C++ – und trotzdem die Leistungsvorteile dieser anderen Sprachen nutzen.
DSLs sind spezialisierte Sprachen, die auf bestimmte Aufgaben zugeschnitten sind und mit denen viel einfacher zu arbeiten sein kann als mit universellen Programmiersprachen. Das Erstellen einer neuen DSL von Grund auf kann jedoch ein wenig Kopfschmerzen bereiten.
„Wir haben erkannt, dass Menschen nicht unbedingt eine neue Sprache oder ein neues Tool lernen wollen, insbesondere diejenigen, die keine technischen Kenntnisse haben auf den Grund gehen“, sagt Ariya Shajii, Ph.D. , Hauptautor eines neuen Artikels über das neue System des Teams, Codon. „Der Benutzer schreibt Python einfach so, wie er es gewohnt ist, ohne sich um Datentypen oder Leistung kümmern zu müssen, die wir automatisch handhaben – und das Ergebnis ist, dass sein Code 10- bis 100-mal schneller läuft als normales Python. Codon wird bereits verwendet kommerziell in Bereichen wie quantitative Finanzen, Bioinformatik und Deep Learning.“
Das Team hat Codon einigen strengen Tests unterzogen, und es hat sein Gewicht übertroffen. Insbesondere nahmen sie ungefähr 10 häufig verwendete Genomikanwendungen, die in Python geschrieben wurden, und kompilierten sie mit Codon und erzielten eine fünf- bis zehnfache Beschleunigung gegenüber den ursprünglichen handoptimierten Implementierungen. Neben der Genomik untersuchten sie Anwendungen in der quantitativen Finanzwirtschaft, die auch große Datensätze handhabt und Python stark nutzt. Die Codon-Plattform verfügt auch über ein paralleles Backend, mit dem Benutzer Python-Code schreiben können, der explizit für GPUs oder mehrere Kerne kompiliert werden kann, Aufgaben, die traditionell Programmierkenntnisse auf niedriger Ebene erfordern.
Pythons in einem Flugzeug
Im Gegensatz zu Sprachen wie C und C++, die beide mit einem Compiler ausgestattet sind, der den generierten Code optimiert, um seine Leistung zu verbessern, ist Python eine interpretierte Sprache. Es wurde viel Mühe darauf verwendet, Python schneller zu machen, was nach Angaben des Teams normalerweise in Form eines „Top-Down-Ansatzes“ erfolgt, was bedeutet, dass die Standard-Python-Implementierung genommen und verschiedene Optimierungen oder „Just-in-Time“ integriert werden “ Kompilierungstechniken – eine Methode, mit der leistungskritische Teile des Codes während der Ausführung kompiliert werden. Diese Ansätze zeichnen sich durch die Wahrung der Abwärtskompatibilität aus, schränken jedoch die Arten von Beschleunigungen, die Sie erreichen können, drastisch ein.
„Wir haben eher einen Bottom-up-Ansatz verfolgt, bei dem wir alles von Grund auf neu implementiert haben, was mit Einschränkungen, aber viel mehr Flexibilität verbunden war“, sagt Shajii. „So können wir beispielsweise bestimmte dynamische Funktionen nicht unterstützen, aber wir können mit Optimierungen und anderen statischen Kompilierungstechniken spielen, die Sie mit der standardmäßigen Python-Implementierung nicht durchführen könnten. Das war der Hauptunterschied – es war nicht viel Aufwand gewesen in einen Bottom-up-Ansatz einfließen lassen, bei dem große Teile der Python-Infrastruktur von Grund auf neu erstellt werden.“
Das erste Teil des Puzzles besteht darin, den Compiler mit einem Stück Python-Code zu füttern. Einer der kritischen ersten Schritte, der durchgeführt wird, wird als „Typüberprüfung“ bezeichnet, ein Prozess, bei dem Sie in Ihrem Programm die verschiedenen Datentypen jeder Variablen oder Funktion herausfinden. Einige könnten zum Beispiel ganze Zahlen sein, einige könnten Strings sein und einige könnten Fließkommazahlen sein – das ist etwas, was reguläres Python nicht tut. In regulärem Python müssen Sie sich mit all diesen Informationen auseinandersetzen, wenn Sie das Programm ausführen, was einer der Faktoren ist, die es so langsam machen. Ein Teil der Innovation bei Codon besteht darin, dass das Tool diese Typprüfung durchführt, bevor es das Programm ausführt. Dadurch kann der Compiler den Code in nativen Maschinencode konvertieren, wodurch der gesamte Overhead vermieden wird, den Python beim Umgang mit Datentypen zur Laufzeit hat.
„Python ist die Sprache der Wahl für Domänenexperten, die keine Programmierexperten sind. Wenn sie ein Programm schreiben, das populär wird, und viele Leute anfangen, es zu verwenden und immer größere Datensätze ausführen, wird die mangelnde Leistung von Python zu einem kritischen Hindernis Erfolg“, sagt Saman Amarasinghe, MIT-Professor für Elektrotechnik und Informatik und CSAIL-Hauptforscher. „Anstatt das Programm mit einer C-implementierten Bibliothek wie NumPy neu schreiben oder in einer Sprache wie C komplett neu schreiben zu müssen, kann Codon dieselbe Python-Implementierung verwenden und die gleiche Leistung erbringen, die Sie durch Umschreiben in C erhalten. Daher glaube ich Codon ist der einfachste Weg nach vorne für erfolgreiche Python-Anwendungen, die aufgrund mangelnder Leistung an ihre Grenzen gestoßen sind.“
Schneller als die Geschwindigkeit von C
Das andere Puzzleteil sind die Optimierungen im Compiler. Die Arbeit mit dem Genomik-Plug-In führt beispielsweise einen eigenen Satz von Optimierungen durch, die für diesen Computerbereich spezifisch sind, was beispielsweise die Arbeit mit genomischen Sequenzen und anderen biologischen Daten beinhaltet. Das Ergebnis ist eine ausführbare Datei, die mit der Geschwindigkeit von C oder C++ oder sogar noch schneller läuft, sobald domänenspezifische Optimierungen angewendet werden.
Während Codon derzeit eine beträchtliche Teilmenge von Python abdeckt, muss es noch mehrere dynamische Funktionen integrieren und die Abdeckung seiner Python-Bibliothek erweitern. Das Codon-Team arbeitet hart daran, die Lücke zu Python noch weiter zu schließen, und freut sich darauf, in den kommenden Monaten mehrere neue Funktionen zu veröffentlichen. Codon ist derzeit auf GitHub öffentlich verfügbar.
Neben Amarasinghe schrieb Shajii das Papier zusammen mit Gabriel Ramirez, einem ehemaligen CSAIL-Studenten und aktuellen Jump-Trading-Software-Ingenieur; Jessica Ray, Associate Research Staff Member am MIT Lincoln Laboratory; Bonnie Berger, MIT-Professorin für Mathematik und Elektrotechnik und Informatik und CSAIL-Hauptforscherin; Haris Smajlović, Doktorand an der University of Victoria; und Ibrahim Numanagić, Assistenzprofessor an der University of Victoria für Computerwissenschaften und Canada Research Chair.
Die Forschungsergebnisse wurden auf der ACM SIGPLAN 2023 International Conference on Compiler Construction vorgestellt und im Rahmen der veröffentlicht CC 2023: Tagungsband der 32. ACM SIGPLAN International Conference on Compiler Construction.
Mehr Informationen:
Ariya Shajii et al, Codon: A Compiler for High-Performance Pythonic Applications and DSLs, CC 2023: Tagungsband der 32. ACM SIGPLAN International Conference on Compiler Construction (2023). DOI: 10.1145/3578360.3580275
Diese Geschichte wurde mit freundlicher Genehmigung von MIT News (web.mit.edu/newsoffice/), eine beliebte Website, die Neuigkeiten über MIT-Forschung, -Innovation und -Lehre enthält.
Zitat: Python-basierter Compiler erzielt Beschleunigungen in Größenordnungen (2023, 14. März), abgerufen am 14. März 2023 von https://techxplore.com/news/2023-03-python-based-orders-of-magnitude-speedups.html
Dieses Dokument ist urheberrechtlich geschützt. Abgesehen von einem fairen Handel zum Zwecke des privaten Studiums oder der Forschung darf kein Teil ohne schriftliche Genehmigung reproduziert werden. Der Inhalt dient nur zu Informationszwecken.