tutorial python multicore llvm unladen-swallow

python - llvm tutorial



¿Qué es LLVM y cómo está reemplazando Python VM con LLVM aumentando las velocidades 5x? (3)

El cambio a LLVM en sí no está resolviendo el problema de concurrencia. Eso se está resolviendo por separado, eliminando el bloqueo global de intérpretes .

No estoy seguro de cómo me siento al respecto; Utilizo subprocesos principalmente para lidiar con el bloqueo de E / S, no para aprovechar los procesadores multinúcleo (para eso, usaría el módulo de multiprocessing para generar procesos separados).

Así que me gusta el GIL; Me hace la vida mucho más fácil al no tener que pensar en problemas de sincronización difíciles.

Google está patrocinando un proyecto de código abierto para aumentar la velocidad de Python en 5x.

Unladen-Swallow parece tener un buen plan de proyecto

¿Por qué la concurrencia es un problema tan difícil?
¿LLVM va a resolver el problema de concurrencia?
¿Hay otras soluciones además de Multi-core para el avance de Hardware?


LLVM se encarga de lo esencial de la generación de código, por lo que les permite reescribir Psyco de una manera más general, portátil y fácil de mantener. Eso, a su vez, les permite reescribir el núcleo de CPython, lo que les permite experimentar con GC alternativos y otras cosas necesarias para mejorar el soporte de Python para la concurrencia.

En otras palabras, LLVM no resuelve el problema de concurrencia, solo libera tus manos para que TÚ puedas resolverlo.


LLVM es varias cosas juntas: una especie de máquina virtual / compilador de optimización, combinada con diferentes interfaces que toman la entrada en un idioma particular y producen el resultado en un idioma intermedio. Esta salida intermedia se puede ejecutar con la máquina virtual o se puede usar para generar un ejecutable independiente.

El problema con la concurrencia es que, aunque se usó durante mucho tiempo en la computación científica, recientemente se ha vuelto común en las aplicaciones para el consumidor. Entonces, si bien es ampliamente conocido cómo programar un programa de cálculo científico para lograr un gran rendimiento, es algo completamente diferente escribir un agente de usuario de correo / procesador de textos que puede ser bueno en concurrencia. Además, la mayoría de los sistemas operativos actuales estaban siendo diseñados con un solo procesador en mente, y es posible que no estén completamente preparados para procesadores multinúcleo.

El beneficio de LLVM con respecto a la concurrencia es que tiene un resultado intermedio, y si en el futuro hay avances en la concurrencia, al actualizar su intérprete, obtendrá esos beneficios en todos los programas compilados con LLVM. Esto no es tan fácil si ha compilado a un ejecutable independiente. Entonces, LLVM no resuelve el problema de concurrencia en sí, pero deja una puerta abierta para futuras mejoras.

Claro que hay más avances posibles para el hardware como las computadoras cuánticas, las genéticas, etc. Pero tenemos que esperar a que se conviertan en una realidad.