LLVM Creator desenvolve unha nova linguaxe de programación Mojo

Chris Lattner, fundador e arquitecto xefe de LLVM e creador da linguaxe de programación Swift, e Tim Davis, anteriormente xefe de proxectos de IA de Google como Tensorflow e JAX, presentaron unha nova linguaxe de programación, Mojo, que combina a facilidade de uso para a investigación e a creación rápida de prototipos coa idoneidade para a creación de produtos finais de alto rendemento. Isto conséguese mediante a sintaxe familiar de Python, mentres que o último se consegue mediante a compilación nativa, os mecanismos de seguridade da memoria e a aceleración por hardware.

O proxecto céntrase no desenvolvemento de aprendizaxe automática, pero tamén se presenta como unha linguaxe de propósito xeral que amplía Python con capacidades de programación de sistemas e é axeitada para unha ampla gama de tarefas. Por exemplo, a linguaxe é aplicable a áreas como a computación de alto rendemento e o procesamento e transformación de datos. Unha característica interesante de Mojo é a capacidade de especificar o símbolo emoji "🔥" como unha extensión para ficheiros de código (por exemplo, "olamundo.🔥"), ademais da extensión de texto ".mojo".

A linguaxe está a ser sometida a un desenvolvemento intensivo e só hai dispoñible unha interface en liña para probas. Prométese que as versións independentes para executarse en sistemas locais se publiquen máis adiante, despois de recibir comentarios sobre o entorno web interactivo. Está previsto que o código fonte do compilador, JIT e outros desenvolvementos relacionados sexa de código aberto unha vez completada a arquitectura interna (o modelo de desenvolvemento a porta pechada para un prototipo funcional lembra a fase de desenvolvemento inicial de LLVM, Clang e Swift). Dado que a sintaxe de Mojo está baseada en Python e o seu sistema de tipos é similar a C/C++, os plans futuros inclúen o desenvolvemento de ferramentas para simplificar a migración dos proxectos existentes de C/C++ e Python a Mojo, así como para facilitar o desenvolvemento de proxectos híbridos que combinen código Python e Mojo.

O proxecto está deseñado para aproveitar os recursos de hardware existentes de sistemas heteroxéneos para a computación. Por exemplo, as GPU, os aceleradores de aprendizaxe automática especializados e os procesadores vectoriais de instrución única (SIMD) pódense usar para executar aplicacións Mojo e paralelizar computacións. As razóns citadas para desenvolver un subconxunto de Python separado, en lugar de depender do CPython existente para a optimización, inclúen un enfoque na compilación, a integración das capacidades de programación de sistemas e o uso dunha arquitectura interna fundamentalmente diferente que permite a execución de código en GPU e varios aceleradores de hardware. Ao mesmo tempo, os desenvolvedores de Mojo pretenden manter a compatibilidade con CPython tanto como sexa posible.

Mojo pódese usar tanto en modo JIT (just-in-time) como en modo anticipado (AOT). O compilador incorpora tecnoloxías modernas para a optimización automática, o almacenamento en caché e a compilación distribuída. O código fonte de Mojo convértese a código intermedio de baixo nivel (MLIR), desenvolvido polo proxecto LLVM e que ofrece capacidades adicionais para optimizar o procesamento de gráficos de fluxo de datos. O compilador admite varios backends habilitados para MLIR para a xeración de código máquina.

Aproveitar a aceleración adicional por hardware permite melloras de rendemento para cálculos intensivos que superan as das aplicacións C/C++. Por exemplo, ao probar unha aplicación de xeración de conxuntos de Mandelbrot, a aplicación compilada de Mojo (r7iz.metal-16xl) foi 6 veces máis rápida que a implementación de C++ cando se executou na nube de AWS (0.03 segundos fronte a 0.20 segundos), 35 000 veces máis rápida que a aplicación de Python cando se usou o CPython 3.10.9 estándar (0.03 segundos fronte a 1027 segundos) e 1500 veces máis rápida cando se usou PYPY (0.03 segundos fronte a 46.1 segundos).

Ao avaliar o rendemento da aprendizaxe automática, a pila de IA do Motor de Inferencia Modular, escrita en Mojo, foi 3 veces máis rápida nun procesador Intel ao procesar un modelo de linguaxe, 6.4 veces máis rápida ao executar un modelo de recomendación e 2.1 veces máis rápida ao executar modelos de procesamento de información visual en comparación cunha solución baseada en TensorFlow. Nos procesadores AMD, Mojo conseguiu melloras de rendemento de 3.2x, 5x e 2.2x, mentres que nos procesadores ARM conseguiu melloras de rendemento de 5.3x, 7.5x e 1.7x. A solución baseada en PyTorch quedou por detrás de Mojo en 1.4x, 1.1x e 1.5x nas CPU Intel, 2.1x, 1.2x e 1.5x nas CPU AMD e 4x, 4.3x e 1.3x nas CPU ARM.

LLVM Creator desenvolve unha nova linguaxe de programación Mojo

A linguaxe admite tipificación estática e funcións de seguridade de memoria de baixo nivel que lembran a Rust, como o seguimento do tempo de vida das referencias e un comprobador de préstamos. Ademais das funcións de seguridade do punteiro, a linguaxe tamén ofrece capacidades de baixo nivel, como o acceso directo á memoria en modo inseguro usando o tipo Pointer, a invocación de instrucións SIMD individuais e o acceso a extensións de hardware como TensorCores e AMX.

LLVM Creator desenvolve unha nova linguaxe de programación Mojo

Para simplificar a separación do código Python clásico e optimizado para funcións con tipos definidos explicitamente para todas as variables, proponse usar unha palabra clave "fn" separada en lugar de "def". Do mesmo xeito, para as clases, se se require o empaquetado de datos estáticos na memoria no tempo de compilación (como en C), pódese usar o tipo "struct" en lugar de "class". Tamén é posible a importación sinxela de módulos C/C++. Por exemplo, para importar a función cos da biblioteca matemática, podes especificar "from "math.h" import cos".

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster