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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月28日 11时35分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
即刻就业:本科毕业如何快速高薪就业?
2019-04-29
JAVA中的浮点数与二进制
2019-04-29
JAVA笔记(二)--Java初始
2019-04-29
JAVA笔记(三)--变量及运算符
2019-04-29
JAVA笔记(四)--三大结构语句
2019-04-29
JAVA语言基础(五)--数组
2019-04-29
JAVA项目案例详解带代码
2019-04-29
JAVA九种排序算法详解
2019-04-29
JAVA笔记(六)面向对象--类和对象
2019-04-29
JAVA笔记(十一)面向对象--多态
2019-04-29
webpack打包错误:Invalid configuration object. Webpack has been initialised using a configuration object
2019-04-29
TypeError: this.getOptions is not a function
2019-04-29
el-table 二维数组合并行
2019-04-29
js获取当月的天数
2019-04-29
多个相邻的盒子外边框合并的问题
2019-04-29
js实现复制功能
2019-04-29
UR5e机械臂运行一直阻塞在waitForServer
2019-04-29
ROS把pkg1下的某个头文件和源文件生成动态链接库供pkg2调用
2019-04-29