numexpr

Evaluador de expresión de matriz numérico rápido para Python y adormecidos.
Descargar ahora

numexpr Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • MIT/X Consortium Lic...
  • Precio:
  • FREE
  • Nombre del editor:
  • David M. Cooke, Tim Hochberg, Francesc Alted, Ivan Vilata
  • Sitio web del editor:
  • http://code.google.com/u/david.m.cooke/

numexpr Etiquetas


numexpr Descripción

Evaluador de expresión de matriz numérico rápido para Python y NOMPY. NumExpr es una biblioteca de Python que evalúa las expresiones de matriz de operador múltiple muchas veces más rápido que la lata nombrada. Acepta la expresión como una cadena, lo analiza, lo reescribe de manera más eficiente y lo compila a un código de Python más rápido sobre la marcha. Es lo mejor que es la mejor cosa para escribir la expresión en C y compilarla con un compilador especializado justo a tiempo (JIT), es decir, no requiere un compilador en tiempo de ejecución. Por lo que funciona, hay dos extremos para la evaluación de la expresión de matriz. Cada operación binaria puede ejecutarse por separado sobre los elementos de la matriz y devolver una matriz temporal. Esto es lo que hace: 2 * a + 3 * B usa tres matrices temporales tan grandes como A o B. Esta estrategia desperdicia memoria (un problema si las matrices son grandes). Tampoco es un buen uso de la memoria caché de la CPU porque los resultados de 2 * A y 3 * B no estarán en caché para la adición final si las matrices son grandes. El otro extremo es hacer unir sobre cada elemento: para i en xrange (len (a)): C = 2 * a + 3 * b Esto conserva la memoria y es bueno para el caché, pero en cada iteración Python debe verificar el tipo de cada operando y seleccione La rutina correcta para cada operación. Todos, excepto los primeros marcos de este tipo, se desperdician, ya que las matrices de entrada no están cambiando. Numexpr usa un enfoque intermedio. Las matrices se manejan en trozos (la primera pasada utiliza 256 elementos). Como código de Python, se ve algo así: para i en xrange (0, len (a), 256): R0 = A R1 = B Multiplica (R0, 2 , R2) Multiplicar (R1, 3, R3) Agregar (R2, R3, R2) C = R2 La forma de 3-argumento de agregar () almacena el resultado en el tercer argumento, en lugar de asignar un nuevo formación. Esto logra un buen equilibrio entre la predicción del caché y la rama. La máquina virtual está escrita en su totalidad en C, lo que lo hace más rápido que el Python anterior. Para obtener más información sobre NumExpr, lea la descripción general de Numexpr escrita por el autor original (David M. Cooke). Las muestras de Uso es simple: >>> Importar numpy como NP >>> Importar NumExpr como NE >>> A = NP.Arange (1E6) # Elija matrices grandes para un alto rendimiento >>> B = NP.Arange (1E6) >>> ne.evaluate ("A + 1 ") # una expresión de expresión simple () >>> ne.evaluar ('A * B-4.1 * A> 2.5 * B') # Un onearray más complejo (, DTYPE = BOOL) y rápido ...: - ) >>> Timeit A ** 2 + B ** 2 + 2 * A * B10 Loops, lo mejor de 3: 33.3 ms por bucle >>> TimeIt Ne.evaluate ("A ** 2 + B ** 2 + 2 * A * B ") 100 bucles, lo mejor de 3: 7.96 ms por bucle # 4.2x más rápido que los requisitos nombrados: · Python · NOMBRES


numexpr Software relacionado

Jopt.sdk

JOPT.SDK es una biblioteca de optimización de tour para Java que utiliza algoritmos genéticos especializados. ...

62

Descargar

netcdf4

PYTHON / INTERNA DE INTERIOR A LA BIBLIOTECA DE NETCDF (versiones 3 y 4) ...

152

Descargar

libgsf

LIBGSF tiene como objetivo proporcionar una abstracción de E / S extensible eficiente para tratar con diferentes formatos de archivo estructurados. ...

203

Descargar