numba的简单使用

2人阅读 评论(0) 收藏 举报
分类:

什么是JIT?

JIT(just-in-time compilation)是动态编译的一种形式,是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与动态直译。静态编译的程序在执行前全部被翻译为机器码,而直译执行的则是一句一句边运行边翻译。即时编译器则混合了这二者,一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。

有时间的童鞋可以多研究一下编译语言与动态语言在编译运行上面有什么的异同。

什么是Numba

Numba是一个库,可以在运行时将Python代码编译为本地机器指令,是使用LLVM编译器完成的,利用了JIT的技术,使得代码在一些多次运行的,大型的运算中运行效率有较大的提高

安装numba

pip install numba

numba使用

@jit

from numba import jit
from numpy import arange

# jit decorator tells Numba to compile this function.
# The argument types will be inferred by Numba when function is called.
@jit
def sum2d(arr):
    M, N = arr.shape
    result = 0.0
    for i in range(M):
        for j in range(N):
            result += arr[i,j]
    return result

a = arange(9).reshape(3,3)
print(sum2d(a))

# 以上是官方的代码,但是本人在运行的过程中发现反而更加慢了,查了资料发现是numba在执行前需要预热资源准备的缘故,所以修改为
# a = arange(9999999).reshape(3333333,3) 运行效果就非常明显了

在测试过程中,虽然numba在一些大型的反复的科学运算中效率得到提高,但是在TensorFlow上还是没有支持此库的

相关资料:

什么是即时编译器JIT
numba官网
Python · numba 的基本应用
用numba为python写高性能C扩展

查看评论

Numba CUDA 初试

如下代码使用pure python在CPU上执行需要10s def singleTask(): res = [] M = 10000 N = 1000 for i i...
  • m0_38009702
  • m0_38009702
  • 2017-10-04 16:40:59
  • 553

python的numba加速

之前笔者写过一个pypy的加速方法,可以参阅笔者之前的文章:http://blog.csdn.net/qtlyx/article/details/78078636        但是这一方法中,我们有...
  • qtlyx
  • qtlyx
  • 2017-11-20 20:41:20
  • 1188

ubuntu16.04安装numba

ubuntu16.04安装numba
  • u010682375
  • u010682375
  • 2017-06-20 19:46:55
  • 295

推荐使用Numba加速Python科学计算

因为正在用 Python 写 lattice Boltzmann 的原因,我时不时也会研究 Python 科学计算程序的加速方法。现在为止,陆续尝试过了几个方案,包括 numexpr、Cython 等...
  • seekiu
  • seekiu
  • 2015-07-02 20:46:23
  • 12118

使用numba加速python

我们都知道 Python 比较慢,但很多时候我们都不知道为什么。虽然我用 Python 也有那么两年左右了,但也只能模模糊糊地感受到这么两点: * Python 太动态了 * 如果能事先编...
  • hl541867329
  • hl541867329
  • 2017-07-21 13:02:26
  • 1791

安装numba

numba
  • marchphy
  • marchphy
  • 2016-08-15 05:08:51
  • 965

终于成功配置numba cuda

终于成功配置numba cuda很多年前就关注了numba,numba的gpu加速以前叫numba pro,是收费的,后来整合进了numba。但是很遗憾,我从来没有成功配置过numba的cuda。终于...
  • u013975830
  • u013975830
  • 2017-12-16 23:21:22
  • 953

keras numba加速(conda>venv)

在进行大数据循环计算操作的时候,python的计算速度想要更快(需要注意的是,这里加速的都是数值运算,如果涉及到字符串的操作,请自动绕行,不然会无法运行),可以使用numba加速。 from num...
  • m0_37052320
  • m0_37052320
  • 2017-12-19 10:01:08
  • 79

numba-0.34.0-cp34--win64(64位稳定版)

  • 2017年11月09日 13:51
  • 2.37MB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1403
    排名: 3万+