首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在numba中,“jit”和“vectorize”有什么区别?

在numba中,“jit”和“vectorize”有什么区别?
EN

Stack Overflow用户
提问于 2017-11-29 19:47:18
回答 1查看 10.3K关注 0票数 15

我什么时候应该使用@vectorize?

我尝试了@jit并展示了下面代码的那一部分,

代码语言:javascript
运行
复制
from numba import jit

@jit
def kma(g,temp): 
    k=np.exp(-(g+np.abs(g))/(2*temp))   
    return k

但我的代码并没有加速算法。为什么?

EN

回答 1

Stack Overflow用户

发布于 2017-11-29 20:02:02

@vectorize用于编写一个表达式,该表达式可以一次应用一个元素(标量)到数组。@jit装饰器更通用,可以处理任何类型的计算。

对文档中的其他好处进行了详细讨论:

http://numba.pydata.org/numba-doc/latest/user/vectorize.html

您可能会问自己,“为什么我要使用@jit装饰器来编译一个简单的迭代循环呢?”答案是NumPy功能自动获得其他功能,如缩减、积累或广播。

您的代码没有加速的原因(我看到在numpy代码和非low代码之间的性能几乎相同),因为您正在执行的操作已经完全由位于numpy向量化操作后面的低级别编译代码处理。

如果展开隐式循环以避免中间数组的创建,可能会节省一些费用,但通常numba确实擅长于在numpy中不易向量化的操作。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47560627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档