kin*_*hen 7 python jit numpy numba
我什么时候应该使用@vectorize?
我试过@jit并显示下面的部分代码,
from numba import jit
@jit
def kma(g,temp):
k=np.exp(-(g+np.abs(g))/(2*temp))
return k
Run Code Online (Sandbox Code Playgroud)
但我的代码没有加速算法.为什么?
@vectorize用于编写可以一次将一个元素(标量)应用于数组的表达式.该@jit装饰是更一般的,可以在任何类型的计算工作.
有关文档中其他好处的详细讨论:
http://numba.pydata.org/numba-doc/latest/user/vectorize.html
你可能会问自己,"为什么我要经历这个而不是使用@jit装饰器编译一个简单的迭代循环?".答案是NumPy ufuncs会自动获得其他功能,如缩小,累积或广播.
你的代码没有被加速的原因(我看到jitted和非jitted代码之间几乎相同的性能)是你正在执行的操作已经完全由位于numpy后面的低级编译代码处理矢量化操作.
如果展开隐式循环以避免创建中间数组,可能会节省一些成本,但通常numba对于不容易在numpy中进行矢量化的操作非常擅长.
| 归档时间: |
|
| 查看次数: |
3369 次 |
| 最近记录: |