ΠΡΠΈΡ ΠΠ°ΡΠ½Π΅Ρ, ΠΎΡΠ½ΠΎΠ²Π°Ρ ΠΈ Π³Π»Π°Π²Π΅Π½ Π°ΡΡ ΠΈΡΠ΅ΠΊΡ Π½Π° LLVM ΠΈ ΠΊΡΠ΅Π°ΡΠΎΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Swift, ΠΈ Π’ΠΈΠΌ ΠΠ΅ΡΠ²ΠΈΡ, ΠΏΠΎΡΠ°Π½Π΅ΡΠ΅Π½ ΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π·Π° Π²Π΅ΡΡΠ°ΡΠΊΠ° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠΈΡΠ° Π½Π° Google, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Tensorflow ΠΈ JAX, Π²ΠΎΠ²Π΅Π΄ΠΎΠ° Π½ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΠΊ, Mojo, ΠΊΠΎΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° Π»Π΅ΡΠ½ΠΎΡΠΈΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠ΅ ΠΈ Π±ΡΠ·ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ²ΠΈ ΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π» Π·Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΡΠ°ΡΠ½ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ. ΠΡΠ²ΠΈΠΎΡ Π΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΏΡΠ΅ΠΊΡ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠ°ΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Python, Π° Π²ΡΠΎΡΠΈΠΎΡ ΠΏΡΠ΅ΠΊΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ Π²ΠΎ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ΄, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π°Π»Π°ΡΠΊΠΈ Π·Π° Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΎ Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅.
ΠΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π²ΠΎ ΠΎΠ±Π»Π°ΡΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΎΡΠΎ ΡΡΠ΅ΡΠ΅, Π½ΠΎ Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½ ΠΊΠ°ΠΊΠΎ ΡΠ°Π·ΠΈΠΊ Π·Π° ΠΎΠΏΡΡΠ° Π½Π°ΠΌΠ΅Π½Π° ΠΊΠΎΡ Π³ΠΈ ΠΏΡΠΎΡΠΈΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Python ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ Π°Π»Π°ΡΠΊΠΈ ΠΈ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ Π·Π° ΡΠΈΡΠΎΠΊ ΠΎΠΏΡΠ΅Π³ Π½Π° Π·Π°Π΄Π°ΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΠΈΠΊΠΎΡ Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π»ΠΈΠ² Π·Π° ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΠ°. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Mojo Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π·Π½Π°ΠΊΠΎΡ Π·Π° Π΅ΠΌΠΎΡΠΈΠΊΠΎΠ½ΠΈ βπ₯β ΠΊΠ°ΠΊΠΎ Π½Π°ΡΡΠ°Π²ΠΊΠ° Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΠΊΠΎΠ΄ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, βhelloworld.π₯β), ΠΏΠΎΠΊΡΠ°Ρ Π½Π°ΡΡΠ°Π²ΠΊΠ°ΡΠ° Π·Π° ΡΠ΅ΠΊΡΡ β.mojoβ.
ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π·ΠΈΠΊΠΎΡ Π΅ Π²ΠΎ ΡΠ°Π·Π° Π½Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π΅Π½ ΡΠ°Π·Π²ΠΎΡ ΠΈ ΡΠ°ΠΌΠΎ ΠΎΠ½Π»Π°ΡΠ½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ Π΅ ΠΏΠΎΠ½ΡΠ΄Π΅Π½ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅. ΠΠ΄Π΄Π΅Π»Π½ΠΈ ΡΠΊΠ»ΠΎΠΏΠΎΠ²ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ Π²Π΅ΡΠ΅Π½ΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΡΠ½Π°, ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°ΡΠ° Π²Π΅Π±-ΠΎΠΊΠΎΠ»ΠΈΠ½Π°. ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ, JIT ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ»ΡΡΡΠ²Π°ΡΠ° ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ Π·Π°Π²ΡΡΠΈ Π²Π½Π°ΡΡΠ΅ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (ΠΌΠΎΠ΄Π΅Π»ΠΎΡ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π·Π°Π΄ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π²ΡΠ°ΡΠΈ ΠΏΠΎΡΡΠ΅ΡΡΠ²Π° Π½Π° ΠΏΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° LLVM, Clang ΠΈ Π‘Π²ΠΈΡΡ). ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Mojo ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Python, Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π΅ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ C/C++, Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π°Ρ Π΄Π° ΡΠ°Π·Π²ΠΈΡΠ°Ρ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ C/C++ ΠΈ Python Π½Π° Mojo, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠ°Ρ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠΎΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ Python ΠΊΠΎΠ΄ ΠΈ Mojo.
ΠΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° Π³ΠΈ Π²ΠΊΠ»ΡΡΠΈ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π²ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ (SIMD) ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Mojo ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈΡΠ΅. ΠΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅Π±Π½Π° ΠΏΠΎΠ΄Π³ΡΡΠΏΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Python Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° CPython Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΡΠΎΠΊΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²Π½Π°ΡΡΠ΅ΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠΎΡΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΊΠΎΠ΄ΠΎΡ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Mojo ΠΈΠΌΠ°Π°Ρ Π½Π°ΠΌΠ΅ΡΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΡΠΎ CPython ΠΊΠΎΠ»ΠΊΡ ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅.
Mojo ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ JIT, ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° Π²ΠΎ ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ (AOT, ΠΏΡΠ΅Π΄Π²ΡΠ΅ΠΌΠ΅). ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΈΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°, ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°. ΠΠ·Π²ΠΎΡΠ½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΠΎΡΠΎ ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΡΡΠ΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ MLIR (ΠΡΠ»ΡΠΈ-Π½ΠΈΠ²ΠΎ Π½Π° ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΠ°Π²ΡΠ²Π°ΡΠ΅), ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ LLVM ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΎΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈ ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ MLIR Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ΄.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ C/C++ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ Mandelbrot, ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ 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 ΡΠ΅ΠΊ.). .
ΠΡΠΈ ΠΏΡΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅, ΠΌΠΎΠ΄ΡΠ»Π°ΡΠ½ΠΈΠΎΡ ΠΌΠΎΡΠΎΡ Π·Π° Π·Π°ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π²Π΅ΡΡΠ°ΡΠΊΠ° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠΈΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Mojo, Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° TensorFlow, Π±Π΅ΡΠ΅ 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 ΠΏΠ°ΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Π½Π° Intel, 2.1, 1.2 ΠΈ 1.5 ΠΏΠ°ΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ AMD ΠΈ 4, 4.3 ΠΈ 1.3 ΠΏΠ°ΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Π½Π° ARM.

