ΠΡΠΈΡ ΠΠ°ΡΠ½ΡΡ, ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π» ΠΈ Π³Π»Π°Π²Π΅Π½ Π°ΡΡ ΠΈΡΠ΅ΠΊΡ Π½Π° LLVM ΠΈ ΡΡΠ·Π΄Π°ΡΠ΅Π» Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Swift, ΠΈ Π’ΠΈΠΌ ΠΠ΅ΠΉΠ²ΠΈΡ, Π±ΠΈΠ²Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Google AI ΠΊΠ°ΡΠΎ Tensorflow ΠΈ JAX, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡ Π° Π½ΠΎΠ² Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Mojo, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ΅ΡΠ°Π²Π° Π»Π΅ΠΊΠΎΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π·Π° R&D ΠΈ Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Ρ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ Π·Π° ΠΊΡΠ°ΠΉΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Ρ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΡΡΠ²ΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π° Π²ΡΠΎΡΠΎΡΠΎ ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ°.
ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π²ΡΡΡ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΊΠ°ΡΠΎ Π΅Π·ΠΈΠΊ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Python ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π·ΠΈΠΊΡΡ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠ°ΡΠΎ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Mojo Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π° Π΅ΠΌΠΎΡΠΈΠΊΠΎΠ½ΠΈ βπ₯β ΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ βhelloworld.π₯β), Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΡΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ β.mojoβ.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅Π·ΠΈΠΊΡΡ Π΅ Π² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ°ΠΌΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅. ΠΡΠ΄Π΅Π»Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ΅ ΠΎΠ±Π΅ΡΠ°Π²Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°ΡΠ° ΡΠ΅Π± ΡΡΠ΅Π΄Π°. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, JIT ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (ΠΌΠΎΠ΄Π΅Π»ΡΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π·Π°Π΄ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π²ΡΠ°ΡΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° LLVM, Clang ΠΈ Π‘ΡΠΈΡΡ). Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Mojo Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Python ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΡ ΡΠΈΠΏΠΎΠ²Π΅ Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C/C++, Π² Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠΌΠ° ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C/C++ ΠΈ Python, Π² Mojo, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Mojo.
ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° Π²ΠΊΠ»ΡΡΠΈ Π² ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, GPU, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (SIMD) ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Mojo ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ°. ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΠΊΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ CPython, ΡΠ΅ ΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΠΎΠΊΡΡ Π²ΡΡΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²ΡΡΡΠ΅ΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Mojo Π²ΡΠ·Π½Π°ΠΌΠ΅ΡΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Ρ ΠΊΡΠΌ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ CPython ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅.
Mojo ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π½Π° JIT, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (AOT, ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ΅ΠΌΠ΅). ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΈΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ ΠΎΡ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ MLIR (Multi-Level Intermediate Representation), ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° 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 ΡΠ΅ΠΊ).
ΠΡΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΡΡ Modular Inference Engine AI, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° TensorFlow, ΡΠ΅ ΠΎΠΊΠ°Π·Π° 3 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ· Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Intel ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊΠΎΠ² ΠΌΠΎΠ΄Π΅Π», 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), Π²ΠΌΠ΅ΡΡΠΎ "class" ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΈΠΏΠ° "struct". ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° Π΅Π·ΠΈΡΠΈ C / C ++, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° cos ΠΎΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ βΠΎΡ βmath.hβ import cosβ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru