SlideShare a Scribd company logo
1 of 18
Download to read offline
Numexpr
      Python-madrid
       14/06/2012
Numexpr
¿Qué es?

Evalua expresiones con numpy arrays
Las reescribe de forma más eficiente
Las compila al vuelo (gracias a su JIT) a código
para su máquina virtual (escrita en C)
Numexpr
¿Qué es?

Además tiene soporte para multi-threading que
permite evitar el GIL
Numexpr
¿Dependencias?

Numpy
Numexpr
•  Veamos un ejemplo
x es un numpy array de 100.000.000 floats
Evaluamos x4

Python:
y = [x1 ** 4 for x1 in x]             (~74 segundos)
y = [x1 * x1 * x1 * x1 for x1 in x]   (~70 segundos)


Numpy:
y = x**4                              (6.25 segundos)    ~12x
y=x*x*x*x                             (0.993 segundos)   ~70x


Numexpr (1 thread):
y = ne.evaluate(‘x**4’)               (0.313 segundos)   ~210x
y = ne.evaluate(‘x * x * x * x’)      (0.369 segundos)   ~18x
Numexpr
•  Veamos un ejemplo
x es un numpy array de 100.000.000 floats
Evaluamos x4
Numexpr
Operaciones CPU-bound
Operaciones donde correrá más si tenemos CPU más rápida, e.g., sin, cos,
exp, log, sqrt,... (funciones transcendentes)
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación sin(x) + cos(y) + tan(z)
Numpy:       9.12 segundos
Numexpr:     9.85 segundos     (1 thread)
             5.09 segundos     (2 threads)   1.8x
             3.48 segundos     (3 threads)   2.6x
             2.71 segundos     (4 threads)   3.4x
             2.43 segundos     (5 threads)   3.8x
             2.21 segundos     (6 threads)   4.1x
             2.02 segundos     (7 threads)   4.5x
             1.89 segundos     (8 threads)   4.8x
Numexpr
Operaciones CPU-bound
Operaciones donde correrá más si tenemos CPU más rápida, e.g., sin, cos,
exp, log, sqrt,... (funciones transcendentes)
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación sin(x) + cos(y) + tan(z)
Numexpr
Operaciones Memory-bound
Operaciones donde correrá más si tenemos velocidad de acceso más rápida a
memoria
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación x3 + 2y – 3x/z
Numpy:       9.98 segundos
Numexpr:     1.19 segundos     (1 thread)    8.4x
             0.64 segundos     (2 threads)   15.6x
             0.45 segundos     (3 threads)   22.2x
             0.36 segundos     (4 threads)   27.7x
             0.33 segundos     (5 threads)   30.2x
             0.30 segundos     (6 threads)   33.3x
             0.28 segundos     (7 threads)   35.6x
             0.26 segundos     (8 threads)   38.4x
Numexpr
Operaciones Memory-bound
Operaciones donde correrá más si tenemos velocidad de acceso más rápida a
memoria
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación x3 + 2y – 3x/z
Numexpr
Otro ejemplo
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación sin(sqrt(x3 + 2y – 3x/z))
Numpy:       6.08 segundos
Numexpr:     5.23 segundos     (1 thread)    1.2x
             2.74 segundos     (2 threads)   2.2x
             1.88 segundos     (3 threads)   3.2x
             1.46 segundos     (4 threads)   4.2x
             1.31 segundos     (5 threads)   4.6x
             1.19 segundos     (6 threads)   5.1x
             1.08 segundos     (7 threads)   5.6x
             0.99 segundos     (8 threads)   6.1x
Numexpr
Otro ejemplo
x, y, z son numpy arrays de 100.000.000 floats


Si hacemos la siguiente operación sin(sqrt(x3 + 2y – 3x/z))
Numexpr




Fuente: Francesc Alted http://www.youtube.com/watch?v=J3-oN_TulTg
Numexpr




Fuente: Francesc Alted http://www.youtube.com/watch?v=J3-oN_TulTg
Numexpr
Limitaciones:
  operaciones 'element-wise'
Numexpr
Uso:
>> import numexpr as ne
>> ne.evaluate('expresión a evaluar')
                                        Lista de operaciones y
                                        funciones que se pueden
                                        usar:
                                        http://code.google.com/p/numexpr/wiki/UsersGuide
Numexpr
Más numexpr:
http://code.google.com/p/numexpr/
http://www.youtube.com/watch?v=J3-oN_TulTg
https://python.g-node.org/python-autumnschool-2010/_
media/materials/starving_cpus/starvingcpus.pdf
http://www.pytables.org/docs/CISE-12-2-ScientificPro.pdf


Pequeños trucos para tus cálculos con numpy y scipy:
http://www.scipy.org/PerformanceTips
Numexpr (anexo)
•   Veamos un ejemplo
x es un numpy array de 100.000.000 floats
Evaluamos x4 (prueba de última hora)
 Python:
 y = [x1 ** 4 for x1 in x]              (~74 segundos)
 y = [x1 * x1 * x1 * x1 for x1 in x]   (~70 segundos)
 Numpy:
 y = x**4                              (6.25 segundos)
 y=x*x*x*x                             (0.993 segundos)
 Numexpr (1 thread):
 y = ne.evaluate(‘x**4’)               (0.313 segundos)
 y = ne.evaluate(‘x * x * x * x’)      (0.369 segundos)
 Pypy:
 y = [x1 ** 4 for x1 in x]              (~16 segundos)
 y = [x1 * x1 * x1 * x1 for x1 in x]   (~9.5 segundos)
 Numpypy:
 y = x**4                              (0.00002 segundos)
 y=x*x*x*x                             (0.00001 segundos)

          Numpypy status: http://buildbot.pypy.org/numpy-status/latest.html

More Related Content

What's hot

Derivación por regla de la cadena
Derivación por regla de la cadenaDerivación por regla de la cadena
Derivación por regla de la cadenaivasanpi
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtleAlbert Page
 
Torredehanoi
TorredehanoiTorredehanoi
TorredehanoiMemo Gzz
 
Computación voluntaria con CouchDB
Computación voluntaria con CouchDBComputación voluntaria con CouchDB
Computación voluntaria con CouchDBJuan J. Merelo
 

What's hot (8)

Derivación por regla de la cadena
Derivación por regla de la cadenaDerivación por regla de la cadena
Derivación por regla de la cadena
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
 
Torredehanoi
TorredehanoiTorredehanoi
Torredehanoi
 
Lenguajes para programación cuántica
Lenguajes para programación cuánticaLenguajes para programación cuántica
Lenguajes para programación cuántica
 
Big data @ lhc
Big data @ lhcBig data @ lhc
Big data @ lhc
 
Kruskal
KruskalKruskal
Kruskal
 
Algoritmo de kruskal
Algoritmo de kruskalAlgoritmo de kruskal
Algoritmo de kruskal
 
Computación voluntaria con CouchDB
Computación voluntaria con CouchDBComputación voluntaria con CouchDB
Computación voluntaria con CouchDB
 

Viewers also liked

Practica Tic
Practica TicPractica Tic
Practica Ticgrupo9
 
Linked in a new territory for communications
Linked in   a new territory for communicationsLinked in   a new territory for communications
Linked in a new territory for communicationsMyles Brown
 
Nevado realty magazine of the most exclusive luxury properties in Marbella
Nevado realty magazine of the most exclusive luxury properties in Marbella Nevado realty magazine of the most exclusive luxury properties in Marbella
Nevado realty magazine of the most exclusive luxury properties in Marbella Gines García
 
Trabajo pssat practicas pro. laboral
Trabajo pssat practicas pro. laboralTrabajo pssat practicas pro. laboral
Trabajo pssat practicas pro. laboralOmar Soto
 
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…Hahnemühle FineArt GmbH
 
Biografía de quino
Biografía de quinoBiografía de quino
Biografía de quinomaydds
 
Cómo obtener ingresos extras en tu tiempo libre
Cómo obtener ingresos extras en tu tiempo libreCómo obtener ingresos extras en tu tiempo libre
Cómo obtener ingresos extras en tu tiempo libreLaura Lima
 
Solución examen 1 con immunity debugger
Solución examen 1 con immunity debuggerSolución examen 1 con immunity debugger
Solución examen 1 con immunity debuggerTensor
 
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...Fleishman-Hillard
 
Universo Gastronômico - Dia das Mães
Universo Gastronômico - Dia das MãesUniverso Gastronômico - Dia das Mães
Universo Gastronômico - Dia das MãesSergio Molinari
 
Be a Fearless Marketer -- Conductor C3 2015 Keynote
Be a Fearless Marketer -- Conductor C3 2015 KeynoteBe a Fearless Marketer -- Conductor C3 2015 Keynote
Be a Fearless Marketer -- Conductor C3 2015 KeynoteConductor
 
SEO y Analítica Web. Optimización de resultados l OME 2009 Onetomarket
SEO y Analítica Web. Optimización de resultados l OME 2009 OnetomarketSEO y Analítica Web. Optimización de resultados l OME 2009 Onetomarket
SEO y Analítica Web. Optimización de resultados l OME 2009 OnetomarketMarketValley
 
Social Media in der Raiffeisenbank Lustenau
Social Media in der Raiffeisenbank LustenauSocial Media in der Raiffeisenbank Lustenau
Social Media in der Raiffeisenbank LustenauBauranda
 
Predicado y perífrasis verbales
Predicado y perífrasis verbalesPredicado y perífrasis verbales
Predicado y perífrasis verbalesSílvia Montals
 
Informe cristalinas ultimo informe
Informe cristalinas ultimo informeInforme cristalinas ultimo informe
Informe cristalinas ultimo informeinggonzalopg
 
Plan de acción y buena práctica para el fortalecimiento del liderazgo pedagó...
Plan de acción y buena práctica  para el fortalecimiento del liderazgo pedagó...Plan de acción y buena práctica  para el fortalecimiento del liderazgo pedagó...
Plan de acción y buena práctica para el fortalecimiento del liderazgo pedagó...Marly Rodriguez
 

Viewers also liked (20)

Business Voice January 2010
Business Voice January 2010Business Voice January 2010
Business Voice January 2010
 
Practica Tic
Practica TicPractica Tic
Practica Tic
 
Linked in a new territory for communications
Linked in   a new territory for communicationsLinked in   a new territory for communications
Linked in a new territory for communications
 
Amit Chandra
Amit ChandraAmit Chandra
Amit Chandra
 
Juanfelipe acosta 2
Juanfelipe acosta 2Juanfelipe acosta 2
Juanfelipe acosta 2
 
Nevado realty magazine of the most exclusive luxury properties in Marbella
Nevado realty magazine of the most exclusive luxury properties in Marbella Nevado realty magazine of the most exclusive luxury properties in Marbella
Nevado realty magazine of the most exclusive luxury properties in Marbella
 
Trabajo pssat practicas pro. laboral
Trabajo pssat practicas pro. laboralTrabajo pssat practicas pro. laboral
Trabajo pssat practicas pro. laboral
 
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…
ENG: Germination perfection - Certified Germination Papers for Seed Testing Acc…
 
Biografía de quino
Biografía de quinoBiografía de quino
Biografía de quino
 
Cómo obtener ingresos extras en tu tiempo libre
Cómo obtener ingresos extras en tu tiempo libreCómo obtener ingresos extras en tu tiempo libre
Cómo obtener ingresos extras en tu tiempo libre
 
Solución examen 1 con immunity debugger
Solución examen 1 con immunity debuggerSolución examen 1 con immunity debugger
Solución examen 1 con immunity debugger
 
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...
Promoting Real World Events Through Digital, Presented by Dean Russell, Fleis...
 
Universo Gastronômico - Dia das Mães
Universo Gastronômico - Dia das MãesUniverso Gastronômico - Dia das Mães
Universo Gastronômico - Dia das Mães
 
Be a Fearless Marketer -- Conductor C3 2015 Keynote
Be a Fearless Marketer -- Conductor C3 2015 KeynoteBe a Fearless Marketer -- Conductor C3 2015 Keynote
Be a Fearless Marketer -- Conductor C3 2015 Keynote
 
