[Python-es] Python y Julia para LLVM
Chema Cortes
pych3m4 en gmail.com
Mie Ene 16 16:06:29 CET 2013
El día 16 de enero de 2013 15:17, Francesc Alted <faltet en gmail.com> escribió:
> Yo no puedo opinar mucho de la interacción de LLVM con Julia por que no lo
> conozco demasiado, pero sí que puedo decir que en Continuum estamos poniendo
> a punto Numba (https://github.com/numba/numba), un compilador al vuelo (JIT)
> que traduce código Python al lenguaje intermedio (IR) que usa LLVM
> internamente. LLVM, a su vez, compila el IR a código nativo (que depende de
> la platforma) y lo ejecuta (o lo puede guardar en un fichero binario, esto
> ya depende de la aplicación).
>
> Numba permite, mediante decoradores y anotaciones de tipo, hacer que
> funciones puras en Python (ahora mismo no se soporta todo el lenguaje, pero
> sí un subconjunto bastante amplio) puedan correr a velocidad de C puro, y lo
> que es mejor, de manera completamente interactiva (la compilación al vuelo
> es realmente rápida). Numba es completamente open-source, así que
> cualquiera puede contribuir al proyecto (de hecho alguien de esta lista ya
> menciona que han contribuido ya).
Creo que ya tengo claro cómo usáis LLVM en numba. Incluso veo que
permite la compilación estática además de JIT, lo que seguramente
tiene que dar resultados bastantes buenos.
Tenía interés en saber si LLVM facilitaba la concurrencia y el cómputo
distribuido. Por lo que veo, Julia tiene estas facilidades, pero debe
ser cosecha propia. También estoy viendo proyectos para portar otros
lenguajes como scala o C# a LLVM, por lo que parece que esta
plataforma empieza a tomar auge y, tal vez, lleguemos a librarnos de
JVM y .Net.
> Pero no hay que llevarse a engaño: LLVM realmente no es una tecnología
> demasiado útil para PyPy, ya que éste último viene con su propio compilador
> JIT, asi no se complementan demasiado bien. En Continuum claramente hemos
> apostado más por LLVM (via Numba) que por la vía PyPy. La ventaja de Numba
> es que no se tiene por qué renunciar a librerias que son extensiones (el
> proyecto de migración de NumPy a PyPy está siendo lento y plagado de
> trampas, y ya somos muchos los que dudamos de que se pueda llevar a cabo de
> una manera completa). Numba permite compilar de manera selectiva la parte
> de código Python que es un cuello de botella, respetando toda la gama de
> librerias y extensiones que ya existen ahora mismo.
>
> Por supuesto que Blaze (https://github.com/ContinuumIO/blaze), nuestro
> proyecto para reemplazar NumPy para problemas de Big Data, usará Numba como
> motor de cálculo de manera que el usuario no tenga que preocuparse de hacer
> extensiones para optimizar los cálculos, sino que éstos se efectuarán a
> velocidad de C (¡y sin arrays temporales!) directamente. Blaze es otro
> desarrollo open source, y aunque todavía está en su infancia, esperamos que
> de aquí a no mucho tiempo ya pueda ser posible hace cosas interesantes con
> él.
No conocía Blaze. Le echaré un vistazo. Ya solo os falta un proyecto
para computación distribuída ;-)
--
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales
Más información sobre la lista de distribución Python-es