Der Erfinder von LLVM arbeitet an einer neuen Programmiersprache namens Mojo.

Chris Lattner, der GrĂŒnder und Hauptarchitekt von LLVM sowie der Schöpfer der Programmiersprache Swift, und Tim Davis, ehemaliger Leiter von KI-Projekten bei Google, wie TensorFlow und JAX, haben eine neue Programmiersprache namens Mojo vorgestellt. Mojo kombiniert die Benutzerfreundlichkeit fĂŒr Forschungsentwicklungen und schnelle Prototypenerstellung mit der Eignung zur Erstellung hochleistungsfĂ€higer Endprodukte. Dies wird durch die Verwendung der vertrauten Python-Syntax erreicht, wĂ€hrend die Eignung fĂŒr leistungsstarke Anwendungen durch die Möglichkeit der Kompilierung in Maschinencode, sichere Speicherverwaltung und die Nutzung von Hardwarebeschleunigung realisiert wird.

Das Projekt konzentriert sich auf die Verwendung in der Entwicklung von maschinellem Lernen, wird jedoch als allgemeine Programmiersprache prĂ€sentiert, die die Möglichkeiten von Python durch systemnahe Programmierung erweitert und fĂŒr eine Vielzahl von Aufgaben geeignet ist. Der Sprache ist in Bereichen wie Hochleistungsrechnen und Datenverarbeitung sowie -umwandlung anwendbar. Eine interessante Eigenschaft von Mojo ist die Möglichkeit, das Emoji-Symbol â€žđŸ”„â€œ als Dateierweiterung fĂŒr Code-Dateien zu verwenden (zum Beispiel „helloworld.đŸ”„â€œ), zusĂ€tzlich zur textuellen Erweiterung „.mojo“.

Die Sprache befindet sich derzeit in einer intensiven Entwicklungsphase und bietet nur eine Online-OberflĂ€che zu Testzwecken an. Abgetrennte Versionen fĂŒr den Einsatz auf lokalen Systemen sollen spĂ€ter veröffentlicht werden, nachdem RĂŒckmeldungen zur FunktionalitĂ€t der interaktiven Webumgebung eingeholt wurden. Der Quellcode des Compilers, der JIT und anderer projektbezogener Entwicklungen wird nach Abschluss der Planung der internen Architektur zur VerfĂŒgung gestellt (das Entwicklungsmodell des funktionsfĂ€higen Prototyps hinter verschlossenen TĂŒren erinnert an die AnfĂ€nge von LLVM, Clang und Swift). Da die Syntax von Mojo auf der Programmiersprache Python basiert und das Typsystem dem von C/C++ Ă€hnlich ist, ist geplant, in Zukunft Werkzeuge zu entwickeln, die die Übersetzung bestehender Projekte in Mojo, die in C/C++ und Python geschrieben sind, sowie die Entwicklung hybrider Projekte, die Code in Python und Mojo kombinieren, erleichtern.

Das Projekt zielt darauf ab, die vorhandenen Hardware-Ressourcen heterogener Systeme fĂŒr Berechnungen zu nutzen. So können beispielsweise GPUs, spezialisierte Beschleuniger fĂŒr maschinelles Lernen und Vektorprozessoranweisungen (SIMD) zur AusfĂŒhrung von Anwendungen in der Sprache Mojo und zur Parallelisierung von Berechnungen herangezogen werden. Ein Grund fĂŒr die Entwicklung eines spezifischen Teils der Sprache Python anstelle der Optimierung des bestehenden CPython ist der Fokus auf die Kompilierung, die Integration von Systemprogrammierungsfunktionen und die Verwendung einer grundsĂ€tzlich anderen internen Architektur, die es ermöglicht, Code auf GPUs und verschiedenen Hardware-Beschleunigern auszufĂŒhren. Gleichzeitig beabsichtigen die Entwickler von Mojo, soweit möglich die KompatibilitĂ€t mit CPython zu wahren.

Mojo kann sowohl im JIT-Interpretationsmodus als auch fĂŒr die Kompilierung in ausfĂŒhrbare Dateien (AOT, ahead-of-time) verwendet werden. Der Compiler integriert moderne Technologien zur automatischen Optimierung, Caching und verteilten Kompilierung. Quelltexte in der Mojo-Sprache werden in niederwertigen Zwischen-Code MLIR (Multi-Level Intermediate Representation) umgewandelt, das vom LLVM-Projekt entwickelt wird und zusĂ€tzliche Möglichkeiten fĂŒr die Optimierung der Datenflussgraphverarbeitung bietet. Der Compiler ermöglicht die Verwendung verschiedener Backends zur Generierung von Maschinencode, die MLIR unterstĂŒtzen.

Der Einsatz zusĂ€tzlicher Hardwaremechanismen zur Beschleunigung von Berechnungen ermöglicht eine Leistung, die bei intensiven Berechnungen die von C/C++-Anwendungen ĂŒbertrifft. So war beispielsweise bei einem Test einer Mandelbrot-Mengen-Generator-Anwendung die kompilierte Anwendung in Mojo, die in der AWS-Cloud (r7iz.metal-16xl) ausgefĂŒhrt wurde, sechsmal schneller als die Implementierung in C++ (0,03 Sek. gegenĂŒber 0,20 Sek.) und 35.000-mal schneller als die Anwendung in Python mit Standard CPython 3.10.9 (0,03 Sek. gegenĂŒber 1.027 Sek.) sowie 1.500-mal schneller bei Nutzung von PYPY (0,03 Sek. gegenĂŒber 46,1 Sek.).

Bei der Leistungsbewertung von Machine-Learning-Lösungen stellte sich heraus, dass der AI-Stack Modular Inference Engine, geschrieben in der Sprache Mojo, im Vergleich zur TensorFlow-basierten Lösung auf einem Intel-Prozessor dreimal schneller bei der Verarbeitung des Sprachmodells, 6,4-mal schneller bei der AusfĂŒhrung von Empfehlungsmodellen und 2,1-mal schneller bei der Arbeit mit Modellen zur Verarbeitung visueller Informationen war. Bei der Verwendung von AMD-Prozessoren erzielte Mojo eine Leistungssteigerung von 3,2, 5 und 2,2-mal, wĂ€hrend bei ARM-Prozessoren die Steigerungen 5,3, 7,5 und 1,7-mal betrugen. Die PyTorch-basierte Lösung lag im Vergleich zu Mojo um das 1,4-fache, 1,1-fache und 1,5-fache bei Intel-CPUs zurĂŒck, um das 2,1-fache, 1,2-fache und 1,5-fache bei AMD-CPUs und um das 4-fache, 4,3-fache und 1,3-fache bei ARM-CPUs.

Der Erfinder von LLVM arbeitet an einer neuen Programmiersprache namens Mojo.

Die Sprache unterstĂŒtzt statische Typisierung und bietet Sicherheitsmechanismen fĂŒr low-level Speicherarbeit, Ă€hnlich den Funktionen der Sprache Rust, wie beispielsweise die Verwaltung der Lebensdauer von Referenzen und die ÜberprĂŒfung des Variablenleihens (borrow checker). Neben den Sicherheitsmechanismen fĂŒr Pointer bietet die Sprache auch Möglichkeiten fĂŒr low-level Arbeiten, z. B. den direkten Zugriff auf den Speicher im unsafe-Modus mit dem Typ Pointer, die AusfĂŒhrung spezifischer SIMD-Operationen oder den Zugriff auf Hardware-Erweiterungen wie TensorCores und AMX.

Der Erfinder von LLVM arbeitet an einer neuen Programmiersprache namens Mojo.

Um die Trennung von klassischem und optimiertem Python-Code fĂŒr Funktionen mit expliziter Typdefinition fĂŒr alle Variablen zu erleichtern, wird vorgeschlagen, ein separates SchlĂŒsselwort „fn“ anstelle von „def“ zu verwenden. Ähnlich können fĂŒr Klassen, falls eine statische Speicherung von Daten im GedĂ€chtnis wĂ€hrend der Kompilierung (wie in C) erforderlich ist, anstelle von „class“ der Typ „struct“ verwendet werden. Ein einfacher Import von Modulen in C/C++-Sprachen ist ebenfalls möglich, zum Beispiel fĂŒr den Import der Funktion cos aus der Bibliothek math kann „from „math.h“ import cos“ angegeben werden.

Quelle: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster