热门问题
时间线
聊天
视角

Numba

来自维基百科,自由的百科全书

Numba
Remove ads

Numba是開源JIT編譯器,它通過llvmlite繫結包,使用LLVM將包括很多NumPy函式的聚焦數值計算的Python子集,翻譯成快速的機器碼。它為在CPU和GPU上並列化Python代碼提供了大量選項,而經常只需要微小的代碼變更。

快速預覽 原作者, 開發者 ...

Numba由Travis Oliphant英語Travis Oliphant在2012年開創並在github[2]上活躍開發而經常有新的發行。這個計劃由Anaconda公司的開發者驅動,並受到DARPA、Gordon和Betty Moore基金會、IntelNvidiaAMD和GitHub上的社群貢獻者的支援。

Remove ads

例子

Numba可以通過簡單的在進行數值計算的Python函式上應用numba.jit修飾詞來使用:

import numba
import random

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

即時編譯在函式被呼叫時透明地進行:

>>> monte_carlo_pi(1000000)
3.14

Numba的網站[3]包含了更多的例子,還有如何從Numba獲得更好的效能的資訊。

Remove ads

GPU支援

Numba可以把Python函式編譯成GPU代碼。目前能獲得二個後端:

替代方式

Numba是使Python快速的方法之一,它編譯包含Python和Numpy代碼的特定函式。存在很多用Python進行快速數值計算的替代方式,比如CythonTensorFlowPyTorchChainer英語Chainer、Pythran[6]PyPy

參照

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads