安装与Python 3.5适配的numba

文章目录

  • 1 环境
  • 2 安装numba
  • 3 Numba简介
    • 3.1 加速Python函数
    • 3.2 为科学计算而构建
    • 3.3 并行化你的算法
    • 3.4 可移植编译
  • 4 参考

1 环境

操作系统:Ubuntu 16.04

Python版本:Python 3.5

2 安装numba

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numba

但是报错,终端部分输出为:

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting numba==0.30
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/14/51/27321311a455a7ba1431245e5ffa8084bea98b31b28034e56b3f47e9fe90/numba-0.30.0.tar.gz (1.2 MB)
     |████████████████████████████████| 1.2 MB 347 kB/s
Collecting llvmlite
  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/50/cc/04526507e80d546be5688ce0246e40277b61e7949c3347c6609b6a4154cf/llvmlite-0.32.1.tar.gz (104 kB)
  
Successfully built numba
Failed to build llvmlite

可见numba依赖llvm,但是llvm安装失败。

原因:

Python版本为3.5时,适配的llvmlite版本为llvmlite-0.31.0-cp35-cp35m-manylinux1_x86_64.whl,但是自动下载的是llvmlite-0.32.1

解决办法:

1.首先安装llvmlite-0.31

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple llvmlite==0.31

2.然后再安装numba

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numba

3 Numba简介

Numba使Python代码速度更快。

Numba是一个开源的JIT编译器,它将Python和NumPy代码的子集转换成快速的机器代码。

3.1 加速Python函数

Numba在运行时使用行业标准LLVM编译器库将Python函数转换为优化的机器代码。Numba用Python编译的数值算法可以接近C或FORTRAN的速度。

您不需要替换Python解释器,运行单独的编译步骤,甚至安装了C/C++编译器。只需对Python函数应用一个Numba修饰符,Numba就会完成其余的工作。

from numba import jit
import random

@jit(nopython=True)
def monte_carlo_pi(nsamples):
    acc = 0
    for i in range(nsamples):
        x = random.random()
        y = random.random()
        if (x ** 2 + y ** 2) < 1.0:
            acc += 1
    return 4.0 * acc / nsamples

3.2 为科学计算而构建

Numba设计用于NumPy数组和函数。Numba为不同的数组数据类型和布局生成专门的代码,以优化性能。特殊的decorator可以创建在NumPy数组上广播的通用函数,就像NumPy函数一样。

Numba还可以与Jupyter笔记本进行交互计算,并与分布式执行框架(如Dask和Spark)配合使用。

@numba.jit(nopython=True, parallel=True)
def logistic_regression(Y, X, w, iterations):
    for i in range(iterations):
        w -= np.dot(((1.0 /
              (1.0 + np.exp(-Y * np.dot(X, w)))
              - 1.0) * Y), X)
    return w

3.3 并行化你的算法

Numba提供了一系列的选项来并行化cpu和gpu的代码,通常只需要少量的代码更改。

3.4 可移植编译

发布高性能Python应用程序,而不必担心二进制编译和打包。源代码仍然是纯Python,而Numba在运行时处理编译。我们在200多种不同的平台配置中连续测试Numba。

Numba支持Intel和AMD x86、POWER8/9、ARM CPU、NVIDIA和AMD GPU、Python 2.7和3.4-3.7,以及Windows/macOS/Linux。大多数系统的预编译Numba二进制文件以conda包和pip可安装轮子的形式提供。

4 参考

  1. https://blog.csdn.net/Jorbo_Li/article/details/111603924
  2. https://numba.pydata.org/

你可能感兴趣的:(安装与Python 3.5适配的numba)