Smart space flyer vsn 1
Smart space flyer vsn 1Smart space flyer vsn 1
Smart space flyer vsn 1
 
SEO y Analítica Web. Optimización de resultados l OME 2009 Onetomarket
SEO y Analítica Web. Optimización de resultados l OME 2009 OnetomarketSEO y Analítica Web. Optimización de resultados l OME 2009 Onetomarket
SEO y Analítica Web. Optimización de resultados l OME 2009 Onetomarket
 
Social Media in der Raiffeisenbank Lustenau
Social Media in der Raiffeisenbank LustenauSocial Media in der Raiffeisenbank Lustenau
Social Media in der Raiffeisenbank Lustenau
 
Predicado y perífrasis verbales
Predicado y perífrasis verbalesPredicado y perífrasis verbales
Predicado y perífrasis verbales
 
Informe cristalinas ultimo informe
Informe cristalinas ultimo informeInforme cristalinas ultimo informe
Informe cristalinas ultimo informe
 
Plan de acción y buena práctica para el fortalecimiento del liderazgo pedagó...
Plan de acción y buena práctica  para el fortalecimiento del liderazgo pedagó...Plan de acción y buena práctica  para el fortalecimiento del liderazgo pedagó...
Plan de acción y buena práctica para el fortalecimiento del liderazgo pedagó...
 

Similar to Numexpr (python madrid)

Similar to Numexpr (python madrid) (20)

Análisis de datos con Python
Análisis de datos con PythonAnálisis de datos con Python
Análisis de datos con Python
 
Paralela6
Paralela6Paralela6
Paralela6
 
Guia Especial
Guia EspecialGuia Especial
Guia Especial
 
Guia Especial
Guia EspecialGuia Especial
Guia Especial
 
Análisis de colisiones de hashes sha1 y resolviendo un problema de hashing re...
Análisis de colisiones de hashes sha1 y resolviendo un problema de hashing re...Análisis de colisiones de hashes sha1 y resolviendo un problema de hashing re...
Análisis de colisiones de hashes sha1 y resolviendo un problema de hashing re...
 
Lec int logaritmos
Lec int logaritmosLec int logaritmos
Lec int logaritmos
 
Sistemas Difusos
Sistemas DifusosSistemas Difusos
Sistemas Difusos
 
News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel Computing
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Introducción a Clojure
Introducción a ClojureIntroducción a Clojure
Introducción a Clojure
 
Sistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPSSistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPS
 
05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx
 
Labo 14
Labo 14Labo 14
Labo 14
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Unidad V Tutorial de Python
Unidad V Tutorial de PythonUnidad V Tutorial de Python
Unidad V Tutorial de Python
 
python CIENTIFIFO.pdf
python CIENTIFIFO.pdfpython CIENTIFIFO.pdf
python CIENTIFIFO.pdf
 
02 introduccion a python
02 introduccion a python02 introduccion a python
02 introduccion a python
 
mecánica clásica
mecánica clásica mecánica clásica
mecánica clásica
 

Recently uploaded

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnnlitzyleovaldivieso
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxpvtablets2023
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOPsicoterapia Holística
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 

Recently uploaded (20)

Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 

