Numba

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Numba
File:Numba logo.svg
原作者Continuum Analytics
開發者社區計劃
首次發布2012年8月15日,​13年前​(2012-08-15
當前版本0.60.0[1](2024年1月13日,​2年前​(2024-01-13
預覽版本0.61.0dev0(2024年5月15日,​2年前​(2024-05-15
源代碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
編程語言Python, C
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    操作系統跨平台
    類型科學計算英語List of numerical analysis software
    許可協議
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      網站numba.pydata.org

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

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

      例子[編輯]

      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獲得更好的性能的信息。

      GPU支持[編輯]

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

      替代方式[編輯]

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

      引用[編輯]

      1. ^ Releases · numba/numba. GitHub. [2024-11-01]. (原始內容存檔於2022-08-31) (English). 
      2. ^ github頁面存檔備份,存於網際網路檔案館
      3. ^ 網站頁面存檔備份,存於網際網路檔案館
      4. ^ Numba for CUDA GPUs. [2020-09-29]. (原始內容存檔於2019-04-16). 
      5. ^ Numba for AMD ROC GPUs. [2020-09-29]. (原始內容存檔於2019-04-16). 
      6. ^ Pythran頁面存檔備份,存於網際網路檔案館