问题描述
从某种意义上说,我一直在为Numba苦苦挣扎,因为每次我为它编写函数时,第一次使用它都会有很长的预热时间。我想问一下有没有办法预热JIT功能?
例如,如果我将此函数y=1/(log(x+0.1))^2
编写为Numba函数:
@jit(parallel=True,error_model='numpy')
def f_numba(x_vec):
N=len(x_vec)
res=np.empty(N)
for i in prange(N):
x=x_vec[i]
x=np.log(x+0.1)
res[i]=1/(x*x)
return res
我使用此数组测试功能的速度:
N=150000
x_vect=np.random.rand(N)
for i in range(5):
start=timer()
f_numba(x_vect)
print('#',timer()-start)
第一次运行需要0.8秒,所有后续运行需要0.001秒。如果我能以某种方式预热JIT功能来避免这种延迟,那就太好了。我尝试使用x_warm=np.random.rand(10)
对具有较小尺寸的虚拟数组进行第一次运行,然后运行f_numba(x_warm)
,但预热时间完全没有改变。有什么建议吗?
对于完成主义,这里有个库:
import numpy as np
from timeit import default_timer as timer
from numba import jit,prange
我正在将Jupyter Notebook与Python 3.7配合使用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)