Articles of numba

Numba.vectorize para CUDA: ¿Cuál es la firma correcta para devolver arrays?

Tengo una función de la siguiente estructura, @numba.jit(nopython = True) def foo(X,N): ”’ :param X: 1D numpy array :param N: Integer :rtype: 2D numpy array of shape len(X) x N ”’ out = np.ones((len(X),N)) out[:,0] = X for i in range(1,N): out[:,i] = X**i+out[:,i-1] return out que ahora estoy tratando de ejecutar en mi GPU. […]

Python: Acelerar mi desafío de código de integración Runge-Kutta

Estoy usando el código adjunto para integrar una versión del modelo Fitzhugh-Nagumo : from scipy.integrate import odeint import numpy as np import time P = {‘epsilon’:0.1, ‘a1’:1.0, ‘a2’:1.0, ‘b’:2.0, ‘c’:0.2} def fhn_rhs(V,t,P): u,v = V[0],V[1] u_t = u – u**3 – v v_t = P[‘epsilon’]*(u – P[‘b’]*v – P[‘c’]) return np.stack((u_t,v_t)) def integrate(func,V0,t,args,step=’RK4′): start = […]

Inversión matricial sin numpy

Quiero invertir una matriz sin usar numpy.linalg.inv . La razón es que estoy usando Numba para acelerar el código, pero no se admite numpy.linalg.inv, así que me pregunto si puedo invertir una matriz con el código de Python “clásico”. Con numpy.linalg.inv, un código de ejemplo se vería así: import numpy as np M = np.array([[1,0,0],[0,1,0],[0,0,1]]) […]

Bucle nested de rendimiento en numba

Por razones de rendimiento, comencé a usar Numba además de NumPy. Mi algoritmo Numba está funcionando, pero tengo la sensación de que debería ser más rápido. Hay un punto que lo está ralentizando. Aquí está el fragmento de código: @nb.njit def rfunc1(ws, a, l): gn = a**l for x1 in range(gn): for x2 in range(gn): […]

Error al instalar Numba en OS X

No puedo instalar Numba (a través de pip) en mi sistema OS X. Estoy usando Python: 2.7.11 (Homebrew) pip: 8.1.1 herramientas de configuración: 20.6.7 OS X: 10.11.4 (x86_64) Xcode: 7.3 Xcode CLT: 7.3.0.0.1.1457485338 Clang: 7.3 build 703 y he instalado los requisitos previos (creo) con brew install llvm git clone https://github.com/numba/llvmlite cd llvmlite LLVM_CONFIG=/usr/local/opt/llvm/bin/llvm-config python […]

Python Pandas: tratando de vectorizar una función usando date_range

Aquí está mi dataframe: import pandas as pd df = pd.DataFrame({ ‘KEY’: [1, 2, 3, 1, 1, 2], ‘START_DATE’: [‘2018-01-05’, ‘2018-01-04’, ‘2018-01-01’, ‘2018-01-23’, ‘2018-02-01’, ‘2018-03-11’], ‘STOP_DATE’: [‘2018-01-22’, ‘2018-03-10’, ‘2018-01-31’, ‘2018-02-15’, ‘2018-04-01’, ‘2018-07-21’], ‘AMOUNT’: [5, 3, 11, 14, 7, 9], }) df.START_DATE = pd.to_datetime(df.START_DATE, format=’%Y-%m-%d’) df.STOP_DATE = pd.to_datetime(df.STOP_DATE, format=’%Y-%m-%d’) df >>> AMOUNT KEY START_DATE STOP_DATE 0 […]

¿Puedo realizar una acumulación dinámica de filas en pandas?

Si tengo el siguiente dataframe, derivado así: df = pd.DataFrame(np.random.randint(0, 10, size=(10, 1))) 0 0 0 1 2 2 8 3 1 4 0 5 0 6 7 7 0 8 2 9 2 ¿Existe una forma eficiente de cumsum filas con un límite y cada vez que se alcanza este límite, para iniciar una […]

¿Por qué no puedo obtener la sum correcta de la matriz 1D con numba (cuda python)?

Intento usar cuda python con numba. El código es calcular la sum de una matriz 1D de la siguiente manera, pero no sé cómo obtener un resultado de valor en lugar de tres valores. python3.5 con numba + CUDA8.0 import os,sys,time import pandas as pd import numpy as np from numba import cuda, float32 os.environ[‘NUMBAPRO_NVVM’]=r’D:\NVIDIA […]

Número de Python: no se puede convertir datetime64 a datetime64 (para usar con Numba)

Quiero pasar una matriz de fecha y hora a una función Numba (que no puede ser vectorizada y de lo contrario sería muy lenta). Entiendo que Numba soporta numpy.datetime64. Sin embargo, parece que soporta datetime64 [D] (precisión del día) pero no datetime64 [ns] (milisegundos de precisión) (aprendí esto de la manera más difícil: ¿está documentado?) […]

Cómo pasar parámetros adicionales a numba cfunc pasado como LowLevelCallable a scipy.integrate.quad

La documentación discute el uso de los cfunc de cfunc como argumento scipy.integrate.quad de scipy.integrate.quad . Necesito lo mismo con parámetro adicional. Básicamente estoy tratando de hacer algo como esto: import numpy as np from numba import cfunc import numba.types voidp = numba.types.voidptr def integrand(t, params): a = params[0] # this is additional parameter return […]