numba用户手册8. 提前编译代码AOT
发布日期:2021-06-29 14:44:00 浏览次数:3 分类:技术文章

本文共 1787 字,大约阅读时间需要 5 分钟。

numba用户手册

提前编译代码AOT--------------------------------------------------------------------------------------------------------------  6.1.说明:1)Numba的主要用例是即时编译,还提供提前编译(AOT)的功能.2)AOT编译生成一个不依赖于Numba已编译扩展模块:可在未装Numba的计算机上分发该模块(需Numpy)3)运行时没有编译开销6.2.局限性1)AOT编译仅允许使用常规功能,而不能使用ufuncs;必须明确指定功能签名.2)每个导出的函数只能有一个签名(但是您可以使用不同的名称导出几个不同的签名)3) AOT编译为CPU体系结构系列生成通用代码,JIT编译为特定CPU模型生成优化的代码--------------------------------------------------------------------------------------------------------------   # 实例1:from numba.pycc import CCcc = CC('my_module')cc.verbose = True                   # 取消注释以下行,以打印出编译步骤@cc.export('multf', 'f8(f8, f8)')   # 双精度浮点@cc.export('multi', 'i4(i4, i4)')   # 32位整数def mult(a, b):    return a * b@cc.export('square', 'f8(f8)')def square(a):    return a ** 2if __name__ == "__main__":          # 生成名为的扩展模块 my_module.pyd    cc.compile()测试:import my_modulemy_module.multi(3, 4)#12my_module.square(1.414)             # 1.9993959999999997--------------------------------------------------------------------------------------------------------------  6.2.Distutils集成# setup.py用distutils或setuptools 将扩展模块编译步骤集成到脚本中:# 实例2:from distutils.core import setupfrom source_module import ccsetup(..., ext_modules=[cc.distutils_extension()])#source_module是定义模块cc对象.--------------------------------------------------------------------------------------------------------------  6.3.签名语法# 导出的签名的语法与@jit 装饰器中的语法相同.# 实例3:@cc.export('centdiff_1d', 'f8[:](f8[:], f8)')#'(f8[:], f8)'省略返回类型由Numba推断出来def centdiff_1d(u, dx):             #导出在一维数组上二阶差    D = np.empty_like(u)    D[0] = 0    D[-1] = 0    for i in range(1, len(D) - 1):        D[i] = (u[i+1] - 2 * u[i] + u[i-1]) / dx**2    return D--------------------------------------------------------------------------------------------------------------

 

 

转载地址:https://chunyou.blog.csdn.net/article/details/103963076 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:numba用户手册9. numba线程
下一篇:numba用户手册 7.@cfunc

发表评论

最新留言

很好
[***.229.124.182]2024年04月28日 11时35分23秒