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页面存档备份,存于互联网档案馆