ΠΠ°Π·ΠΈΠΊΠΎΡ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠΈ ΠΏΠΎΡΡΠ΅ΡΡΠ²Π°Π°Ρ Π½Π° Rust, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π΄ΠΎΠΆΠΈΠ²ΠΎΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ·Π°ΡΠΌΠΈΡΠΈ. ΠΠΎΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ, ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π½Π΅Π±Π΅Π·Π±Π΅Π΄Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΡΠΈΠΏΠΎΡ ΠΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ SIMD ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ TensorCores ΠΈ AMX .

ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈ ΠΎΠ΄Π²ΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ½ΠΈΠΎΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈΠΎΡ Python ΠΊΠΎΠ΄ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠ»ΡΡΠ΅Π½ Π·Π±ΠΎΡ βfnβ Π½Π°ΠΌΠ΅ΡΡΠΎ βdefβ. Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ΅, Π°ΠΊΠΎ ΡΡΠ΅Π±Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ Π΄Π° ΠΏΠ°ΠΊΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°ΡΠ° (ΠΊΠ°ΠΊΠΎ Π²ΠΎ C), ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΡ βstructβ Π½Π°ΠΌΠ΅ΡΡΠΎ βclassβ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ²Π΅Π·Π°Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ°Π·ΠΈΡΠΈΡΠ΅ Π½Π° C/C++, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠ²ΠΎΠ· Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° cos ΠΎΠ΄ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ βΠΎΠ΄ βmath.hβ import cosβ.
ΠΠ·Π²ΠΎΡ: opennet.ru
