Π‘ΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° LLVM Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Mojo

ΠšΡ€ΠΈΡ Π›Π°Ρ‚Π½Π΅Ρ€ (Chris Lattner), основатСл ΠΈ Π³Π»Π°Π²Π΅Π½ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ Π½Π° LLVM, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π» Π½Π° програмния Π΅Π·ΠΈΠΊ Swift, ΠΈ Π’ΠΈΠΌ ДСйвис (Tim Davis), бивш Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° AI ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π² Google, ΠΊΠ°Ρ‚ΠΎ Tensorflow ΠΈ JAX, прСдставиха Π½ΠΎΠ² програмния Π΅Π·ΠΈΠΊ Mojo, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° простота Π·Π° Π½Π°ΡƒΡ‡Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π±ΡŠΡ€Π·ΠΎ създаванС Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈ с прилоТимост Π·Π° създаванС Π½Π° високопроизводитСлни ΠΊΡ€Π°ΠΉΠ½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ сС постига Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° синтаксис Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Ρ‡Ρ€Π΅Π· Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° компилация Π² машинСн ΠΊΠΎΠ΄, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° бСзопасна Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ Π½Π° срСдства Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΎ ускорСниС Π½Π° изчислСнията.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ сфокусирован Π½Π° использовании для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Π² области машинного обучСния, Π½ΠΎ ΠΏΡ€ΠΈ этом прСподносится ΠΊΠ°ΠΊ язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ возмоТности языка Python срСдствами систСмного программирования ΠΈ подходящий для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡. НапримСр, язык ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Ρ‚Π°ΠΊΠΈΡ… областСй, ΠΊΠ°ΠΊ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Mojo являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания emoji-символа Β«πŸ”₯Β» Π² качСствС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«helloworld.πŸ”₯Β»), ΠΏΠΎΠΌΠΈΠΌΠΎ тСкстового Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Β«.mojoΒ».

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π·ΠΈΠΊΡŠΡ‚ Π΅ Π² Π΅Ρ‚Π°ΠΏ Π½Π° ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈ Π·Π° тСстванС Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ само ΠΎΠ½Π»Π°ΠΉΠ½ интСрфСйс. БамостоятСлни вСрсии Π·Π° стартиранС Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ систСми Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ ΠΏΠΎ-късно, слСд ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π·ΠΈΠ²ΠΈ относно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° ΡƒΠ΅Π± срСда. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, JIT ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (ΠΌΠΎΠ΄Π΅Π»ΡŠΡ‚ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° работния ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π·Π°Π΄ Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²Ρ€Π°Ρ‚ΠΈ напомня Π½Π° началния Π΅Ρ‚Π°ΠΏ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° LLVM, Clang ΠΈ Swift). Въй ΠΊΠ°Ρ‚ΠΎ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Mojo Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Ρ‰Π°Ρ‚Π° систСма Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C/C++, Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π΄Π° сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈ инструмСнтариум Π·Π° улСсняванС Π½Π° транслацията Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, написани Π½Π° C/C++ ΠΈ Python, към Mojo, Π° ΡΡŠΡ‰ΠΎ ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‰ΠΈ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Mojo.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π΄Π° ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² систСмата Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ рСсурси Π½Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° изчислСния. НапримСр, Π·Π° изпълнСниС Π½Π° прилоТСния Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo ΠΈ разпаралСляванС Π½Π° изчислСния, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ GPU, спСциализирани ускоритСли Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкциитС Π½Π° процСсора (SIMD). ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ подмноТСство Π½Π° Π΅Π·ΠΈΠΊΠ° Python, вмСсто Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ CPython, Π΅ ориСнтацията към компилация, интСграцията Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° систСмно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° съвсСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, която позволява изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π½Π° GPU ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ускоритСли. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Mojo са Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄Π° сС стрСмят, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно, към ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с CPython.

Mojo ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ с JIT, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° компилация Π² изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (AOT, ahead-of-time). ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π²Π³Ρ€Π°ΠΆΠ΄Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° оптимизация, ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° компилация. Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² нискоуровнСв ΠΊΠΎΠ΄ MLIR (ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° рСпрСзСнтация), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM, прСдоставяйки Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° оптимизация Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π°Ρ„Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ позволява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° машинСн ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ MLIR.

Π’ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ускоряванС Π½Π° изчислСнията прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° постиганС Π½Π° производитСлност, която ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΈ изчислСния надвишава прилоТСнията Π½Π° C/C++. НапримСр, ΠΏΡ€ΠΈ тСстванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° мноТСства ΠΎΡ‚ ΠœΠ°Π½Π΄Π΅Π»Π±Ρ€ΠΎΡ‚, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo, изпълнявано Π² ΠΎΠ±Π»Π°ΠΊΠ° AWS (r7iz.metal-16xl), сС ΠΎΠΊΠ°Π·Π° 6 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ рСализацията Π½Π° C++ (0.03 сСк. спрямо 0.20 сСк.), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ 35 хиляди ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Python с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° стандартния CPython 3.10.9 (0.03 сСк. спрямо 1027 сСк.) ΠΈ 1500 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° PYPY (0.03 сСк. спрямо 46.1 сСк.).

ΠŸΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² области Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ машинного обучСния, AI-стСк Modular Inference Engine, написанный Π½Π° языкС Mojo, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ TensorFlow оказался Π½Π° систСмС с процСссором Intel Π² 3 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ языковой ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² 6.4 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ формирования Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΈ Π² 2.1 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с модСлями для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ использовании процСссоров AMD Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΏΡ€ΠΈ использовании Mojo составил 3.2, 5 ΠΈ 2.2 Ρ€Π°Π·Π°, Π° ΠΏΡ€ΠΈ использовании процСссоров ARM β€” 5.3, 7.5 ΠΈ 1.7 Ρ€Π°Π·, соотвСтствСнно. РСшСниС Π½Π° Π±Π°Π·Π΅ PyTorch отстало ΠΎΡ‚ Mojo Π² 1.4, 1.1 ΠΈ 1.5 Ρ€Π°Π· Π½Π° CPU Intel, Π² 2.1, 1.2 ΠΈ 1.5 Ρ€Π°Π· Π½Π° CPU AMD ΠΈ Π² 4, 4.3 ΠΈ 1.3 Ρ€Π°Π·Π° Π½Π° CPU ARM.

Π‘ΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° LLVM Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Mojo

Π•Π·ΠΈΠΊΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° статична типизация ΠΈ срСдства Π·Π° бСзопасна нискоуровнСва Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, наподобяващи Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠ°Ρ‚ΠΎ прослСдяванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π·Π°Π΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (borrow checker). ОсвСн срСдствата Π·Π° бСзопасна Ρ€Π°Π±ΠΎΡ‚Π° с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π² Π΅Π·ΠΈΠΊΠ° са Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° нискоуровнСва Ρ€Π°Π±ΠΎΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌ unsafe с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠ° Pointer, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ SIMD инструкции ΠΈΠ»ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠ°Ρ‚ΠΎ TensorCores ΠΈ AMX.

Π‘ΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° LLVM Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Mojo

Для упрощСния раздСлСния классичСского ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Python-ΠΊΠΎΠ΄Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с явным ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² для всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«fnΒ» вмСсто Β«defΒ». Аналогично для классов, ΠΏΡ€ΠΈ нСобходимости статичСской ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти Π²ΠΎ врСмя компиляции (ΠΊΠ°ΠΊ Π² Π‘ΠΈ) вмСсто Β«classΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Β«structΒ». Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ простой ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° языках C/C++, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ cos ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Β«from Β«math.hΒ» import cosΒ».

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster