pathlib库(pathlib库可以删吗)

pathlib库(pathlib库可以删吗)缓存注意事项 Numba 支持将编译后的函数缓存到文件系统中 以供将来使用相同的函数 实施 通过保存编译后的目标代码 可执行代码的 ELF 对象 来完成缓存 通过使用目标代码 由于不需要编译 因此缓存的函数具有最小的开销 缓存的数据保存在缓存目录下 请参阅 NUMBA CACHE DIR 缓存的索引存储在 nbi 文件中 每个函数有一个索引 并且列出了为该函数编译的所有 load 重载签名

大家好,我是讯享网,很高兴认识大家。



缓存注意事项
Numba支持将编译后的函数缓存到文件系统中,以供将来使用相同的函数。
实施
通过保存编译后的目标代码(可执行代码的ELF对象)来完成缓存。通过使用目标代码,由于不需要编译,因此缓存的函数具有最小的开销。缓存的数据保存在缓存目录下(请参阅NUMBA_CACHE_DIR)。缓存的索引存储在.nbi文件中,每个函数有一个索引,并且列出了为该函数编译的所有load重载签名。每load过载一个文件,目标代码被存储在具有.nbc扩展名文件中。两个文件中的数据都以pickle序列化。
注意
在Python <= 3.7上,Numbapickle使用纯Python Pickler进行扩展。要使用速度更快的C Pickler,请 从pip安装pickle5。pickle5向后移植Python 3.8 Pickler功能。
缓存要求
开发人员应注意允许缓存功能的要求,以确保正在使用的功能与缓存兼容。
可缓存功能的要求:
• LLVM模块必须是独立的,这意味着如果不链接到其它已编译的单元,则它不能依赖其它模块。
• 唯一允许的外部符号来自 NRT或系统库中的其它常见符号(即libc和libm)。
调试说明:
• inttoptr在LLVM IR或 target_context.add_dynamic_add()Python的降低代码中查找的用法。指示运行时runtime地址的潜在用途。并非所有用途都是有问题的,有些用途是必需的。仅将常量整数转换为指针会影响缓存。
• 错误使用动态地址或动态标志可能会导致段错误。
• 链接顺序很重要,因为链接后会删除未使用的符号。链接应从依赖关系图的叶节点开始。
与缓存兼容的功能
明确验证了以下功能可用于缓存。
• cpu和parallel目标的ufuncs和gufuncs
• 并行加速器功能(即parallel=True)
缓存限制
这是缓存的已知限制的列表:
• 缓存无效。无法识别在另一个文件中定义的符号中的更改。
• 全局变量被视为常量。缓存将保存编译时使用的全局变量中的值。在缓存加载时,缓存的函数将不会重新绑定到全局变量的新值。
缓存共享
在另一台计算机上共享和重用缓存目录中的内容是安全的。缓存会在编译过程中记录CPU模型和可用的CPU功能。如果CPU型号和CPU功能不完全匹配,则不会考虑缓存内容。(参阅NUMBA_CPU_NAME)
如果高速缓存目录在网络文件系统上共享,仅当文件替换操作是文件系统的原子操作时,并发读取/写入高速缓存才是安全的。Numba始终首先写入唯一的临时文件,然后用该临时文件替换目标缓存文件路径。Numba可以容忍丢失的缓存文件和丢失的缓存条目。
缓存清除
修改相应的源文件后,缓存将失效。但是,有时有需要手动清除缓存目录。例如,由于未修改源文件,因此无法识别编译器中的更改。
要清除缓存,可以简单地删除缓存目录。
在运行Numba应用程序时,删除缓存目录可能会导致 OSError在编译站点引发异常。


讯享网

小讯
上一篇 2025-05-04 08:47
下一篇 2025-04-28 13:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/158362.html