Numexpr (python madrid)

  • 1. Numexpr Python-madrid 14/06/2012
  • 2. Numexpr ¿Qué es? Evalua expresiones con numpy arrays Las reescribe de forma más eficiente Las compila al vuelo (gracias a su JIT) a código para su máquina virtual (escrita en C)
  • 3. Numexpr ¿Qué es? Además tiene soporte para multi-threading que permite evitar el GIL
  • 5. Numexpr • Veamos un ejemplo x es un numpy array de 100.000.000 floats Evaluamos x4 Python: y = [x1 ** 4 for x1 in x] (~74 segundos) y = [x1 * x1 * x1 * x1 for x1 in x] (~70 segundos) Numpy: y = x**4 (6.25 segundos) ~12x y=x*x*x*x (0.993 segundos) ~70x Numexpr (1 thread): y = ne.evaluate(‘x**4’) (0.313 segundos) ~210x y = ne.evaluate(‘x * x * x * x’) (0.369 segundos) ~18x
  • 6. Numexpr • Veamos un ejemplo x es un numpy array de 100.000.000 floats Evaluamos x4
  • 7. Numexpr Operaciones CPU-bound Operaciones donde correrá más si tenemos CPU más rápida, e.g., sin, cos, exp, log, sqrt,... (funciones transcendentes) x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación sin(x) + cos(y) + tan(z) Numpy: 9.12 segundos Numexpr: 9.85 segundos (1 thread) 5.09 segundos (2 threads) 1.8x 3.48 segundos (3 threads) 2.6x 2.71 segundos (4 threads) 3.4x 2.43 segundos (5 threads) 3.8x 2.21 segundos (6 threads) 4.1x 2.02 segundos (7 threads) 4.5x 1.89 segundos (8 threads) 4.8x
  • 8. Numexpr Operaciones CPU-bound Operaciones donde correrá más si tenemos CPU más rápida, e.g., sin, cos, exp, log, sqrt,... (funciones transcendentes) x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación sin(x) + cos(y) + tan(z)
  • 9. Numexpr Operaciones Memory-bound Operaciones donde correrá más si tenemos velocidad de acceso más rápida a memoria x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación x3 + 2y – 3x/z Numpy: 9.98 segundos Numexpr: 1.19 segundos (1 thread) 8.4x 0.64 segundos (2 threads) 15.6x 0.45 segundos (3 threads) 22.2x 0.36 segundos (4 threads) 27.7x 0.33 segundos (5 threads) 30.2x 0.30 segundos (6 threads) 33.3x 0.28 segundos (7 threads) 35.6x 0.26 segundos (8 threads) 38.4x
  • 10. Numexpr Operaciones Memory-bound Operaciones donde correrá más si tenemos velocidad de acceso más rápida a memoria x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación x3 + 2y – 3x/z
  • 11. Numexpr Otro ejemplo x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación sin(sqrt(x3 + 2y – 3x/z)) Numpy: 6.08 segundos Numexpr: 5.23 segundos (1 thread) 1.2x 2.74 segundos (2 threads) 2.2x 1.88 segundos (3 threads) 3.2x 1.46 segundos (4 threads) 4.2x 1.31 segundos (5 threads) 4.6x 1.19 segundos (6 threads) 5.1x 1.08 segundos (7 threads) 5.6x 0.99 segundos (8 threads) 6.1x
  • 12. Numexpr Otro ejemplo x, y, z son numpy arrays de 100.000.000 floats Si hacemos la siguiente operación sin(sqrt(x3 + 2y – 3x/z))
  • 13. Numexpr Fuente: Francesc Alted http://www.youtube.com/watch?v=J3-oN_TulTg
  • 14. Numexpr Fuente: Francesc Alted http://www.youtube.com/watch?v=J3-oN_TulTg
  • 16. Numexpr Uso: >> import numexpr as ne >> ne.evaluate('expresión a evaluar') Lista de operaciones y funciones que se pueden usar: http://code.google.com/p/numexpr/wiki/UsersGuide
  • 18. Numexpr (anexo) • Veamos un ejemplo x es un numpy array de 100.000.000 floats Evaluamos x4 (prueba de última hora) Python: y = [x1 ** 4 for x1 in x] (~74 segundos) y = [x1 * x1 * x1 * x1 for x1 in x] (~70 segundos) Numpy: y = x**4 (6.25 segundos) y=x*x*x*x (0.993 segundos) Numexpr (1 thread): y = ne.evaluate(‘x**4’) (0.313 segundos) y = ne.evaluate(‘x * x * x * x’) (0.369 segundos) Pypy: y = [x1 ** 4 for x1 in x] (~16 segundos) y = [x1 * x1 * x1 * x1 for x1 in x] (~9.5 segundos) Numpypy: y = x**4 (0.00002 segundos) y=x*x*x*x (0.00001 segundos) Numpypy status: http://buildbot.pypy.org/numpy-status/latest.html