首页 > 其他分享 >numba-Ahead of time

numba-Ahead of time

时间:2024-05-12 22:43:31浏览次数:22  
标签:Ahead f8 module 编译 numba time my cc

参考文档:https://numba.pydata.org/numba-doc/latest/user/pycc.html

Compiling code ahead of time(运行之前编译代码)

虽然 numnb 主要是 Just-In-Time(运行时)编译,但也提供了 Ahead-Of-Tiem(提前编译)的工具。

优点:
  • AOT 编译提供了一个不依赖 numba 的编译扩展模块,它可以运行在没有 numba 的机器上(需要 numpy)
  • 没有运行时编译的开销(但请参阅 @jit cache 选项),也没有导入 numba 的开销
限制
  • AOT 编译只允许常规函数,不支持 ufuncs
  • 必须显式指定函数签名
  • 每个导出的函数只能有一个签名(但可以导出几个不同签名下的不同名称)
  • AOT 编译生产通用的 CPU 架构系列(例如 X86-64),而 JIT 编译生成适用于你当前 CPU 的优化代码

用法

独立使用
from numba.pycc import CC

cc = CC("my_module")


@cc.export("multf", "f8(f8,f8)")
@cc.export("multi", "i4(i4, i4)")
def mult(a, b):
    return a * b


@cc.export("square", "f8(f8)")
def square(a):
    return a**2


if __name__ == "__main__":
    cc.compile()

运行此代码,他将会生成一个名为“my_module”的扩展模块。根据用的实际的平台,它的名称可能是my_module.so, my_module.pyd, my_module.cpython-34m.so 等。
编译需要下载 Visual Studio ,如果编译有问题参阅:https://blog.csdn.net/ShuqiaoS/article/details/111053159

生成的模块有三个函数,multf, multi 和 square 。multi 是对32位整型(i4)操作,multf 和 square 是对双精度浮点数(f8)操作。

还有集成编译使用,参见上边的参考文档。

标签:Ahead,f8,module,编译,numba,time,my,cc
From: https://www.cnblogs.com/yimeimanong/p/18188326

相关文章

  • numba-cfunc
    参考文档:https://numba.pydata.org/numba-doc/latest/user/cfunc.htmlcfunc创建C/C++回调函数与jit相似,有一个不同点是,cfunc强制传递一个签名,用来确定C回调的可见签名。cfunc对象暴漏出编译后的C回调地址,以便可以传递给任何的外部C/C++库。他还暴漏了一个ctypes......
  • numba-jitclass
    参考文档:https://numba.pydata.org/numba-doc/latest/user/jitclass.html#jitclass对类进行装饰importnumbaasnbimportnumpyasnpfromnumba.experimentalimportjitclassspec=[("value",nb.int32),("array",nb.float32[:]),]@jitc......
  • numba-vectorize
    参考文档:https://apachecn.github.io/numba-doc-zh/#/docs/17vectorize装饰器:允许python函数的标量入参使用numpy的ufuncs。[email protected]([nb.int32(nb.int32,nb.int32)],nopython=True)deff(x,y):returnx+ya=[1,2,3]b=[4,......
  • How to Learn Item Representation for Cold-Start Multimedia Recommendation
    目录概符号说明MotivationMulti-TaskPairwiseRanking(MTPR)代码DuX.,WangX.,HeX.,LiZ.,TangJ.andChuaT.Howtolearnitemrepresentationforcold-startmultimediarecommendation?MM,2020.概作者以往的多媒体推荐对于colditems在训练阶段没有足够的......
  • LwRB - 一款适用嵌入式系统的轻量级 RingBuffer+MultiTimer - 超精简的纯软件定时器驱
    1、MicroMagic发布世界上最快的64-bitRISC-V核近日,一家位于美国加州森尼维尔的小型电子设计公司MicroMagic宣称设计、生产出了全世界最快的64位RISC-V内核,比苹果的M1芯片和ArmCortex-A9表现还要出色。消息源: http://www.micromagic.com/news/RISCv-Fastest_PR.pdf这......
  • Connecting to github.com (github.com)|20.205.243.166|:443... failed: Connection
    今天使用ubuntu虚拟机编译buidroot代码时出现一些压缩包无法从github下载,如下图: 可是拷贝上图log中的下载链接到windows浏览器进行打开会自动进行下载成功,如粘贴该链接 https://github.com/winshining/nginx-http-flv-module/archive/v1.2.8/nginx-http-flv-......
  • 使用selenium时,用webdriver初始化浏览器时间过久并伴随报错 operation timed out 的处
    我使用的系统是archlinux,在日常更新软件包时系统自动将selenium更新到目前(2024年5月)最新的版本,即:python-selenium4.20.0-1。在运行我的爬虫时报错缺少依赖包,经过一番查询得知现在的驱动由webdriver_manger统一接管了。webdrivermanger来对浏览器驱动和浏览器版本进行管理,但aur......
  • 模块学习之time、datetime模块
    【一】表示时间的三种方式时间戳元祖(struct_time):年,月,日,时,分,秒,毫秒,微妙格式化的时间字符串:xx年-xx月-xx日时:分:秒【二】time模块(1)导入模块importtime(2)时间戳时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的......
  • Java-LocalDateTime时间和时间(时间加减)
    前言一开始使用Date类来表述时间属性一个问题是时间戳的问题,另一个问题是读取Excel数据格式的时候没有那么灵活 1.基本知识LocalDateTime是Java8引入的日期和时间API中的一个类,位于java.time包中。它提供了一种更灵活、更方便的方式来处理日期和时间,相比旧的Date类更为......
  • time
    encoCi:UtimportdatetimeimperttimeimportdatetimeimporttimeclassTimeUtils:@staticmethoddefget_nowt_imestamp():returnint(round(datetime.datetime.now().timestamp()1000))@staticmethoddefget_hour_after_now_timestamp():returnint(round((datetime......