版本 0.57.1 (2023年6月21日)
拉取请求:
PR #8965: 修复 np.angle 的返回数据类型 (guilhermeleobas esc)
PR #8947: 引入内部 _isinstance_no_warn (guilhermeleobas esc)
PR #9005: 修复: 问题 #8923 - 避免在 CUDA ufuncs 中出现虚假的设备到主机传输 (gmarkall)
作者:
版本 0.57.0 (2023年5月1日)
此版本继续为 Numba 添加新功能、错误修复和稳定性改进。请注意,此版本包含大量弃用和即将弃用的通知,旨在为未来开发 Numba 的新技术提供便利。另请注意,这将是 Numba 团队支持 Windows 32 位包的最后一个版本。
核心依赖升级的亮点:
支持 Python 3.11(最低要求已移至 3.8)
支持NumPy 1.24(最低要求提升至1.21)
Python 语言支持增强:
异常类现在支持非编译时常量的参数。
内置函数
hasattr
和getattr
支持编译时常量属性。内置函数
str
和repr
现在与它们的 Python 实现类似。可以为类型关联自定义的__str__
和__repr__
函数,并且它们会按预期工作。Numba 在
str.startswith
中的 unicode 功能现在支持 kwargsstart
和end
。min
和max
现在支持布尔类型。增加了对
dict(iterable)
构造函数的支持。
NumPy 功能/增强:
最大的新功能集是在
numpy.random.Generator
支持中,现在支持绝大多数常用的分布。即:Generator.beta
Generator.chisquare
Generator.exponential
Generator.f
Generator.gamma
Generator.geometric
Generator.integers
Generator.laplace
Generator.logistic
Generator.lognormal
Generator.logseries
Generator.negative_binomial
Generator.noncentral_chisquare
Generator.noncentral_f
Generator.normal
Generator.pareto
Generator.permutation
Generator.poisson
Generator.power
Generator.random
Generator.rayleigh
Generator.shuffle
Generator.standard_cauchy
Generator.standard_exponential
Generator.standard_gamma
Generator.standard_normal
Generator.standard_t
Generator.triangular
Generator.uniform
Generator.wald
Generator.weibull
Generator.zipf
在 NumPy
ndarray
类型上实现了nbytes
属性。现在支持嵌套数组类型的嵌套。
datetime
和timedelta
类型可以转换为int
。F
顺序迭代在ufunc
生成中得到支持,以在使用主要为F
顺序数组的组合时提高性能。以下功能现在也已支持:
np.argpartition
np.isclose
np.nan_to_num
np.new_axis
np.union1d
核心变更亮点:
为了将Numba的许多内部实现,包括Python和NumPy函数,从低级扩展API转换为高级扩展API(
numba.extending
),进行了大量的重构工作。__repr__
方法支持 Numba 类型。扩展API(
numba.extending
)中适用函数的默认target
现在是"generic"
。这意味着@overload*
和@intrinsic
函数将默认被CPU和CUDA目标接受。在编译代码中,现在支持对 Numba 类型的
__getitem__
使用。即types.float64[:, ::1]
现在可以编译。
性能:
str.find()
和str.rfind()
的性能已得到提升。__getitem__
的 Unicode 支持现在避免了分配并返回一个视图。numba.typed.Dict
字典现在接受一个n_keys
选项,以启用将字典实例分配到预定的初始大小(有助于避免调整大小!)。Numba 运行时 (NRT) 在性能和安全性方面得到了改进:
NRT 内部统计计数器现在默认关闭(移除原子锁争用)。
默认情况下,调试缓存行填充是关闭的。
NRT 仅在编译开始时编译一次,而不是在函数装饰时编译,这提高了导入速度。
NRT 分配调用默认都是通过一个“检查过的”层来进行的。
CUDA:
新的 NVIDIA 硬件和软件兼容性/支持:
工具包:CUDA 11.8 和 12,11.x 版本具有次要版本兼容性。
打包:NVIDIA 打包的 CUDA 工具包 conda 包。
硬件:Hopper、Ada Lovelace 和 AGX Orin。
float16
支持:现在完全支持算术运算。
一种新方法,
is_fp16_supported()
,以及设备属性,supports_float16
,用于检查float16
支持的可用性。
功能:
高级扩展API现在在CUDA目标中已完全支持。
现在支持对多个签名进行急切编译、从广义ufuncs输出多个结果,以及指定ufuncs的返回类型。
现在可以在内核中调用有限的一组 NumPy ufuncs(三角函数)。
行信息质量改进:启用行信息不再导致生成代码的任何变化。
弃用:
numba.pycc
模块及其所有内容现在处于待弃用状态。期待已久的
object mode
回退 的全面弃用正在进行中。这一变化意味着没有关键字参数的@jit
最终将等同于@njit
。@generated_jit
装饰器已被弃用,因为 Numba 扩展 API 提供了更好的支持,功能更为全面,特别是通过@numba.extending.overload
。
版本支持/依赖变化:
setuptools
包现在是一个可选的运行时依赖,而不是一个必需的运行时依赖。TBB 线程层现在需要 2021.6 或更高版本。
LLVM 14 现在通过
llvmlite
在所有平台上都得到了支持。
拉取请求:
PR #5113: 修复Interval扩展示例中的错误处理 (esc eric-wieser)
PR #7067: 实现 np.isclose (guilhermeleobas)
PR #7733: 修复 /tmp/tmp 访问问题 (ChiCheng45)
PR #7884: 实现 getattr 内置函数。(stuartarchibald)
PR #8041: 支持 Numpy BitGenerators PR#4: Generator().integers() 支持。(kc611)
PR #8106: 移除将原子JIT函数注入NRT memsys。(stuartarchibald)
PR #8134: 在JIT中支持非常量异常值 (guilhermeleobas sklam)
PR #8198: 更新发布模板以包含更新版本表。(stuartarchibald)
PR #8200: 使NRT默认使用“不安全”的分配API。(stuartarchibald)
PR #8201: 将 llvmlite 依赖更新至 0.40.dev0 以支持 Numba 0.57.0dev0 (stuartarchibald)
PR #8216: 杂务:为GitHub actions设置权限 (naveensrinivasan)
PR #8217: 修复文档中的语法 (jorgepiloto)
PR #8228: 修复了 @vectorize 文档字符串中的拼写错误和 NumPy 的拼写错误。(stuartarchibald)
PR #8234: 用 @overload 替换 20 个 NumPy 函数的 @overload_glue (guilhermeleobas)
PR #8235: 使NRT统计计数器可选。(stuartarchibald)
PR #8240: 为 Dispatcher 添加 get_shared_mem_per_block 方法 (testhound)
PR #8241: 重新排序 typeof 检查以避免在 StructrefProxy __hash__ 上出现无限循环 (DannyWeitekamp)
PR #8243: 在
reference/numpysupported.rst
中添加一个注释 ()PR #8245: 修复
CONTRIBUTING.md
中的链接 ()PR #8247: 修复问题 8127 (bszollosinagy)
PR #8250: 修复问题 8161 (bszollosinagy)
PR #8255: CUDA: 将 numba.cuda.tests.doc_examples.ffi 设为模块以修复 #8252 (gmarkall)
PR #8258: 重构 np.where 以使用重载 (guilhermeleobas)
PR #8259: 添加
np.broadcast_to(scalar_array, ())
(guilhermeleobas)PR #8264: 从
parfor_lowering_utils.py
中移除mk_unique_var
(guilhermeleobas)PR #8265: 从
array_analysis.py
中移除mk_unique_var
(guilhermeleobas)PR #8266: 在
untyped_passes.py
中移除mk_unique_var
(guilhermeleobas)PR #8271: 使用
@overload
、@overload_attribute
和@intrinsic
实现一些 CUDA 内部函数 (gmarkall)PR #8274: 更新0.56版本的版本支持表文档。(stuartarchibald)
PR #8275: 更新 CHANGE_LOG 为 0.56.0 最终版 (stuartarchibald)
PR #8289: 恢复 #8265。 (stuartarchibald)
PR #8295: 向 Dispatcher 添加 get_const_mem_size 方法 (testhound gmarkall)
PR #8297: 为 CUDAUFuncDispatcher 添加 __name__ 属性及测试用例 (testhound)
PR #8315: 为 Dispatcher 添加 get_local_mem_per_thread 方法 (testhound)
PR #8319: 将最低支持的 Python 版本提升至 3.8 (esc stuartarchibald jamesobutler)
PR #8321: 修复 literal_unroll 传递在不符合规范的循环上错误退出的问题。(stuartarchibald)
PR #8325: 移除 stencil.py 中对 mk_unique_var 的使用 (bszollosinagy)
PR #8326: 从
parfor_lowering.py
中移除mk_unique_var
(guilhermeleobas)PR #8331: 扩展文档,添加如何从Numba调用C函数的信息 (guilhermeleobas)
PR #8334: 添加 dict(*iterable) 构造函数 (guilhermeleobas)
PR #8335: 移除已弃用的pycc脚本及相关源代码。(stuartarchibald)
PR #8348: 为 Dispatcher 添加 get_max_threads_per_block 方法 (testhound)
PR #8354: 将 setuptools 固定在 < 65 版本,并在 RTD 上从 mamba 切换到 conda (esc gmarkall)
PR #8357: 清理 buildscripts 目录。(stuartarchibald)
PR #8376: 修复问题 8370 (bszollosinagy)
PR #8388: 移除更多对pycc二进制文件的引用。(stuartarchibald)
PR #8415: 从 lower_builtins 重构
numba.np.arraymath
方法到 overloads (kc611)PR #8422: 将公共CI构建切换为使用来自conda包的gdb。(stuartarchibald)
PR #8423: 移除面向公众和CI中对32位Linux支持的引用。(stuartarchibald, 此外,我们感谢 jamesobutler 在PR #8319 中向类似目标的贡献)
PR #8427: 缩短验证测试发现的时间。(stuartarchibald)
PR #8431: 将
@overload_glue
替换为@overload
用于np.linspace
和np.take
(guilhermeleobas)PR #8432: 重构 carray/farray 以使用 @overload (guilhermeleobas)
PR #8435: 将
np.atleast_?
函数从glue_lowering
迁移到overload
(apmasell)PR #8438: 使 njit 装饰器的 NRT 初始化更加懒惰。(stuartarchibald)
PR #8439: 更新贡献文档,包括格式化更改的政策。(stuartarchibald)
PR #8440: [DOC]: 用 intel-cmplr-lib-rt 替换 icc_rt (oleksandr-pavlyk)
PR #8442: 实现 hasattr(), str() 和 repr()。(stuartarchibald)
PR #8446: 在 ImportError 中添加版本信息 (raybellwaves)
PR #8473: 更改 _pymodule.h 中的包含样式,并删除两个头文件中未使用或重复的头文件 ()
PR #8476: 使 setuptools 在运行时可选。(stuartarchibald)
PR #8494: 在
numba/cpython/cmathimpl.py
中容易的地方移除context.compile_internal
(guilhermeleobas)PR #8495: 在
numba/cpython/listobj.py
中容易的地方移除了 context.compile_internal (guilhermeleobas)PR #8496: 重写大部分集合API以使用重载 (guilhermeleobas)
PR #8499: 弃用 numba.generated_jit (stuartarchibald)
PR #8508: 这更新了发布检查清单,以捕捉更多的检查项。(stuartarchibald)
PR #8517: 使一些 typedlist C-API 公开 ()
PR #8518: 调整模板测试以使用硬编码的Python源代码,而不是AST。(stuartarchibald)
PR #8522: 在 jitclass 文档中从 numba.experimental 导入 jitclass (armgabrielyan)
PR #8524: 修复 stencil.rst 中的语法错误 (armgabrielyan)
PR #8526: 修复损坏的URL (Nimrod0901)
PR #8527: 修复troubleshoot.rst中的语法错误 (armgabrielyan)
PR #8539: 修复 #8534, np.broadcast_to 应更新数组大小属性。(stuartarchibald)
PR #8541: 移除Azure CI windows构建中“free”通道的恢复。(stuartarchibald)
PR #8544: 移除对 npy_<impl> ufunc 循环的依赖。(stuartarchibald)
PR #8547: [Unicode] 为Unicode操作添加更多字符串视图用法 ()
PR #8549: 修复Azure CI构建中的rstcheck,更新sphinx依赖并使文档与之匹配 (stuartarchibald)
PR #8554: 使
@overload
的目标默认为 ‘generic’。(stuartarchibald gmarkall)PR #8557: [Unicode] 支持 startswith 方法使用参数、起始和结束位置。
PR #8566: 更新工作队列在并发访问时的中止消息。(stuartarchibald)
PR #8587: 移除未使用的引用计数移除代码,清理
core/cpu.py
模块。(stuartarchibald)PR #8588: 移除降低扩展钩子,替换为传递基础设施。(stuartarchibald)
PR #8597: 防止使用 NumPy 的 MaskedArray。(stuartarchibald)
PR #8606: [文档] 使 RewriteArrayExprs 文档更加精确 ()
PR #8623: 添加了对 np.nan_to_num 的支持 (thomasjpfan)
PR #8630: 修复 #8628: 不要用非 float64 的 NumPy 标量测试 math.trunc (gmarkall)
PR #8639: Python 3.11 - 修复剩余的大部分测试失败。(stuartarchibald)
PR #8661: 在测试套件中使外部编译器发现变为惰性。(stuartarchibald)
PR #8666: 更新以支持Python 3.8基线/Python 3.11迁移 (stuartarchibald)
PR #8673: 在Azure CI的Windows构建中启用CUDA模拟器测试。(stuartarchibald)
PR #8675: 将
always_run
测试装饰器设为标签并改进分片测试。(stuartarchibald)PR #8680: 调整 flake8 配置以兼容 flake8=6.0.0 (thomasjpfan)
PR #8702: 为 objmode 回退的弃用/移除提供具体时间表。(stuartarchibald)
PR #8711: Python 3.11 跟踪支持(#8670 的延续)。(AndrewVallette sklam)
PR #8723: 在
cuda.compile_ptx
中检查空返回类型 (brandonwillard)PR #8726: 使 Numba 依赖检查在 Numba 内部导入之前运行。(stuartarchibald)
PR #8728: 修复自升级到 flake8=6.x 后的 flake8 检查 (stuartarchibald)
PR #8729: 在多个进程中运行 flake8 CI 步骤。(stuartarchibald)
PR #8732: 添加 numpy argpartition 函数支持 ()
PR #8735: 更新机器人以关闭等待作者超过3个月的PR (guilhermeleobas)
PR #8736: 实现 np.lib.stride_tricks.sliding_window_view ()
PR #8744: 更新 CtypesLinker::add_cu 错误信息以包含 fp16 使用情况 (testhound gmarkall)
PR #8765: BLD: 移除 distutils (fangchenli)
PR #8771: 将供应商的 Versioneer 从 0.14 更新到 0.28 (oscargus gmarkall)
PR #8780: 改进了原子CAS的文档 (MiloniAtal)
PR #8782: 修改了转义错误的措辞 (MiloniAtal)
PR #8790: CUDA 比较并交换带索引 (ianthomas23)
PR #8795: 为
numba.pycc
添加待弃用警告 (stuartarchibald)PR #8802: 将最低支持的 NumPy 版本移至 1.21 (stuartarchibald)
PR #8803: 通过将
compile_ptx
改为接受签名而不是参数元组,尝试修复 #8789 的问题(KyanCheung)PR #8819: 在
@njit
代码中支持 Numba 类型的“静态” __getitem__。(stuartarchibald)PR #8822: 合并 py3.11 分支到主分支 (esc AndrewVallette stuartarchibald sklam)
PR #8833: 修复 typeguard 导入钩子位置。(stuartarchibald)
PR #8836: 修复失败的 typeguard 测试。(stuartarchibald)
PR #8837: 更新 AzureCI 矩阵以支持 Python 3.11/NumPy 1.21..1.24 (stuartarchibald)
PR #8842: 修复了buildscripts、setup.py、docs,以适应setuptools变为可选。(stuartarchibald)
PR #8843: 在AzureCI中将typeguard固定为3.0.1版本。(stuartarchibald)
PR #8852: 由于编译错误,禁用SLP矢量化。(stuartarchibald)
PR #8855: DOC: 在installing.rst中将``pip``放入双反引号中 (F3eQnxN3RriK)
PR #8856: 更新 TBB 以默认使用 >= 2021.6 版本。 (kozlov-alexey stuartarchibald)
PR #8858: 更新
@jit
使用中 objmode 回退的弃用通知。(stuartarchibald)PR #8869: 更新 CHANGE_LOG 为 0.57.0rc1 (stuartarchibald esc gmarkall)
PR #8870: 修复自Python 3.11以来CUDA调试测试中的操作码“拼写”变化。(stuartarchibald)
PR #8879: 从生成器测试中移除
compile_isolated
的使用。(stuartarchibald)PR #8880: 修复
test_azure_config
中 pyyaml 缺少的依赖保护。(stuartarchibald)PR #8887: 更新 PyPI 支持的版本标签 (bryant1410)
PR #8907: 解决 #8898 问题。将
exp2``(和 ``log2
)调用推迟到 Numba 内部符号。(stuartarchibald)PR #8909: 修复 #8903。从
@{gu,}vectorize
引发的NumbaDeprecationWarning
。(stuartarchibald)PR #8929: 更新 0.57.0 最终版本的 CHANGE_LOG。(stuartarchibald)
作者:
alanhdu 是一个GitHub用户。
AndrewVallette 的中文翻译
armgabrielyan 的中文翻译
aseyboldt 是一个GitHub用户。
Biswa96 的链接
bryant1410 的链接
cako 是一个开源项目。
ChiCheng45 是一个GitHub用户。
DannyWeitekamp 的链接
dlee992 的 GitHub 链接
dmbelov 是一个GitHub用户。
DrTodd13 的链接
eric-wieser 的链接
esc 是一个GitHub项目。
F3eQnxN3RriK 的链接
guilhermeleobas 的链接
ianthomas23 的链接
jorgepiloto 是一个GitHub用户。
k1m190r 的链接
kc611 是一个GitHub项目。
kozlov-alexey 的链接
KyanCheung 是一个GitHub用户。
luk-f-a 是一个GitHub用户。
Matt711 是一个GitHub用户。
naveensrinivasan 是一个GitHub用户。
neilflood 的链接
Nimrod0901 的链接
njriasan 是一个GitHub用户。
oscargus 是一个开源项目。
sklam 是一个开源项目。
stuartarchibald 的中文翻译
tpwrules 是一个 GitHub 项目。
版本 0.56.4 (2022年11月3日)
这是一个修复版本,用于修复与CUDA目标中的 .view()
方法相关的回归问题,该问题在使用NumPy版本1.23.0或更高版本时出现在CUDA设备数组上。
拉取请求:
PR #8552: 更新 0.56.4 的版本支持表。(stuartarchibald)
PR #8553: 更新 CHANGE_LOG 为 0.56.4 (stuartarchibald)
PR #8570: 发布 0.56 分支:修复 CUDA 的
target="generic"
重载 (gmarkall)PR #8571: 对 CHANGE_LOG 的额外更新,版本 0.56.4 (stuartarchibald)
作者:
stuartarchibald 的中文翻译
版本 0.56.3 (2022年10月13日)
这是一个错误修复版本,旨在移除对 setuptools
包的版本限制,并修复与将零长度设备数组复制到零长度主机数组相关的CUDA目标中的一个错误。
拉取请求:
PR #8486: 在Azure中将TBB开发包限制为支持的版本。(stuartarchibald)
PR #8503: 更新 0.56.3 版本支持表 (stuartarchibald)
PR #8504: 更新 CHANGE_LOG 为 0.56.3 (stuartarchibald)
作者:
stuartarchibald 的中文翻译
版本 0.56.2 (2022年9月1日)
这是一个支持 NumPy 1.23 并修复 CUDA 函数缓存的错误修复版本。
拉取请求:
PR #8239: 添加装饰器以在子进程中运行测试 (stuartarchibald)
PR #8276: 将 Azure 迁移至使用 macos-11 (stuartarchibald)
PR #8310: CUDA: 修复问题 #8309 - 原子操作在复数组件上不起作用 (Graham Markall)
PR #8342: 为Azure管道CI升级到ubuntu-20.04 (jamesobutler)
PR #8356: 更新 setup.py、buildscripts、CI 和文档以要求 setuptools<60 (stuartarchibald)
PR #8374: 不要为CUDA代码库pickle LLVM IR (Graham Markall)
PR #8377: 添加对 NumPy 1.23 的支持 (stuartarchibald)
PR #8384: 将 strace() 检查移入实际需要它的测试中 (stuartarchibald)
PR #8386: 修复 numba.get_thread_id 的文档 (stuartarchibald)
PR #8407: 将 NumPy 版本固定在 1.18-1.24 (Andre Masella)
PR #8412: 为 0.56.1 创建变更日志 (Andre Masella)
PR #8413: 修复NumPy 1.23的Azure CI并使用conda-forge的scipy (Siu Kwan Lam)
PR #8414: 0.56.2 的热修复 (Siu Kwan Lam)
作者:
Andre Masella 的链接
esc 是一个GitHub项目。
Siu Kwan Lam 的链接
stuartarchibald 的中文翻译
版本 0.56.1 (未发布)
由于发布过程中出现问题,该版本被跳过。
版本 0.56.0 (2022年7月25日)
此版本继续为 Numba 添加新功能、错误修复和稳定性改进。请注意,这将是支持 Python 3.7 的最后一个版本,因为下一个版本系列(Numba 0.57)将支持 Python 3.11!另请注意,这将是 Numba 团队支持的最后一个支持 linux-32 包的版本。
Python 语言支持增强:
在Python 3.10中,已添加了对大型内联字典和内部调用具有大量关键字参数的函数的支持。
operator.mul
现在可以用于list
。字面切片,例如
slice(1, 10, 2)
可以从nopython
模式函数中返回。len
函数现在可以用于dict_keys
、dict_values
和dict_items
。Numba 的
set
实现现在支持引用计数的项目,例如字符串。
Numba 特定的功能增强:
实验性的
jitclass
功能增加了对大量builtin
方法的支持,例如为jitclass
类型声明__hash__
或__getitem__
。现在可以在已经用
@jit
系列装饰器装饰的函数上使用@vectorize
。名称混淆已更新,以发出与Python中函数名称完全匹配的编译函数名称。这意味着调试器,如GDB,可以直接在Python函数名称上设置断点。
已添加一个 GDB “漂亮打印” 支持模块,当加载到 GDB 中时,Numba 对 Python/NumPy 类型的内部表示会在 GDB 中以它们在 Python 中的形式呈现。
在
@jit
系列装饰器中添加了一个实验性选项,用于完全关闭给定函数的 LLVM 优化过程(参见@jit
装饰器系列中的_dbg_optnone
关键字参数)。新增了一个环境变量
NUMBA_EXTEND_VARIABLE_LIFETIMES
,如果设置该变量,将延长变量的生命周期至其基本块的末尾,以便在GDB中进行调试体验,类似于在编译的C/C++/Fortran代码中找到的体验。
NumPy 功能/增强:
已添加对传递、使用和返回
numpy.random.Generator
实例的初步支持,目前包括对random
分布的支持。广播函数
np.broadcast_shapes
和np.broadcast_arrays
现在已得到支持。min
和max
函数现在可以与np.timedelta64
和np.datetime64
类型一起使用。现在
np.sort()
支持沿最后一个轴对多维数组进行排序。np.clip
函数已更新,可以接受 NumPy 数组作为a_min
和a_max
参数。NumPy 的分配例程(如
np.empty
、np.ones
等)支持使用enum.IntEnum
成员指定的形状参数。现在支持
np.random.noncentral_chisquare
函数。函数
np.full
和np.ones
的性能已得到提升。
并行加速器增强功能:
parallel=True
功能通过添加numba.set_parallel_chunksize
和numba.get_parallel_chunksize
函数得到了增强,以允许在并行区域中定义的工作进行更精细的调度。还支持通过上下文管理器调整chunksize
。线程的
ID
现在被定义为可预测且在已知范围内,可以通过调用函数numba.get_thread_id
获取。@stencil
的性能在串行和并行执行中都得到了提升。
CUDA 增强功能:
新功能:
自递归设备函数。
向量类型支持 (
float4
,int2
, 等).现在可以创建扩展类型的共享/本地数组。
支持将 CUDA C / C++ 设备函数链接到 Python 内核中。
适用于计算能力8.6和8.7的PTX生成 - 例如RTX A系列,GTX 3000系列。
float16
类型的比较操作。
性能提升:
上下文查询在启动配置期间不再进行。
启动配置现在使用LRU缓存。
现在支持 CUDA 内核的磁盘缓存。
文档:添加了许多新示例。
文档:
Numba 现在有了一个官方的“使命宣言”。
文档中现在有一个“版本支持表”,作为一个易于使用的单一参考点,用于查找有关 Numba 发布及其所需/支持的依赖项的信息。
通用增强功能:
在拥有大量包的环境中,Numba 导入速度更快,因为它现在使用
importlib-metadata
来查询其他包。现在支持为内部编译事件处理系统发出chrome跟踪输出。
此版本在使用 Pyston Python 解释器时已经过测试并确认可以正常工作。
拉取请求:
PR #5209: 使用 importlib 加载 numba 扩展 (Stepan Rakitin Graham Markall stuartarchibald)
PR #5877: Jitclass 内置方法 (Ethan Pronovost Graham Markall)
PR #6490: 现在使用 np.empty 分配模板输出,并新增代码来初始化边界。(Todd A. Anderson)
PR #7005: 使 numpy.searchsorted 在第一个参数未排序时与 NumPy 匹配 (Brandon T. Willard)
PR #7363: 更新 cuda.local.array 以澄清“简单常量表达式”(例如,不包括 NumPy 整数) (Sterling Baird)
PR #7364: 移除了一个有符号整数溢出未定义行为的实例。(Tobias Sargeant)
PR #7537: 添加chrome跟踪 (Hadia Ahmed Siu Kwan Lam)
PR #7556: Testhound/fp16 比较 (Michael Collison Graham Markall)
PR #7586: 支持对 dict.keys、dict.values 和 dict.items 的 len 操作 (Nick Riasanovsky)
PR #7617: Numba gdb-python 扩展用于打印 (stuartarchibald)
PR #7619: CUDA: 修复在延迟编译时与PTX的链接问题 (Graham Markall)
PR #7621: 添加对使用 @cuda.jit 内核链接 CUDA C / C++ 的支持 (Graham Markall)
PR #7625: 合并了 parfor 分块和缓存的 PR。(stuartarchibald Todd A. Anderson Siu Kwan Lam)
PR #7660: 添加对 np.broadcast_arrays 的支持 (Guilherme Leobas)
PR #7664: 将变形字典展平为一个单一字典 (Graham Markall)
PR #7680: CUDA 文档:包含调用慢速矩阵乘法的示例 (Graham Markall)
PR #7682: 对 np.full 和 np.ones 的性能改进 (Rishi Kulkarni)
PR #7684: DOC: 移除 np.random 参考中的错误警告 (Rishi Kulkarni)
PR #7685: 不要将维度不匹配的 setitems 转换为 parfors。(Todd A. Anderson)
PR #7690: 为所有大小参数实现了 np.random.noncentral_chisquare (Rishi Kulkarni)
PR #7695: 对 np.empty, np.zeros, 和 np.ones 的 IntEnumMember 支持 (Benjamin Graham)
PR #7699: CUDA: 如果在 declare_device 中缺少返回类型,提供有用的错误信息 (Graham Markall)
PR #7700: 支持 Np.ascontiguousarray 中的标量参数 (Dhruv Patel)
PR #7703: 在 ShapeEquivSet._getnames() 中忽略不支持的类型 (Benjamin Graham)
PR #7704: 将类型注解传递移至合法化之后。(stuartarchibald)
PR #7709: CUDA: 修复了 #7704 之后的缺失类型注解传递 (stuartarchibald)
PR #7712: 修复问题 7693 (stuartarchibald Graham Markall luk-f-a)
PR #7714: 支持 SliceLiteral 类型的装箱 (Nick Riasanovsky)
PR #7718: 将 llvmlite 依赖更新到 0.39.0dev0 以支持 Numba 0.56.0dev0 (stuartarchibald)
PR #7724: 更新错误信息中的URL以指向RTD文档。(stuartarchibald)
PR #7728: 文档说明AOT编译的函数不检查参数类型 (Graham Markall)
PR #7729: 在DI生成中处理省略/OmittedArgDataModel。(stuartarchibald)
PR #7736: 更新 CHANGE_LOG 为 0.55.0 最终版。(stuartarchibald)
PR #7740: CUDA Python 11.6 支持 (Graham Markall)
PR #7744: 修复在DebugInfo生成期间定位/解析源代码的问题。(stuartarchibald)
PR #7745: 修复Numba 0.55变更日志条目的发布年份。(stuartarchibald)
PR #7748: 修复 #7713: 确保 _prng_random_hash 返回值具有正确的位宽 (Graham Markall)
PR #7749: 重构线程层优先级测试以不使用stdout/stderr (stuartarchibald)
PR #7752: 修复 #7751: 使用数组表达式的原始文件名 (Graham Markall)
PR #7755: CUDA: 弃用对 CC < 5.3 和 CTK < 10.2 的支持 (Graham Markall)
PR #7763: 更新Read the Docs配置(自动)(readthedocs-assistant)
PR #7764: 添加 dbg_optnone 和 dbg_extend_lifetimes 标志 (Siu Kwan Lam)
PR #7771: 将函数唯一ID移至abi-tags (stuartarchibald Siu Kwan Lam)
PR #7772: CUDA: 添加对创建 StructModel 数组的支持 (Michael Wang)
PR #7776: 更新 coverage.py 配置 (stuartarchibald)
PR #7777: 从GH模板中移除现有问题的引用。(stuartarchibald)
PR #7778: 从CLI中移除长时间弃用的标志。(stuartarchibald)
PR #7780: 修复带有引用计数项的集合 (Benjamin Graham)
PR #7786: 移除对OSX的intel-openmp依赖 (stuartarchibald)
PR #7788: 避免数组表达式的 DI 生成问题。(stuartarchibald)
PR #7805: 增强调试信息的源代码行查找逻辑 (Siu Kwan Lam)
PR #7809: 更新了 gdb 配置以接受二进制名称或路径。(stuartarchibald)
PR #7813: 为 aarch64 扩展 parfors 测试超时时间。(stuartarchibald)
PR #7814: CUDA 调度器重构 (Graham Markall)
PR #7815: CUDA 调度器重构 2: 继承自 dispatcher.Dispatcher (Graham Markall)
PR #7817: 更新 NumPy 和 llvmlite 的 intersphinx URL。(stuartarchibald)
PR #7823: 将重命名的变量添加到被调用者的作用域中,使其自洽。(stuartarchibald)
PR #7829: CUDA: 在Kernel中支持 Enum/IntEnum (Michael Wang)
PR #7833: 在文档中添加版本支持信息表。(stuartarchibald)
PR #7835: 修复当模块无法导入时的pickling错误 (idorrington)
PR #7836: 对 np.datetime 和 np.timedelta 的 min() 和 max() 支持 (Benjamin Graham)
PR #7837: parfor 归约降低的初始重构 (Siu Kwan Lam)
PR #7845: 在文档中将 time.time() 改为 time.perf_counter() (Nopileos2)
PR #7846: 修复Windows上的CUDA枚举向量化测试 (Graham Markall)
PR #7848: 支持 int * list (Nick Riasanovsky)
PR #7850: CUDA: 将 fastmath 编译器标志传递给 compile_ptx 和 compile_device;改进 fastmath 测试 (Michael Wang)
PR #7855: 确保 np.argmin/no.argmax 返回类型为 intp (stuartarchibald)
PR #7858: CUDA: 弃用 ptx 属性并更新测试 (Graham Markall Michael Wang)
PR #7861: 修复README中的拼写错误 (Zizheng Guo)
PR #7864: 修复 cross_iter_dep 检查。(Todd A. Anderson)
PR #7865: 移除 add_user_function (Graham Markall)
PR #7866: 支持Python 3.10中大量参数/关键字参数 (Nick Riasanovsky)
PR #7878: CUDA: 移除一些已弃用的支持,添加 CC 8.6 和 8.7 (Graham Markall)
PR #7893: 在序列化中使用 uuid.uuid4() 作为键。(stuartarchibald)
PR #7895: 移除 llvmlite.llvmpy 的使用 (Andre Masella)
PR #7898: 在cuda-memcheck下跳过test_ptds (Graham Markall)
PR #7901: 测试套件的 Pyston 兼容性 (Kevin Modzelewski)
PR #7911: 添加了 sys 导入 (Nightfurex)
PR #7915: CUDA: 修复检查调试信息渲染的测试。(stuartarchibald)
PR #7918: 在CUDA文档中添加JIT示例 (brandon-b-miller Graham Markall)
PR #7919: 禁止在 pranges 中使用 //= 缩减。(Todd A. Anderson)
PR #7924: 保留未修改的索引元组组件。(Todd A. Anderson)
PR #7939: 修复功能请求模板中的渲染问题。(stuartarchibald)
PR #7940: 在 numba/np/arraymath.py 中实现了 np.allclose (Gagandeep Singh)
PR #7941: 从闭包内联传递中移除调试转储输出。(stuartarchibald)
PR #7949: 添加 Cuda 向量类型 (Michael Wang)
PR #7956: 在公共CI上停止使用pip进行3.10测试(恢复“开始在公共CI上测试Python 3.10”) (esc)
PR #7957: 使用 cloudpickle 进行磁盘缓存 (Siu Kwan Lam)
PR #7958: numpy.clip 接受 numpy.array 作为 a_min, a_max (Gagandeep Singh)
PR #7959: 允许新的数组模型拥有数组模型字段的超级集合。(stuartarchibald)
PR #7961: numba.typed.typeddict.Dict.get 使用 castedkey 以避免即使键存在也返回默认值(Gagandeep Singh)
PR #7964: 支持 Python 3.10 中的大型常量字典 (Nick Riasanovsky)
PR #7965: 在缓存临时名称中使用 uuid4 代替 PID 以防止冲突。(stuartarchibald)
PR #7971: 配置调用的lru缓存 (Tingkai Liu)
PR #7972: 修复 cuda 共享数组的 fp16 支持 (Michael Collison Graham Markall)
PR #7986: 小型缓存重构以支持目标缓存实现 (Graham Markall)
PR #7994: 支持多维数组在快速排序中的应用 (Gagandeep Singh Siu Kwan Lam)
PR #7996: 修复 @overload_glue 中的绑定逻辑。(stuartarchibald)
PR #7999: 移除 NumPy 分配器的 @overload_glue。(stuartarchibald)
PR #8003: 添加 np.broadcast_shapes (Guilherme Leobas)
PR #8004: 针对Windows的CUDA修复 (Graham Markall)
PR #8014: 修复 Parfors 中 {real,imag} 数组属性的支持。(stuartarchibald)
PR #8016: [文档] [非常小] 使 numba.jit 边界检查文档行一致 (Kyle Martin)
PR #8017: 更新FAQ以包含仅使用调试选项的详细信息 (Guilherme Leobas)
PR #8027: 支持 NumPy 1.22 (stuartarchibald)
PR #8035: 修复了几个关于RE实现的拼写错误 (stuartarchibald)
PR #8037: CUDA 自递归测试 (Graham Markall)
PR #8044: 使 Python 3.10 关键字参数窥孔优化更宽松 (Nick Riasanovsky)
PR #8046: 修复缓存测试失败 (Siu Kwan Lam)
PR #8052: 确保在为ppc64le构建时链接pthread。(Siu Kwan Lam)
PR #8056: 将缓存测试从 test_dispatcher 移动到 test_caching (Graham Markall)
PR #8057: 修复覆盖率检查 (Graham Markall)
PR #8064: 将“nb:run_pass”重命名为“numba:run_pass”并记录它。(Siu Kwan Lam)
PR #8065: 修复 PyLowering 处理 starargs 的错误 (Siu Kwan Lam)
PR #8077: 将 np.broadcast_shapes 的返回类型更改为元组 (Guilherme Leobas)
PR #8080: 修复由于机器速度慢导致的超时引起的Windows测试失败… (Siu Kwan Lam)
PR #8081: 修复并行gufunc内核生成中的错误数组计数。(stuartarchibald)
PR #8089: 在CUDA目标中支持磁盘缓存 (Graham Markall)
PR #8099: 修复错误状态下对 Py_DECREF 的使用(针对 devicearray)。(stuartarchibald)
PR #8102: 将 numpy run_constrained 合并到 meta.yaml 的运行需求中 (Siu Kwan Lam)
PR #8109: 固定 TBB 支持以应对不兼容的 2021.6 API。(stuartarchibald)
PR #8123: 修复Windows上的CUDA打印测试 (Graham Markall)
PR #8124: 在NRT中对所有分配器添加显式检查。(stuartarchibald)
PR #8126: 标记 gufuncs 为具有可变输出 (Andre Masella)
PR #8133: 修复 #8132。Record.make_c_struct 处理嵌套数组时的回归问题 (Siu Kwan Lam)
PR #8137: CUDA: 修复 #7806, 除以零停止内核 (Graham Markall)
PR #8142: CUDA: 修复一些因放弃9.2版本而遗漏的更改 (Graham Markall)
PR #8144: 修复文档中NumPy的大小写问题。(stuartarchibald)
PR #8145: 允许 ufunc 构建器使用先前 JIT 编译的函数 (Andre Masella)
PR #8163: CUDA: 在启动配置中移除上下文查询 (Graham Markall)
PR #8165: 通过支持功能限制基于strace的测试仅在Linux上运行。(stuartarchibald)
PR #8170: CUDA: 修复低占用率警告中缺失的空格 (Graham Markall)
PR #8187: 更新 CHANGE_LOG 为 0.55.2 (stuartarchibald esc)
PR #8191: CUDA: 更新 0.56 的弃用说明。(Graham Markall)
PR #8192: 更新 CHANGE_LOG 为 0.56.0 (stuartarchibald esc Siu Kwan Lam)
PR #8195: 使工作队列线程后端再次支持fork安全。(stuartarchibald)
PR #8196: 修复 parfors 缓存测试中的数值容差。(stuartarchibald)
PR #8197: 修复 isinstance 警告检查测试。(stuartarchibald)
PR #8255: CUDA: 将 numba.cuda.tests.doc_examples.ffi 设为模块以修复 #8252 (Graham Markall)
PR #8274: 更新0.56版本的版本支持表文档。(stuartarchibald)
PR #8275: 更新 CHANGE_LOG 为 0.56.0 最终版 (stuartarchibald)
作者:
Andre Masella 的链接
Gagandeep Singh 的链接
Dhruv Patel 的链接
LI Da 的链接
esc 是一个GitHub项目。
idorrington 是一个GitHub用户。
Kaustubh 是一个GitHub用户。
luk-f-a 是一个GitHub用户。
luzpaz 是一个GitHub用户。
Kyle Martin 的链接
Nick Riasanovsky 的链接
Nopileos2 是一个开源项目。
readthedocs-assistant 是一个帮助文档的工具。
Rishi Kulkarni 的链接
Siu Kwan Lam 的链接
stuartarchibald 的中文翻译
Tingkai Liu 的链接
版本 0.55.2 (2022年5月25日)
这是一个维护版本,以支持 NumPy 1.22 和 Apple M1。
拉取请求:
PR #8067: 回传 #8027: 对 NumPy 1.22 的支持 (stuartarchibald)
PR #8082: 回传 #8080: 修复由于超时导致的Windows失败 (Siu Kwan Lam)
PR #8084: 将 meta.yaml 固定到 llvmlite 0.38 系列 (Siu Kwan Lam)
PR #8094: 回溯 #8052 确保在为 ppc64le 构建时链接 pthread。(Siu Kwan Lam)
PR #8098: 回溯 #8097: 在 osx-arm64 上排除 libopenblas 0.3.20 (esc)
PR #8100: 为 0.55.2 回溯 #7786: 移除对 OSX 的 intel-openmp 依赖 (stuartarchibald)
PR #8103: 回溯 #8102 以修复 numpy 需求 (Siu Kwan Lam)
PR #8114: 回溯 #8109 固定 TBB 支持以应对不兼容的 2021.6 API。(stuartarchibald)
总PR数: 12
作者:
esc 是一个GitHub项目。
Siu Kwan Lam 的链接
stuartarchibald 的中文翻译
总作者数:3
版本 0.55.1 (2022年1月27日)
这是一个修复错误的发布版本,解决了0.55.0加速发布中所有剩余的问题,以及自那时以来发现的任何发布关键性回归问题。
CUDA 目标弃用通知:
对 CUDA 工具包 < 10.2 的支持已弃用,并将在 Numba 0.56 中移除。
对计算能力 < 5.3 的设备的支持已被弃用,并将在 Numba 0.56 中移除。
拉取请求:
PR #7755: CUDA: 弃用对 CC < 5.3 和 CTK < 10.2 的支持 (Graham Markall)
PR #7749: 重构线程层优先级测试以不使用stdout/stderr (stuartarchibald)
PR #7744: 修复在DebugInfo生成期间定位/解析源代码的问题。(stuartarchibald)
PR #7712: 修复问题 7693 (Graham Markall luk-f-a stuartarchibald)
PR #7729: 在DI生成中处理省略/OmittedArgDataModel。(stuartarchibald)
PR #7788: 避免数组表达式的 DI 生成问题。(stuartarchibald)
PR #7752: 修复 #7751: 使用数组表达式的原始文件名 (Graham Markall)
PR #7748: 修复 #7713: 确保 _prng_random_hash 返回值具有正确的位宽 (Graham Markall)
PR #7745: 修复Numba 0.55变更日志条目的发布年份。(stuartarchibald)
PR #7740: CUDA Python 11.6 支持 (Graham Markall)
PR #7724: 更新错误信息中的URL以指向RTD文档。(stuartarchibald)
PR #7709: CUDA: 修复了 #7704 之后的缺失类型注解传递 (stuartarchibald)
PR #7704: 将类型注解传递移至合法化之后。(stuartarchibald)
PR #7619: CUDA: 修复在延迟编译时与PTX的链接问题 (Graham Markall)
作者:
luk-f-a 是一个GitHub用户。
stuartarchibald 的中文翻译
版本 0.55.0 (2022年1月13日)
此版本包含了一系列重要的依赖升级,以及一些新功能和错误修复。
注意:由于 NumPy CVE-2021-33430 漏洞,此版本绕过了通常的发布流程,以便及时提供支持 NumPy 1.21 的 Numba 版本。发布了一个单一的候选版本(RC1),并报告了一些问题,这些问题总结如下,并将在后续的 0.55.1 版本中修复。
此版本的已知问题:
核心依赖升级的亮点:
对 Python 3.10 的支持
对 NumPy 1.21 的支持
Python 语言支持增强:
实验性支持
isinstance
。
NumPy 功能/增强:
以下功能现在已支持:
np.broadcast_to
np.float_power
np.cbrt
np.logspace
np.take_along_axis
np.average
np.argmin
增加了对axis
关键字参数的支持。np.ndarray.astype
增加了对以字面字符串形式表示的类型的支持。
核心变更亮点:
对于使用 Numba 扩展 API 的用户,Numba 现在有一种新的错误处理模式,它会将所有不继承自
numba.errors.NumbaException
的异常视为“硬错误”并立即展开堆栈。这使得在使用扩展 API 编写@overload
等时更容易调试,因为现在不再混淆 Python 错误和 Numba 错误。可以通过设置环境变量启用此功能:NUMBA_CAPTURED_ERRORS='new_style'
。现在可以通过环境变量
NUMBA_THREADING_LAYER_PRIORITY
来更改线程层选择的优先级。
CUDA 目标的变更亮点:
支持 NVIDIA 的 CUDA Python 绑定。
通过内部函数支持16位浮点数及其基本操作。
Stream.async_done
结果中提供了流,使得实现异步工作队列更加容易。设备数组中的结构化类型支持、NumPy数组中的字符序列支持,以及嵌套数组上的一些数组操作。
对底层进行了大量重构,以使 CUDA 目标更接近 CPU 目标,这为未来版本中支持 CUDA 中的高级扩展 API 奠定了基础。
英特尔还慷慨赞助了原生调试(DWARF)支持和处理每函数编译标志的研究与开发:
行号/位置跟踪有了显著改进。
Numba 对容器(例如元组、数组)的内部表示现在被编码为结构体。
Numba 的每函数编译标志被编码到函数修饰名称的 ABI 字段中,以便可以编译并区分具有不同标志设置的同一函数的不同版本。
一般弃用通知:
没有新的通用弃用。
CUDA 目标弃用通知:
没有新的 CUDA 目标弃用。
版本支持/依赖变化:
支持 Python 3.10。
支持 NumPy 版本 1.21。
支持的最低 NumPy 版本已提升至 1.18 用于运行时(然而编译仍与 NumPy 1.11 兼容)。
拉取请求:
PR #6075: 添加 np.float_power 和 np.cbrt (Guilherme Leobas)
PR #7047: 支持 numpy.datetime64 的 __hash__ (Guilherme Leobas stuartarchibald)
PR #7057: 修复 #7041: 为 CUDA 目标添加字符序列注册表 (Graham Markall stuartarchibald)
PR #7082: 增加了 datetime64 数组与 timedelta64 标量之间的加减运算 (Nick Riasanovsky stuartarchibald)
PR #7119: 添加对 np.broadcast_to 的支持 (Guilherme Leobas)
PR #7129: 为 np.argmin() 添加对 axis 关键字参数的支持 (Itamar Turner-Trauring)
PR #7132: gh #7131 对带有字面字符串的 astype 的支持 (Nick Riasanovsky)
PR #7177: 基于数据模型添加调试信息支持。(stuartarchibald)
PR #7185: 将 get_impl_key 添加为 types.Callable 的抽象方法 (Alexey Kozlov)
PR #7186: 添加对 np.logspace 的支持。(Guoqiang QI)
PR #7189: CUDA: 在ARM上跳过IPC测试 (Graham Markall)
PR #7190: CUDA: 修复 Jetson 上的 test_pinned (Graham Markall)
PR #7192: 修复数组.argsort实现中缺失的导入并添加更多测试。(stuartarchibald)
PR #7196: 修复行信息发射 (stuartarchibald)
PR #7202: np.take_along_axis 的初始实现 (Itamar Turner-Trauring)
PR #7216: 更新 CHANGE_LOG 为 0.54.0rc2 (stuartarchibald)
PR #7219: 将 llvmlite 依赖更新到 0.38.0dev0 以适配 Numba 0.55.0dev0 (esc)
PR #7221: 在 cuda.detect() 输出中显示 GPU UUID (Graham Markall)
PR #7222: CUDA: 当 debug=True 且 opt=True 时发出警告 (Graham Markall)
PR #7223: 替换IR假设违规的断言错误 (Siu Kwan Lam)
PR #7226: 在设备数组中添加对结构化类型的支持 (Michael Collison)
PR #7227: 修复: 拼写错误 (Srinath Kailasa)
PR #7230: PR #7171 仅修复错误 (stuartarchibald Todd A. Anderson)
PR #7234: 添加 THREADING_LAYER_PRIORITY 和 NUMBA_THREADING_LAYER_PRIORITY (Kolen Cheung)
PR #7235: 将WIP的措辞替换为草稿PR (Kolen Cheung)
PR #7236: CUDA: 在ARM上跳过托管分配测试 (Graham Markall)
PR #7237: 修复字符串中的一个拼写错误 (Kolen Cheung)
PR #7241: 为 inplace_binops 设置别名信息。 (Todd A. Anderson)
PR #7242: 修复: 拼写错误 (Srinath Kailasa)
PR #7244: 实现部分字面传播传递(支持 ‘isinstance’) (Guilherme Leobas stuartarchibald)
PR #7247: 解决内存泄漏以修复问题 #7210 (Siu Kwan Lam Graham Markall ysheffer)
PR #7251: 修复 #6001: 当 JIT 禁用时,typed.List 忽略构造函数参数 (Graham Markall)
PR #7256: 修复README中指向discourse论坛的链接 (Kenichi Maehashi)
PR #7257: 在 List.__new__() 中使用普通列表构造函数 (Graham Markall)
PR #7260: 在 heapq 中支持类型化列表 (Graham Markall)
PR #7263: 更新了错误信息的issue URL #7261 (DeviousLab)
PR #7265: 修复 linspace 以使用 np.divide 并限制到 stop。(stuartarchibald)
PR #7266: CUDA: 在禁用对等访问的情况下跳过多GPU复制测试 (Graham Markall)
PR #7267: 修复 #7258。SROA 优化中的错误 (Siu Kwan Lam)
PR #7271: 更新第三方许可证文本。(stuartarchibald)
PR #7272: 允许在 njit 函数中使用注解 (LunarLanding)
PR #7273: 更新 CHANGE_LOG 为 0.54.0rc3。(stuartarchibald)
PR #7283: 在术语表中添加了NPM并链接到提及处 (Nihal Shetty)
PR #7285: CUDA: 修复 test_kernel_arg 中的 OOB 问题 (Graham Markall)
PR #7288: 在模板生成中将 cval 作为 np 属性处理。(stuartarchibald)
PR #7294: PR #7280 的延续,修复了 TBB task_scheduler_handle 的生命周期 (Sergey Pokhodenko stuartarchibald)
PR #7296: 修复生成器降低时未转换为实际返回类型的问题 (Siu Kwan Lam)
PR #7298: 在大多数Linux上使用CBC将GCC固定为7,在aarch64上固定为9。(stuartarchibald)
PR #7304: 继续 PR#3655: 添加对 np.average 的支持 (Hadia Ahmed slnguyen)
PR #7307: 防止全局元组中的数组被修改。(stuartarchibald)
PR #7309: 更新 MapConstraint 以正确处理 typed.Dict 的类型强制转换。(stuartarchibald)
PR #7312: 修复 #7302。在 ppc64le 上解决缺少 pthread 的问题 (Siu Kwan Lam)
PR #7315: 将ELF对象作为DSO链接到radare2反汇编CFG (stuartarchibald)
PR #7316: 在heapq测试中使用float64以保持类型一致性。(stuartarchibald)
PR #7317: 在 TBB tsh 测试中,将 os.fork 切换为 mp fork ctx (stuartarchibald)
PR #7319: 更新 CHANGE_LOG 为 0.54.0 最终版。(stuartarchibald)
PR #7329: 改进与CUDA本地内存相关的文档 (Sterling Baird)
PR #7330: Cuda matmul 文档 (Sterling Baird)
PR #7340: 添加 size_t 和 ssize_t 类型 (Bruce Merry)
PR #7345: 在IPython缓存定位器中添加对ipykernel文件的检查 (Sahil Gupta)
PR #7347: 修复: 更新了错误报告和功能请求的URL,使用问题模板 (DEBARGHA SAHA)
PR #7349: 允许在reduction节点中任意回溯以找到inplace_binop。(Todd A. Anderson)
PR #7359: 扩展对numpy记录中嵌套数组的支持 (Graham Markall luk-f-a)
PR #7375: CUDA: 将doctests作为numba.cuda.tests的一部分运行,并修复test_cg (Graham Markall)
PR #7397: 添加选项以仅捕获由 Numba numba.core.errors 派生的异常。(stuartarchibald)
PR #7398: 添加对元组参数的数组分析支持。(Todd A. Anderson)
PR #7403: 修复问题 7402: 实现缺失的 numpy ufunc 接口 (Guilherme Leobas)
PR #7422: 更新省略类型以使用可哈希值作为缓存的键 (Nick Riasanovsky)
PR #7429: 更新 CHANGE_LOG 为 0.54.1 (stuartarchibald)
PR #7440: 重构 TargetConfig 命名。(stuartarchibald)
PR #7441: 允许在 literalstrkeydict 类型中使用任何字符串作为键。(stuartarchibald)
PR #7442: 为SVML测试失败添加一些诊断信息。(stuartarchibald)
PR #7443: 重构目标的模板选择逻辑。(stuartarchibald)
PR #7453: CUDA: 在 async_done 结果中提供流 (Graham Markall)
PR #7456: 修复 #7451 的无效代码生成。(stuartarchibald)
PR #7457: 提取目标注册表选择逻辑 (stuartarchibald)
PR #7459: 在符号混淆中包含编译器标志 (Siu Kwan Lam)
PR #7460: 为 CUDA 添加 FP16 支持 (Michael Collison Graham Markall)
PR #7461: 支持 NVIDIA 的 CUDA Python 绑定 (Graham Markall)
PR #7465: 更新 0.54.1 版本的变更日志 (Siu Kwan Lam)
PR #7477: 修复 Optional 类型的 unicode operator.eq 处理。(stuartarchibald)
PR #7479: CUDA: 打印格式字符串并在 print() 参数超过 32 个时发出警告 (Graham Markall)
PR #7483: 支持 NumPy 1.21 (Sebastian Berg stuartarchibald)
PR #7484: 修复了指向nvidia文档的外部链接。(Dhruv Patel)
PR #7493: 在目标配置中整合TLS堆栈 (Siu Kwan Lam)
PR #7496: CUDA: 对所有类型的函数使用单一调度器类 (Graham Markall)
PR #7498: 重构 with-detection 逻辑 (stuartarchibald esc)
PR #7499: 为 gpuCI 上的 CUDA 测试添加构建脚本 (Charles Blackmon-Luca Graham Markall)
PR #7500: 更新 parallel.rst (Julius Bier Kirkegaard)
PR #7506: 增强 Flags 的混淆/解混淆 (Siu Kwan Lam)
PR #7514: 修复7177的cuda调试信息发射问题 (Siu Kwan Lam)
PR #7525: 确保 demangle() 返回 str 类型。(Siu Kwan Lam)
PR #7538: 修复 @overload_glue 性能回归问题。(stuartarchibald)
PR #7539: 修复从合并 #7525/#7506 带来的字符串解码问题 (stuartarchibald)
PR #7546: 修复 LiteralStrKeyDict 中缺失常量键的处理 (Siu Kwan Lam stuartarchibald)
PR #7547: 移除32位Linux的scipy安装。(stuartarchibald)
PR #7548: 修正assert语句中的求值顺序 (Graham Markall)
PR #7552: 将内联函数名称添加到内联变量前。(stuartarchibald)
PR #7557: Python3.10 v2 (stuartarchibald esc)
PR #7560: 使用检测py310进行重构 (Siu Kwan Lam esc)
PR #7561: 修复一个拼写错误 (Kolen Cheung)
PR #7567: 更新文档以注明会议是公开的。(stuartarchibald)
PR #7570: 更新导入Numba时出现错误的文档和错误信息。(stuartarchibald)
PR #7580: 修复 #7507。在 .get_function() 中捕获 NotImplementedError (Siu Kwan Lam)
PR #7581: 增加对从整数枚举转换的支持 (Michael Collison)
PR #7583: 使 numba.types.Optional 的 __str__ 更简洁。(stuartarchibald)
PR #7588: 修复 linspace 中 start/stop 的类型转换 (stuartarchibald)
PR #7591: 移除弃用项 (Graham Markall)
PR #7596: 修复r2的最大符号匹配长度(stuartarchibald)
PR #7597: 更新gdb文档以适应新的DWARF增强功能。(stuartarchibald)
PR #7603: 修复引用计数值的 list.insert() (Ehsan Totoni)
PR #7605: 修复 OSX/Win 上 TBB 2021 DSO 名称并使 TBB 报告一致 (stuartarchibald)
PR #7606: 确保在CI中可以加载规定的线程层。(stuartarchibald)
PR #7610: 修复 #7609。类型不应被改变。(Siu Kwan Lam)
PR #7618: 修复文档构建:docutils 0.18 与固定的 sphinx 不兼容 (stuartarchibald)
PR #7626: 修复包依赖问题。(stuartarchibald esc)
PR #7627: PR 7321 继续 (stuartarchibald Eric Wieser)
PR #7628: 在 Azure 中迁移到使用 windows-2019 镜像 (stuartarchibald)
PR #7632: 在CUDA matmul doctest中捕获输出 (Graham Markall)
PR #7636: 将 prange 循环头复制到 parfor 之后。(Todd A. Anderson)
PR #7637: 增加加载机器上SVML测试的超时时间。(stuartarchibald)
PR #7645: 在调试信息中,不要为标记为alwaysinline的函数添加noinline (stuartarchibald)
PR #7650: 将Azure构建迁移到OSX 10.15 (stuartarchibald esc Siu Kwan Lam)
作者:
Bruce Merry 的链接
Dhruv Patel 的链接
Ehsan Totoni 的 GitHub 页面
Eric Wieser 的链接
esc 是一个GitHub项目。
Guoqiang QI 的链接
Alexey Kozlov 的链接
luk-f-a 是一个GitHub用户。
MegaIng 是一个GitHub用户。
Nick Riasanovsky 的链接
Siu Kwan Lam 的链接
slnguyen 的 GitHub 链接
stuartarchibald 的中文翻译
ysheffer 是一个GitHub用户。
版本 0.54.1 (2021年10月7日)
这是 0.54.0 的错误修复版本。它修复了结构化数组类型处理中的回归问题,CUDA 目标初始化失败时的潜在泄漏,Numba 的 vendored cloudpickle 模块重置动态类引起的回归问题,以及一些与测试/基础设施相关的次要问题。
PR #7348: test_inspect_cli: 使用默认(utf-8)编解码器解码异常 (Graham Markall)
PR #7360: CUDA: 修复初始化失败时的潜在泄漏 (Graham Markall)
PR #7386: 确保在使用外部NRT测试之前初始化NRT。(stuartarchibald)
PR #7388: 修补 cloudpickle 以在每次解封时不再重置动态类 (Siu Kwan Lam)
PR #7428: 修复回归问题 #7355: 无法在结构化数组数据类型中设置项目 (Siu Kwan Lam)
作者:
esc 是一个GitHub项目。
Siu Kwan Lam 的链接
stuartarchibald 的中文翻译
版本 0.54.0 (2021年8月19日)
此版本包含大量新功能、重要的重构、关键的错误修复以及多项依赖项升级。
Python 语言支持增强:
对
f-字符串
的基本支持。dict
推导式现在已支持。内置函数
sum
已实现。
NumPy 功能/增强:
以下功能现在已支持:
np.clip
np.iscomplex
np.iscomplexobj
np.isneginf
np.isposinf
np.isreal
np.isrealobj
np.isscalar
np.random.dirichlet
np.rot90
np.swapaxes
此外,np.argmax
现在支持 axis
关键字参数,并且现在可以在 __setitem__
调用中使用 0d
NumPy 数组作为标量。
内部变化:
通过 DWARF 的调试支持已经修复并增强。
Numba 现在优化了局部变量的生成方式,以帮助减少在 LLVM 的 SROA 传递中所花费的时间。
CUDA 目标变更:
支持发出
lineinfo
以供 Nsight Compute 等分析工具使用改进了各种三角函数、除法及其他函数的快速数学代码生成
使用延迟添加 libdevice 到编译单元以加快编译速度
Windows 上的 IPC 支持
支持将元组传递给 CUDA ufuncs
性能警告:
当通过在主机内存中的数组上调用内核来创建隐式副本时
当由于内核或ufunc/gufunc配置导致占用率较低时
支持实现warp聚合的内在函数:
使用更多 CUDA 函数支持:
activemask()
,lanemask_lt()
ffs()
函数现在可以正常工作了!
CUDA 目标中对
@overload
的支持
英特尔慷慨赞助了研究与开发,这促成了许多新功能和内部支持的变更:
调度器现在可以通过用户定义的上下文管理器重新定位到新的目标。
已添加对自定义 NumPy 数组子类的支持(包括可重载的内存分配器)。
一个基于继承的目标模型,允许目标共享
@overload
实现。具有继承行为的每个函数的编译器标志。
扩展API现在通过
@overload_classmethod
装饰器支持重载类方法。
弃用:
ROCm
目标(适用于 AMD ROC GPU)已被移至“未维护”状态,并为其创建了一个单独的仓库存根,地址为:https://github.com/numba/numba-rocm
CUDA 目标的弃用和重大更改:
在计算设备数组的连续性时,宽松的步幅检查现在是默认设置。
inspect_ptx()
方法已被弃用。对于需要获取 PTX 以进行外部编译的用例,请改用compile_ptx()
。设备函数的急切编译(当
device=True
且提供了签名时的情况)已被弃用。
版本支持/依赖变化:
LLVM 11 现在通过 llvmlite 在所有平台上都得到了支持。
最低支持的 Python 版本已提升至 3.7。
支持 NumPy 版本 1.20。
支持的最低 NumPy 版本已提升至 1.17 用于运行时(然而编译仍然兼容 NumPy 1.11)。
供应商 cloudpickle v1.6.0 – 现在用于所有
pickle
操作。现在支持 TBB >= 2021,所有之前的版本都不再支持(由于ABI破坏性更改,难以维护)。
拉取请求:
PR #4516: 使 setitem 接受 0d np-arrays (Guilherme Leobas)
PR #4610: 实现 np.is* 函数 (Guilherme Leobas)
PR #5984: 手动处理 wrap_index 中的 idx 和 size 统一。(Todd A. Anderson)
PR #6468: 通过 PreParforPass 实例访问
replace_functions_map
(Sergey Pokhodenko Reazul Hoque)PR #6469: 在指针类型中添加地址空间 (Sergey Pokhodenko Reazul Hoque)
PR #6608: 支持常见情况下的f-字符串 (Ehsan Totoni)
PR #6619: 改进了三角函数、对数和指数/幂函数的fastmath代码生成。(Graham Markall Michael Collison)
PR #6681: 显式捕获
with..as
并抛出错误。(stuartarchibald)PR #6689: 修复 setup.py 构建命令检测 (Hannes Pahl)
PR #6695: 为cuda原子操作启用负索引 (Ashutosh Varma)
PR #6696: flake8: 使更多文件符合flake8标准 (Ashutosh Varma)
PR #6698: 修复 #6697: 当在 DeviceNDArray 上使用 np.asarray 时数据类型错误 (Ashutosh Varma)
PR #6700: 为CUDA设备添加UUID (Graham Markall)
PR #6709: 在测试示例中阻止 matplotlib (Graham Markall)
PR #6718: 文档: 修复 rewrites.rst 中的拼写错误 (多余的迭代) (Alexander-Makaryev)
PR #6720: 更快的编译 (Siu Kwan Lam)
PR #6730: 修复 Typeguard 错误 (Graham Markall)
PR #6731: 添加 CUDA 特定管道 (Graham Markall)
PR #6735: CUDA: 不要解析带有 llvmlite 的模块的 IR (Graham Markall)
PR #6736: 支持字典推导式 (stuartarchibald)
PR #6742: 不要将重载函数定义添加到索引中。(stuartarchibald)
PR #6750: 升级到 llvmlite 0.37 系列 (Siu Kwan Lam)
PR #6751: 抑制影响测试的 typeguard 警告。(Siu Kwan Lam)
PR #6753: 在RewriteArrayExprs中检查内部类型的检查 (Alexander-Makaryev)
PR #6760: 修复调度器错误,该错误导致将块的分割四舍五入为0。(Todd A. Anderson)
PR #6762: 粘合包装器以从拆分的类型和降低中创建 @overload。(stuartarchibald Siu Kwan Lam)
PR #6766: 修复 DeviceNDArray 空形状问题 (Michael Collison)
PR #6769: CUDA: 用
CUDACodeLibrary
功能替换CachedPTX
和CachedCUFunction
(Graham Markall)PR #6776: 修复TBB接口导致警告和parfors计数的问题 (stuartarchibald)
PR #6779: 修复 wrap_index 类型统一问题。(Todd A. Anderson)
PR #6786: 修复 gufunc kwargs 支持 (Siu Kwan Lam)
PR #6788: 添加对 fastmath 32 位浮点除法的支持 (Michael Collison)
PR #6789: 修复警告结构引用类型保护 (stuartarchibald Siu Kwan Lam esc)
PR #6794: 重构并将 create_temp_module 移动到 numba.tests.support (Alexander-Makaryev)
PR #6795: CUDA: 延迟添加 libdevice 到编译单元 (Graham Markall)
PR #6798: CUDA: 添加可选的Driver API参数日志 (Graham Markall)
PR #6799: 在sysinfo中打印Numba和llvmlite版本 (Graham Markall)
PR #6800: 为查询 ufunc 实现创建一个通用的标准 API (Sergey Pokhodenko Siu Kwan Lam)
PR #6801: ParallelAccelerator 不再将 StaticSetItem 转换为 SetItem,因为记录数组需要 StaticSetItems。(Todd A. Anderson)
PR #6802: 在PTX和SASS编译中添加lineinfo标志 (Graham Markall Max Katz)
PR #6808: #3468 继续: 添加对
np.clip
的支持 (Graham Markall Aaron Russell Voelker)PR #6810: 修复ROC内核文档中的微小格式错误 (Felix Divo)
PR #6811: CUDA: 移除对支持的运行时版本的测试 (Graham Markall)
PR #6813: 主要是 CUDA: 用 llvmlite API 替换 llvmpy API 的使用 (Graham Markall)
PR #6814: 改进上下文堆栈 (stuartarchibald Siu Kwan Lam)
PR #6818: CUDA: 在Windows上支持IPC (Graham Markall)
PR #6822: 添加对 np.rot90 的支持 (stuartarchibald Daniel Nagel)
PR #6829: 修复 np.arange 和 np.linspace 的精度 (stuartarchibald)
PR #6830: CUDA: 使用宽松的步幅检查来计算连续性 (Graham Markall)
PR #6833: 如果将numpy数组转换为标量,则引发TypeError异常 (Michael Collison)
PR #6834: 移除非法的“debug”关键字参数 (Shaun Cutts)
PR #6836: CUDA: 文档更新 (Graham Markall)
PR #6840: CUDA: 移除在0.53中已弃用的项目 + 模拟器测试修复 (Graham Markall)
PR #6841: CUDA: 修复内核入口的源位置,并允许通过混淆名称在内核上设置断点 (Graham Markall)
PR #6844: CUDA: 移除 NUMBAPRO 环境变量警告,envvars.py + 其他小清理 (Graham Markall)
PR #6848: 忽略 .ycm_extra_conf.py (Graham Markall)
PR #6849: 为 IntEnum 添加 __hash__ (Hannes Pahl)
PR #6850: 修复更多内部警告 (stuartarchibald)
PR #6854: PR 6096 继续 (stuartarchibald Ivan Butygin)
PR #6869: 实现内置 sum() (stuartarchibald)
PR #6870: 添加对使用with-context进行调度器重定向的支持 (stuartarchibald Siu Kwan Lam)
PR #6871: 使用 Annotate 时强制设置文本对齐方式为左对齐 (Guilherme Leobas)
PR #6873: 文档: 更新 @jitclass 位置的引用 (David Nadlinger)
PR #6876: 在CODEOWNERS中为目录路径添加尾部斜杠 (Graham Markall)
PR #6877: 为最近的target扩展功能添加文档 (Siu Kwan Lam)
PR #6878: CUDA: 支持向 ufuncs 传递元组 (Graham Markall)
PR #6879: CUDA: 本地和共享数组的NumPy和字符串数据类型 (Graham Markall)
PR #6880: 为 CPUContext 添加属性 lower_extension (Reazul Hoque)
PR #6883: 添加对 np.swapaxes 的支持 #4074 (Daniel Nagel)
PR #6885: CUDA: 在 cuda.random 中为 jit 函数显式指定 objmode + looplifting (Graham Markall)
PR #6886: CUDA: 修复所有测试套件子模块的并行测试 (Graham Markall)
PR #6888: 使重载在缓存查找中考虑编译器标志 (Siu Kwan Lam)
PR #6889: 解决guvectorize在cuda目标上速度过慢的问题 (Michael Collison)
PR #6898: 按硬件目标进行重载的工作。(stuartarchibald)
PR #6911: CUDA: 添加对 activemask()、lanemask_lt() 和 nanosleep() 的支持 (Graham Markall)
PR #6912: 防止在闭包调用中使用可变参数。(stuartarchibald)
PR #6913: 在公共祖先上为gitdiff添加runtests选项 (Siu Kwan Lam)
PR #6915: 更新 _Intrinsic 以捕获内部文档字符串,适用于 sphinx (Guilherme Leobas)
PR #6917: 为 StringLiteral 添加到 unicode_type 的类型转换并进行测试。(stuartarchibald)
PR #6918: 开始关于常见的不支持的 parfors 代码部分的章节。(stuartarchibald)
PR #6924: CUDA: 修复
ffs
(Graham Markall)PR #6928: 为 numpy.argmax() 添加对 axis 关键字参数的支持 (stuartarchibald Itamar Turner-Trauring)
PR #6929: 修复当缺少 gitpython 时的 CI 失败。(Siu Kwan Lam)
PR #6936: CUDA: 全局实现对PTDS的支持 (Graham Markall)
PR #6937: 修复字节装箱中的内存泄漏 (stuartarchibald)
PR #6940: 修复跨硬件的内部函数解析。(stuartarchibald)
PR #6941: 调整目标描述符并使其在整个项目中保持一致。(stuartarchibald)
PR #6944: CUDA: 对
@overload
的支持 (Graham Markall)PR #6945: 修复数组分析测试需要scipy的问题。(stuartarchibald)
PR #6948: 重构注册表初始化。(stuartarchibald Graham Markall Siu Kwan Lam)
PR #6953: CUDA: 修复并弃用
inspect_ptx()
,修复设备函数的 NVVM 选项设置 (Graham Markall)PR #6958: numpy 和 numba/cuda 设备数组之间 reshape 行为不一致 (Lauren Arnett)
PR #6961: 更新重载胶水以处理 typing_key (stuartarchibald)
PR #6964: 将最低支持的 Python 版本移至 3.7 (stuartarchibald)
PR #6966: 修复TBB测试在错误状态下检测到fork的问题。(stuartarchibald)
PR #6971: 修复 CUDA
@intrinsic
使用 (stuartarchibald)PR #6977: 供应商 cloudpickle (Siu Kwan Lam)
PR #6978: 为空元组实现 operator.contains (Brandon T. Willard)
PR #6981: 修复在全局使用
np.bool_
时的 LLVM IR 解析错误 (stuartarchibald)PR #6983: 在ufuncs中支持Optional类型。(stuartarchibald)
PR #6985: 在带有整数索引的记录上实现静态的 set/get 项目 (stuartarchibald)
PR #6990: 重构硬件扩展API以引用“目标”。(stuartarchibald)
PR #6991: 将 ROCm 目标状态移动到“未维护”。(stuartarchibald)
PR #6995: 解决将 nan 分配给 int 类型 numpy 数组的问题 (Michael Collison)
PR #6996: 为 SliceType 添加常量降低支持 (Brandon T. Willard)
PR #6997: CUDA: 移除 target.py 中对 NotImplementedError 的捕获 (Graham Markall)
PR #6999: 修复由 cloudpickle 补丁引入的错误 (Siu Kwan Lam)
PR #7003: 更多主线修复 (stuartarchibald Graham Markall Siu Kwan Lam)
PR #7004: 测试扩展CUDA目标 (Graham Markall)
PR #7008: 添加了对 np.random.dirichlet 的支持,包括所有 size 参数 (Rishi Kulkarni)
PR #7016: 文档:将DALI添加到支持CAI的库列表中 (Graham Markall)
PR #7018: 从库检查中移除 cu{blas,sparse,rand,fft} (Graham Markall)
PR #7019: 支持 NumPy 1.20 (stuartarchibald)
PR #7020: 修复 #7017。添加了工具类 PickleCallableByPath (Siu Kwan Lam)
PR #7024: 修复了 create_module 方法中的 llvmir 使用 (stuartarchibald Kalyan)
PR #7031: 修复内联器以在所有块中使用单一作用域 (Alexey Kozlov Siu Kwan Lam)
PR #7040: 添加Github action以标记问题为过时 (Graham Markall)
PR #7044: 针对 LLVM 11 的修复 (stuartarchibald)
PR #7049: 使 NumPy 随机模块使用 @overload_glue (stuartarchibald)
PR #7050: 添加 overload_classmethod (Siu Kwan Lam)
PR #7052: 修复CUDA目标中的字符串支持 (Graham Markall)
PR #7056: 更改 prange 转换方法以重用头部块。(Todd A. Anderson)
PR #7061: 添加 ndarray 分配器类方法 (stuartarchibald Siu Kwan Lam)
PR #7064: Testhound/host 数组性能警告 (Michael Collison)
PR #7066: 修复 #7065: 为 NumPy 1.20 的测试添加预期的异常消息 (Graham Markall)
PR #7068: 增强关于PRNG种子的文档 (Jérome Eertmans)
PR #7070: 改进问题模板和拉取请求模板。(Guoqiang QI)
PR #7080: 修复 Flags 和 cpu_options 类的
__eq__
方法 (Siu Kwan Lam)PR #7087: 在文档中添加关于变量零初始化的说明。(stuartarchibald)
PR #7088: 使用批处理调度器感知的值初始化 NUMBA_DEFAULT_NUM_THREADS (Thomas VINCENT)
PR #7100: 替换已弃用的cuDeviceComputeCapability调用 (Graham Markall)
PR #7113: 暂时禁用调试环境导出。(stuartarchibald)
PR #7114: CUDA: 弃用设备函数的即时编译 (Graham Markall)
PR #7116: 修复了与dwarf发射相关的各种问题: (stuartarchibald vlad-perevezentsev)
PR #7118: 移除打印到标准输出 (stuartarchibald)
PR #7121: 继续进行numpy子类的相关工作 (Todd A. Anderson Siu Kwan Lam)
PR #7134: 将最低 LLVM 版本移至 11。(stuartarchibald)
PR #7138: 将 Azure 默认的 Linux 镜像更新为 Ubuntu 18.04 (stuartarchibald)
PR #7141: 要求最低支持 llvmlite 0.37。(stuartarchibald)
PR #7143: 在 __init__ 中更新 np 1.17 的版本检查 (stuartarchibald)
PR #7145: 修复主线 (stuartarchibald)
PR #7146: 修复
inline_closurecall
可能未被导入的问题 (Siu Kwan Lam)PR #7147: 恢复“解决 gitpython 3.1.18 依赖问题” (stuartarchibald)
PR #7149: 修复字节码分析中的问题,其中目标和下一个相同。(stuartarchibald)
PR #7152: 修复CUDA中的迭代器 (Graham Markall)
PR #7156: 修复
ir_utils._max_label
更新错误 (Siu Kwan Lam)PR #7160: 拆分 parfors 测试 (stuartarchibald)
PR #7161: 更新 README 为 0.54 (stuartarchibald)
PR #7162: CUDA: 修复调试编译时设备函数的链接 (Graham Markall)
PR #7163: 将合法化过程拆分为分别考虑IR和功能。(stuartarchibald)
PR #7165: 修复在使用 np.clip 时未提供 out 参数的问题。(stuartarchibald)
PR #7189: CUDA: 在ARM上跳过IPC测试 (Graham Markall)
PR #7190: CUDA: 修复 Jetson 上的 test_pinned (Graham Markall)
PR #7192: 修复数组.argsort实现中缺失的导入并添加更多测试。(stuartarchibald)
PR #7196: 修复了行信息的发射。(stuartarchibald)
PR #7216: 更新 CHANGE_LOG 为 0.54.0rc2。(stuartarchibald)
PR #7223: 替换IR假设违规的断言错误 (Siu Kwan Lam)
PR #7230: PR #7171 仅修复错误 (Todd A. Anderson stuartarchibald)
PR #7236: CUDA: 在ARM上跳过托管分配测试 (Graham Markall)
PR #7267: 修复 #7258。SROA 优化中的错误 (Siu Kwan Lam)
PR #7271: 更新第三方许可证文本。(stuartarchibald)
PR #7272: 允许在 njit 函数中使用注解 (LunarLanding)
PR #7273: 更新 CHANGE_LOG 为 0.54.0rc3。(stuartarchibald)
PR #7285: CUDA: 修复 test_kernel_arg 中的 OOB 问题 (Graham Markall)
PR #7294: PR #7280 的延续,修复了 TBB task_scheduler_handle 的生命周期 (Sergey Pokhodenko stuartarchibald)
PR #7298: 在大多数Linux上使用CBC将GCC固定为7,在aarch64上固定为9。(stuartarchibald)
PR #7312: 修复 #7302。在 ppc64le 上解决缺少 pthread 的问题 (Siu Kwan Lam)
PR #7317: 在 TBB tsh 测试中,将 os.fork 切换为 mp fork ctx (stuartarchibald)
PR #7319: 更新 CHANGE_LOG 为 0.54.0 最终版。(stuartarchibald)
作者:
MegaIng 是一个GitHub用户。
David Nadlinger 的链接
Ehsan Totoni 的 GitHub 页面
esc 是一个GitHub项目。
Felix Divo 是一个GitHub用户。
Guoqiang QI 的链接
Alexey Kozlov 的链接
Kalyan 是一个GitHub用户。
Reazul Hoque 的链接
Rishi Kulkarni 的链接
Siu Kwan Lam 的链接
stuartarchibald 的中文翻译
版本 0.53.1 (2021年3月25日)
这是针对 0.53.0 的错误修复版本。它包含以下四个拉取请求,修复了两个关键的回归问题和两个由 openSuSe 团队报告的构建失败问题:
PR #6826 修复了 gufunc 序列化中的回归问题
PR #6828 修复CUDA中的回归问题:在映射和管理的数组device_setup中设置流
PR #6837 在测试导入行为时忽略来自打包模块的警告。
PR #6851 将未报告的 llvm 时间值设置为 0.0
作者:
本·格雷纳
格雷厄姆·马克尔
林思宽
斯图尔特·阿奇博尔德
版本 0.53.0 (2021年3月11日)
此版本继续为 Numba 添加新功能、错误修复和稳定性改进。
核心变更亮点:
支持 Python 3.9 (Stuart Archibald)。
函数子类型化(Lucio Fernandez-Arjona)。
对动态
gufuncs
的初步支持(即来自@guvectorize
)(Guilherme Leobas)。并行加速器 (
@njit(parallel=True)
现在支持 Fortran 顺序数组 (Todd A. Anderson 和 Siu Kwan Lam)。
英特尔还慷慨赞助了研究与开发,这促成了两项新功能的诞生:
为了诊断目的,公开LLVM编译过程的时间(Siu Kwan Lam)。
用于广播编译器事件的事件系统(Siu Kwan Lam)。
CUDA 目标的变更亮点:
从CUDA 11.2开始(使用NVVM IR 1.6 / LLVM IR 7.0.1的工具包版本)现在已支持(Graham Markall)。
添加了一个快速的立方根函数(Michael Collison)。
增加了对原子
xor
、递增、递减、交换的支持,并将比较并交换扩展为支持64位整数(Michael Collison)。添加
cuda.is_supported_version()
以检查 CUDA 运行时版本是否受支持 (Graham Markall)。CUDA 调度器现在与 CPU 调度器共享基础设施,改进了延迟编译内核的启动时间(Graham Markall)。
CUDA 数组接口已更新到第 3 版,增加了对流的支持(Graham Markall)。
元组和
namedtuples
现在可以传递给内核(Graham Markall)。增加了对协作组的初步支持,支持网格组和网格同步(Graham Markall 和 Nick White)。
增加了对
math.log2
和math.remainder
的支持 (Guilherme Leobas)。
一般弃用通知:
没有新的通用弃用。
CUDA 目标弃用通知:
macOS 上的 CUDA 支持在此版本中已被弃用(它仍然有效,只是不再支持)。
自 0.51.0 版本起已弃用的
cuda.jit
装饰器的argtypes
、restypes
和bind
关键字参数已被移除。自2014年起已弃用的
Device.COMPUTE_CAPABILITY
属性已被移除(请改用compute_capability
)。设备数组的
to_host
方法已被移除(请改用copy_to_host
)。
通用增强功能:
PR #4769: objmode 复杂类型拼写 (Siu Kwan Lam)
PR #5579: 函数子类型化 (Lucio Fernandez-Arjona)
PR #5659: 添加对 parfors 创建 ‘F’ortran 布局 Numpy 数组的支持。(Todd A. Anderson)
PR #5936: 改进用户定义数据类型的数组分析。(Todd A. Anderson)
PR #5938: 对动态 gufuncs 的初步支持 (Guilherme Leobas)
PR #5958: 使 typed.List 成为 typing 泛型 (Lucio Fernandez-Arjona)
PR #6334: 支持从其他模块访问属性 (Farah Hariri)
PR #6373: 允许调度器被缓存 (Eric Wieser)
PR #6519: 避免不必要的 ir.Del 生成和移除 (Ehsan Totoni)
PR #6545: 重构 ParforDiagnostics (Elena Totmenina)
PR #6560: 添加 LLVM 传递计时器 (Siu Kwan Lam)
PR #6573: 从 IPython shell 调用时,改进 typed.List 的
__str__
方法(Amin Sadeghi)PR #6575: 避免临时变量赋值 (Ehsan Totoni)
PR #6578: 添加对 numpy
intersect1d
的支持和基本测试用例 (@caljrobe
)PR #6579: 支持 Python 3.9。(Stuart Archibald)
PR #6580: 在编译器状态中存储部分类型错误 (Ehsan Totoni)
PR #6626: 一个简单的广播编译器事件的事件系统 (Siu Kwan Lam)
PR #6635: 尝试将动态 getitems 解析为静态后展开变换。(Stuart Archibald)
PR #6636: 添加了 llvm_lock 事件 (Siu Kwan Lam)
PR #6664: 为 PR 5659 添加测试 (Siu Kwan Lam)
PR #6680: 允许 getattr 在 objmode 输出类型规范中工作 (Siu Kwan Lam)
修复:
PR #6176: 移除对已弃用的 numpy 全局变量的引用 (Eric Wieser)
PR #6374: 使用 Python 3 风格的 OSError 处理 (Eric Wieser)
PR #6402: 修复
typed.Dict
和typed.List
在参数化类型上崩溃的问题 (Andreas Sodeur)PR #6403: 添加
types.ListType.key
(Andreas Sodeur)PR #6410: 修复了问题 #6386 (Danny Weitekamp)
PR #6425: 修复问题 #6405 的 unicode 连接(Teugea Ioan-Teodor)
PR #6437: 在分析归约时,不要将外部parfor中已知的归约变量传递给内部parfor。(Todd A. Anderson)
PR #6453: 在元数据中保留原始变量名称以改进诊断(Ehsan Totoni)
PR #6454: 修复: 对字面量的修复 (Eric Larson)
PR #6463: 将 llvmlite 升级到 0.36 系列 (Stuart Archibald)
PR #6466: 修正 finalize_dynamic_globals 的拼写错误 (Sergey Pokhodenko)
PR #6489: 改进不支持的 Buffer 情况下的错误信息。(Stuart Archibald)
PR #6503: 添加测试以确保 Numba 导入时没有警告。(Stuart Archibald)
PR #6508: 将需求推迟到 setup.py (Siu Kwan Lam)
PR #6521: 如果 typeguard 正在运行,则跳过注释的 jitclass 测试。(Stuart Archibald)
PR #6524: 修复 typed.List 返回值 (Lucio Fernandez-Arjona)
PR #6562: 修正 numba sysinfo 输出中的拼写错误 (Nick Sutcliffe)
PR #6574: 如果存在2个或更多并行循环,则运行并行循环融合 (Ehsan Totoni)
PR #6582: 修复未初始化的填充字节的类型字典错误 (Siu Kwan Lam)
PR #6584: 从
__init__
__all__
中移除 jitclass。(Stuart Archibald)PR #6586: 在非局部情况下,在分支修剪之前运行闭包内联(Stuart Archibald)
PR #6591: 修复内联汇编测试失败。(Siu Kwan Lam)
PR #6622: 修复 #6534,处理类似赋值元组的解包。(Stuart Archibald)
PR #6652: 简化 PR-6334 (Siu Kwan Lam)
PR #6653: 修复 get_numba_envvar (Siu Kwan Lam)
PR #6654: 修复 #6632 支持替代的 dtype 字符串拼写 (Stuart Archibald)
PR #6685: 在分类器中添加 Python 3.9。(Stuart Archibald)
PR #6693: 使用 c++11 编译 _devicearray.cpp 的补丁 (Valentin Haenel)
PR #6716: 如果赋值的左侧在右侧使用,则考虑其为活跃的(修复 #6715)(Ehsan Totoni)
PR #6727: 避免全局元组中非整数导致的数组分析错误 (Ehsan Totoni)
PR #6733: 修复 #6668 中的段错误和错误 (Siu Kwan Lam)
PR #6741: 在IR内联器中启用SSA (Ehsan Totoni)
PR #6763: 为 conda 包使用一个替代的约束条件 (Valentin Haenel)
PR #6786: 修复 gufunc kwargs 支持 (Siu Kwan Lam)
CUDA 增强/修复:
PR #5162: 指定 CUDA 数组接口的同步语义 (Graham Markall)
PR #6245: CUDA 协作网格组 (Graham Markall 和 Nick White)
PR #6333: 移除无效的
_Kernel.__call__
(Graham Markall)PR #6343: CUDA: 添加对传递元组和命名元组到内核的支持 (Graham Markall)
PR #6349: 重构调度器以移除不必要的间接层 (Graham Markall)
PR #6358: 为 cuda 添加 log2 和 remainder 实现(Guilherme Leobas)
PR #6376: 在 test_atomics.py 中为问题 #6370 添加了一个固定种子 (Teugea Ioan-Teodor)
PR #6377: CUDA: 修复测试套件中的各种问题 (Graham Markall)
PR #6409: 实现 cuda 原子异或 (Michael Collison)
PR #6422: CUDA: 移除已弃用的项目,预期 CUDA 11.1 (Graham Markall)
PR #6427: 移除 gufunc 的重复定义 (Amit Kumar)
PR #6432: CUDA: 使用
_dispatcher.Dispatcher
作为基础 Dispatcher 类 (Graham Markall)PR #6447: CUDA: 在 Dispatcher 中添加 get_regs_per_thread 方法 (Graham Markall)
PR #6499: CUDA 原子递增、递减、交换和比较并交换(Michael Collison)
PR #6510: CUDA: 在必要时使设备数组赋值同步 (Graham Markall)
PR #6517: CUDA: 添加所有8位字符的NVVM测试 (Graham Markall)
PR #6567: 将llvm替换代码重构为单独的函数 (Michael Collison)
PR #6642: Testhound/cuda 立方根 (Michael Collison)
PR #6661: CUDA: 支持 NVVM70 / CUDA 11.2 (Graham Markall)
PR #6663: 修复由于某些平台缺少定义的“-static”库导致的错误 (Siu Kwan Lam)
PR #6666: CUDA: 添加一个函数以查询运行时版本是否受支持。(Graham Markall)
PR #6725: CUDA: 修复 CUDA 11.2 的调试模式下编译为 PTX 的问题 (Graham Markall)
文档更新:
PR #5740: 添加关于如何创建MWR的FAQ条目。(Stuart Archibald)
PR #6346: DOC: 在FAQ中添加获取开发构建的来源 (Eyal Trabelsi)
PR #6418: 文档: 使用 https 作为主页 (
@imba-tjd
)PR #6430: CUDA 文档: 添加带有 3D 网格和跨步循环的 RNG 示例 (Graham Markall)
PR #6436: 文档: 修正弃用通知中的拼写错误 (Thibault Ballier)
PR #6440: 添加关于解释器中类型化容器的性能说明。(Stuart Archibald)
PR #6457: 链接到 read the docs 而不是 numba 主页 (Hannes Pahl)
PR #6470: 添加关于numba的PyCon Sweden 2020演讲(Ankit Mahato)
PR #6472: 文档
numba.extending.is_jitted
(Stuart Archibald)PR #6495: 修复文字列表文档中的拼写错误。(Stuart Archibald)
PR #6501: 添加关于Numba的有限资源以及如何帮助的文档条目。(Stuart Archibald)
PR #6502: 添加 CODEOWNERS 文件。(Stuart Archibald)
PR #6531: 更新规范URL。(Stuart Archibald)
PR #6544: 对5分钟指南进行了小的拼写/语法修正 (Ollin Boer Bohan)
PR #6599: docs: 修复简单拼写错误, consevatively -> conservatively (Tim Gates)
PR #6609: 推荐使用 miniforge 替代 c4aarch64 (Isuru Fernando)
PR #6671: 将环境创建示例更新到 Python 3.8 (Lucio Fernandez-Arjona)
PR #6676: 在各种文档中更新硬件和软件版本。(Stuart Archibald)
PR #6682: 更新 0.53 版本的弃用通知 (Stuart Archibald)
CI/基础设施更新:
PR #6458: 在CI中启用typeguard (Siu Kwan Lam)
PR #6500: 更新错误报告和功能请求模板。(Stuart Archibald)
PR #6516: 通过使用conda修复RTD构建。(Stuart Archibald)
PR #6587: 添加 zenodo 徽章 (Siu Kwan Lam)
作者:
阿明·萨德吉
阿米特·库马尔
安德烈亚斯·索德尔
Ankit Mahato
克里斯·巴恩斯
丹尼·韦特坎普
Ehsan Totoni (核心开发者)
埃里克·拉尔森
埃里克·维瑟
Eyal Trabelsi
法拉·哈里里
格雷厄姆·马克尔
吉尔赫梅·莱奥巴斯
汉纳斯·帕尔
伊苏鲁·费尔南多
Lucio Fernandez-Arjona
迈克尔·科里森
尼克·萨特克利夫
尼克·怀特
Ollin Boer Bohan
谢尔盖·波霍坚科
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
Teugea Ioan-Teodor
蒂博·巴利耶
蒂姆·盖茨
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
@caljrobe
@imba-tjd
版本 0.52.0 (2020年11月30日)
此版本专注于性能改进,但也增加了一些新功能,并包含了许多错误修复和稳定性改进。
核心性能改进的亮点包括:
英特尔慷慨赞助了关于开发新的引用计数修剪传递的研究和开发。此传递在LLVM级别运行,并且可以修剪许多常见的引用计数模式。这将主要通过以下两个原因提高性能:
用于执行引用计数的原子锁上的压力将会减少。
移除引用计数操作允许更多的内联操作,并且优化过程通常可以对现有的内容进行更多的处理。
(林思源)。
英特尔还资助了改进
numba.typed.List
容器性能的工作,特别是在__getitem__
和迭代方面(Stuart Archibald)。超字级并行向量化现已开启,优化管道已进行轻度分析和调整,以便能够更频繁地进行向量化(Stuart Archibald)。
核心功能变化亮点包括:
JIT 调度器对象上的
inspect_cfg
方法得到了显著增强,现在包括了高亮输出以及交错的行标记和 Python 源代码(Stuart Archibald)。BSD 操作系统现在非正式支持(Stuart Archibald)。
对NumPy支持的众多功能/功能改进,包括支持:
np.asfarray
(Guilherme Leobas)记录数组中的“子类型”(Lucio Fernandez-Arjona)
np.split
和np.array_split
(Isaac Virshup)operator.contains
与ndarray
(@mugoh
)。np.asarray_chkfinite
(Rishabh Varshney)。NumPy 1.19 (Stuart Archibald)。
ndarray
分配器,empty
、ones
和zeros
,接受以字符串字面量指定的 ``dtype``(Stuart Archibald)。
布尔类型现在作为字面类型得到支持(Alexey Kozlov)。
在CUDA目标上:
CUDA 9.0 现在是支持的最低版本(Graham Markall)。
已添加对统一内存的支持(Max Katz)。
内核启动开销减少(Graham Markall)。
已添加对映射数组、内存复制和内存设置的Cudasim支持(Mike Williams)。
访问权限已连接到所有 libdevice 函数(Graham Markall)。
已添加了额外的 CUDA 原子操作(Michael Collison)。
额外的数学库函数(
frexp
、ldexp
、isfinite
)(袁志浩)。支持复数上的
power
运算(Graham Markall)。
需要注意的弃用项:
没有新的弃用功能。然而,请注意,大约在40个版本前添加的“兼容性”模式,以帮助从0.11过渡到0.12+,已经被移除!此外,根据弃用计划,允许从Numba的顶级命名空间导入``jitclass``的垫片现在已被移除。
通用增强功能:
PR #5418: 添加 np.asfarray 实现 (Guilherme Leobas)
PR #5560: 记录子类型 (Lucio Fernandez-Arjona)
PR #5609: Jitclass 从类型注释中推断规范 (Ethan Pronovost)
PR #5699: 实现 np.split 和 np.array_split (Isaac Virshup)
PR #6015: 添加 BooleanLiteral 类型 (Alexey Kozlov)
PR #6027: 支持 InlineOverloads 中的操作符内联 (Alexey Kozlov)
PR #6038: 关闭 #6037,修复 FreeBSD 编译问题 (László Károlyi)
PR #6086: 添加更多可访问的版本信息 (Stuart Archibald)
PR #6157: 在 @cfunc 中添加 pipeline_class 参数,该参数由 @jit 支持。(Arthur Peters)
PR #6262: 支持从字符串字面量获取数据类型。(Stuart Archibald)
PR #6271: 支持
ndarray
包含 (@mugoh
)PR #6295: 增强 inspect_cfg (Stuart Archibald)
PR #6304: 支持 NumPy 1.19 (Stuart Archibald)
PR #6309: 为BSD添加合适的文件搜索路径。(Stuart Archibald)
PR #6341: 重新滚动 6279 (Rishabh Varshney 和 Valentin Haenel)
性能提升:
PR #6145: 为命名元组添加指纹的补丁。(Stuart Archibald)
PR #6202: 加速 str(int) (Stuart Archibald)
PR #6261: 添加 np.ndarray.ptp() 支持。(Stuart Archibald)
PR #6266: 使用自定义的 LLVM 引用计数修剪传递 (Siu Kwan Lam)
PR #6275: 开启 SLP 向量化。(Stuart Archibald)
PR #6278: 改进类型化列表性能。(Stuart Archibald)
PR #6335: 拆分优化过程。(Stuart Archibald)
PR #6455: 修复混淆引用上的refprune,并稳定优化关于包装器的处理。(Stuart Archibald)
修复:
PR #5639: 使 UnicodeType 继承自 Hashable (Stuart Archibald)
PR #6006: 解决 parfor 中错误提升的列表。(Todd A. Anderson)
PR #6126: 如果无法确定版本,修复 version_info (Valentin Haenel)
PR #6137: 移除对Python 2的long类型的引用(Eric Wieser)
PR #6139: 使用直接语法代替
add_metaclass
装饰器 (Eric Wieser)PR #6140: 将 utils.iteritems(d) 的调用替换为 d.items() (Eric Wieser)
PR #6141: 修复 #6130 objmode 缓存段错误 (Siu Kwan Lam)
PR #6156: 移除对
reraise
的调用,改为直接使用with_traceback
(Eric Wieser)PR #6162: 将字符序列支持移出初始化(Stuart Archibald)
PR #6165: #5425 继续 (Amos Bird 和 Stuart Archibald)
PR #6166: 从 numba.core.utils 中移除 Python 2 兼容性 (Eric Wieser)
PR #6185: 在 NotDefinedError 上提供更好的错误信息 (Luiz Almeida)
PR #6194: 从 traverse_types 中移除递归 (Radu Popovici)
PR #6200: 解决 #5973 问题 (Stuart Archibald)
PR #6203: 使 find_callname 仅查找可能是 NumPy 一部分的函数。(Stuart Archibald)
PR #6204: 修复 getitem 的 unicode 类型选择。(Stuart Archibald)
PR #6206: 在 Linux x86 上使用 -g -Wall -Werror 编译所有扩展模块,提供 -O0 标志选项 (Graham Markall)
PR #6212: 修复 objmode 重新编译问题 (Alexey Kozlov)
PR #6213: 修复 #6177。移除对 Numba 包的 AOT 依赖(Siu Kwan Lam)
PR #6224: 为数组分析添加元组连接支持。(#5396 继续)(Todd A. Anderson)
PR #6231: 移除兼容模式 (Graham Markall)
PR #6254: 修复 win-32 哈希错误(来自 Stuart Archibald)(Ray Donnelly)
PR #6265: 修复 #6260 (Stuart Archibald)
PR #6267: 加速一些非常慢的单元测试 (Stuart Archibald)
PR #6281: 按照弃用计划移除 numba.jitclass 的 shim。(Stuart Archibald)
PR #6294: 使返回类型传播到所有返回变量 (Andreas Sodeur)
PR #6300: 取消因为 #4026 而跳过的测试。(Owen Anderson)
PR #6307: 由于LLVM SVML CC中的错误,移除对SVML版本的限制 (Stuart Archibald)
PR #6316: 使 IR 内联测试不自我变异。(Stuart Archibald)
PR #6318: PR #5892 继续 (Todd A. Anderson, via Stuart Archibald)
PR #6319: 在调试开启时允许关闭边界检查。(Stuart Archibald)
PR #6324: PR 6208 继续 (Ivan Butygin 和 Stuart Archibald)
PR #6337: 在
types.TypeRef
上实现了key
(Andreas Sodeur)PR #6354: 将 llvmlite 升级到 0.35 系列。(Stuart Archibald)
PR #6357: 修复 enumerate 无效的 decref (Siu Kwan Lam)
PR #6359: 修复了32位系统上的类型化列表索引问题(Stuart Archibald)
PR #6378: 修复向量化测试中错误的CPU覆盖。(Stuart Archibald)
PR #6379: 使用 O0 以启用内联且不影响后续 O3 的循环向量化… (Siu Kwan Lam)
PR #6384: 修复失败的测试以匹配平台不变的整数拼写。(Stuart Archibald)
PR #6390: 更新 inspect_cfg (Stuart Archibald)
PR #6396: 移除对 tbb 包的硬依赖。(Stuart Archibald)
PR #6408: 不要对包含数组的元组进行数组分析。(Todd A. Anderson)
PR #6441: 修复 Unicode 切片中的 ASCII 标志 (0.52.0rc2 回归) (Ehsan Totoni)
PR #6442: 修复在 0.52 RC2 中对一维数组元组的数组分析回归问题 (Ehsan Totoni)
PR #6446: 修复 #6444: 与引用窃取函数相关的修剪器问题 (Siu Kwan Lam)
PR #6450: 修复 asfarray 关键字参数默认处理。(Stuart Archibald)
PR #6486: 修复抽象基类导入 (Valentin Haenel)
PR #6487: 限制 Python 的最大版本 (Siu Kwan Lam)
PR #6527: setup.py: 修复 Python 版本守卫 (Chris Barnes)
CUDA 增强/修复:
PR #5465: 移除宏扩展并用前端类型 + 后端降低替换使用(Graham Markall)
PR #5741: CUDA: 添加 round() 的双参数实现 (Graham Markall)
PR #5900: 启用 CUDA 统一内存 (Max Katz)
PR #6042: CUDA: 通过直接启动内核来降低启动开销 (Graham Markall)
PR #6064: 在 numba.cuda 中降低 math.frexp 和 math.ldexp 的级别 (Zhihao Yuan)
PR #6066: 在 numba.cuda 中降低 math.isfinite 的使用 (Zhihao Yuan)
PR #6092: CUDA: 添加 mapped_array_like 和 pinned_array_like (Graham Markall)
PR #6127: 修复 Volta 架构上 reduction 内核的竞争条件,要求 CUDA 9,添加带有默认掩码的 syncwarp(Graham Markall)
PR #6129: 扩展 Cudasim 以支持大部分内存功能。(Mike Williams)
PR #6150: CUDA: 为 cudadrv 启用 flake8 并修复错误 (Graham Markall)
PR #6152: CUDA: 为所有 libdevice 函数提供包装器,并修复数学函数的类型 (#4618) (Graham Markall)
PR #6227: 当未找到支持的架构时引发异常 (Jacob Tomlinson)
PR #6244: CUDA 文档: 使使用模拟器的工作流程更加明确 (Graham Markall)
PR #6248: 添加对CUDA原子减法操作的支持 (Michael Collison)
PR #6289: 重构原子测试用例以减少代码重复 (Michael Collison)
PR #6290: CUDA: 添加对复数幂的支持 (Graham Markall)
PR #6296: 修复 numba.cuda 模块中的 flake8 违规问题 (Graham Markall)
PR #6297: 修复 numba.cuda.tests.cudapy 模块中的 flake8 违规问题 (Graham Markall)
PR #6298: 修复 numba.cuda.tests.cudadrv 中的 flake8 违规问题 (Graham Markall)
PR #6299: 修复 numba.cuda.simulator 中的 flake8 违规 (Graham Markall)
PR #6306: 修复合并后cuda原子测试中的flake8问题。(Stuart Archibald)
PR #6325: 重构代码以支持原子操作 (Michael Collison)
PR #6329: 修复CUDA测试的Flake8问题 (Stuart Archibald)
PR #6331: 明确指出在导入之前需要设置 NUMBA_ENABLE_CUDASIM (Graham Markall)
PR #6340: CUDA: 修复 #6339,启动专用内核时的性能回归问题 (Graham Markall)
PR #6380: 仅在Linux上测试托管分配(Graham Markall)
文档更新:
PR #6090: 文档: 添加关于直接创建 Numba 类型列表的文档 (
@rht
)PR #6110: 更新 CONTRIBUTING.md (Stuart Archibald)
PR #6128: CUDA 文档: 恢复 Dispatcher.forall() 文档 (Graham Markall)
PR #6277: 修复: cross2d 错误的文档引用 (问题 #6276) (
@jeertmans
)PR #6282: 移除关于 Python 2(.7) EOL 的文档。(Stuart Archibald)
PR #6283: 添加关于公共CI如何实现以及用户如何提供帮助的说明。(Stuart Archibald)
PR #6292: 文档化结构化数组属性访问的支持 (Graham Markall)
PR #6310:声明非官方的*BSD支持(Stuart Archibald)
PR #6342: 修复字面意义上使用的文档。(Stuart Archibald)
PR #6348: doc: 修正 jitclass.rst 中的拼写错误 (“initilising” -> “initialising”) (
@muxator
)PR #6362: 将 README 中的 llvmlite 支持移至 0.35 (Stuart Archibald)
PR #6363: 请注意,引用计数类型不允许在 set() 中使用。(Stuart Archibald)
PR #6364: 迁移 0.52 的弃用时间表 (Stuart Archibald)
CI/基础设施更新:
PR #6252: 显示频道URL (Siu Kwan Lam)
PR #6338: 将用户问题引导至 Discourse 而非 Google 群组。(Stan Seibert)
PR #6474: 为在LLVM中导致SIGABRT的测试添加PPC64LE跳过。(Stuart Archibald)
作者:
阿列克谢·科兹洛夫
Amos Bird
安德烈亚斯·索德尔
亚瑟·彼得斯
克里斯·巴恩斯
Ehsan Totoni (核心开发者)
埃里克·维瑟
Ethan Pronovost
格雷厄姆·马克尔
吉尔赫梅·莱奥巴斯
艾萨克·维尔舒普
伊万·布提金
雅各布·汤姆林森
Luiz Almeida
László Károlyi
Lucio Fernandez-Arjona
马克斯·卡茨
迈克尔·科里森
迈克·威廉姆斯
欧文·安德森
Radu Popovici
Ray Donnelly
Rishabh Varshney
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
Zhihao Yuan
@jeertmans
@mugoh
@muxator
@rht
版本 0.51.2 (2020年9月2日)
这是 0.51.1 的错误修复版本。它修复了 CFG 回边计算算法中的一个关键性能错误,该错误导致在编译具有某些病态属性的用例时出现指数时间复杂度。
PR #6195: PR 6187 继续。不要访问已经检查过的后继者
作者:
格雷厄姆·马克尔
Siu Kwan Lam (核心开发者)
版本 0.51.1 (2020年8月26日)
这是 0.51.0 的错误修复版本,它修复了缓存中的一个关键错误,CUDA 目标初始化序列中的另一个关键错误,并修复了一些编译时性能退化问题:
PR #6141: 修复 #6130 objmode 缓存段错误
PR #6146: 修复由于控制流分析导致的编译速度减慢
PR #6147: CUDA: 在导入时不进行运行时调用
PR #6153: 修复 #6151。将 UnicodeCharSeq 转换为 str 进行比较。
PR #6168: 修复 Issue #6167: test_cuda_submodules 中的失败
作者:
格雷厄姆·马克尔
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
版本 0.51.0 (2020年8月12日)
此版本继续为 Numba 添加新功能,并且还包含大量错误修复和稳定性改进。
核心功能变化亮点包括:
编译链现在基于 LLVM 10(Valentin Haenel)。
Numba 内部已切换为优先使用非字面类型而非字面类型,以减少函数过度特化,从而加快编译时间(Siu Kwan Lam)。
在CUDA目标上:支持CUDA Toolkit 11、Ampere和计算能力8.0;为内核打印``SASS``代码;可以在CUDA流中插入对Python函数的回调,并且流是异步可等待的;添加了原子``nanmin``和``nanmax``函数;修复了各种错误编译和段错误。(主要由Graham Markall完成;流的回调由Peter Würtz完成)。
英特尔还慷慨赞助了研究与开发,这些研究与开发带来了一些令人兴奋的新功能:
支持异构不可变列表和异构不可变字符串键字典。还为所有包含字面值的列表和字典提供了可选的初始/构造值捕获功能(Stuart Archibald)。
一个新的按引用传递的可变结构扩展类型
StructRef
(Siu Kwan Lam)。对象模式块现在可以被缓存,这带来了许多缓存相关的错误修复和性能提升。这也允许缓存定义在闭包中的函数(Siu Kwan Lam)。
需要注意的弃用项:
为了与其他目标对齐,@cuda.jit
的 argtypes
和 restypes
关键字参数现已弃用,bind
关键字参数也已弃用。此外,numba.jit
装饰器家族的 target
关键字参数也已弃用。
通用增强功能:
PR #5463: 添加 str(int) 实现
PR #5526: 实现 np.asarray(字面量)
PR #5619: 添加对多输出ufuncs的支持
PR #5711: 使用 timedelta 输入进行除法
PR #5763: 支持 np.bincount 的 minlength 参数
PR #5779: 当参数为空时,从 np.dot 返回零数组。
PR #5796: 为 np.positive 添加实现
PR #5849: 当索引为 StringLiteral 时,为记录设置项目,包括字面展开
PR #5856: 添加对就地二元操作转换为并行循环的支持。
PR #5893: 一次分配一个一维迭代空间,以实现更均匀的分布。
PR #5922: 减少 objmode 和 unpickling 的开销
PR #5944: 在轮子中重新启用 OpenMP
PR #5946: 实现字面量字典和列表。
PR #5956: 更新 numba_sysinfo.py
PR #5978: 添加 structref 作为一个按引用传递的可变结构体
PR #5980: 弃用 numba.jit 的 target 关键字参数。
PR #6058: 为重载API添加prefer_literal选项
修复:
PR #5674: 修复 #3955。允许 with objmode 被缓存
PR #5724: 延迟初始化进程锁以防止多进程问题
PR #5783: 使 np.divide 和 np.remainder 代码更加相似
PR #5808: 修复 5665 块 jit(nopython=True, forceobj=True) 并抑制 njit(forceobj=True)
PR #5834: 修复 Ellipsis 上的 is 运算符
PR #5838: 确保
Dispatcher.__eq__
总是返回一个布尔值PR #5841: 清理:在更多地方使用 PythonAPI.bool_from_bool
PR #5862: 不要将循环迭代变量泄漏到 numba.np.npyimpl 命名空间中
PR #5869: 更新 repomap
PR #5879: 修复 linalg 例程中错误的输入突变
PR #5882: 在 jit 装饰器中进行类型检查
PR #5925: 分别使用 np.inf 和 -np.inf 作为最大和最小浮点值。
PR #5935: 修复多进程中的默认参数
PR #5952: 修复“内部错误 … 在 BoundFunction(…) 期间,局部变量 ‘errstr’ 在赋值前被引用”
PR #5962: 使用 LLVM 10 和 AVX512 修复 SVML 测试
PR #5972: 修复 numba/runtests.py 的 flake8 问题
PR #5995: 使用新的 llvmlite 版本更新 setup.py
PR #5996: 将 llvmlite 的最低版本设置为 0.33
PR #6004: 修复 LiteralStrKeyDict 分支修剪中的问题
PR #6017: 修复 numba_do_raise
PR #6028: 修复 #6023
PR #6031: 继续 5821
PR #6035: 修复字面量的过度特化
PR #6046: 修复了最大化融合步骤中的语句重排错误。
PR #6056: 修复了通过 inline_arraycall 对非空 build_list 进行无效内联的问题
PR #6057: 修复主分支上 aarch64/python_3.8 的失败
PR #6070: 修复过度特化的容器
PR #6071: 移除 setup.py 中的 f-字符串
PR #6072: 修复 #6005
PR #6073: 修复了辅助函数中无效的C原型。
PR #6078: 复制 NumPy 的 PyArray_DescrCheck 宏
PR #6081: 修复跨驱动器使用和relpath的问题。
PR #6083: 修复初始值统一中的错误。
PR #6087: 从 randrange 测试中移除无效的健全性检查
PR #6089: 修复对 TypingError 的无效引用
PR #6097: 将函数代码和闭包字节添加到缓存键中
PR #6099: 由于ABI变化,限制TBB版本的上限。
PR #6101: 由于假设的SVML错误,限制icc_rt版本的最低限制。
PR #6107: 修复并测试 #6095
PR #6109: 修复了在 #6094 中报告的问题
PR #6111: 将 LiteralList 和 LiteralStrKeyDict 从 tuple 中解耦
PR #6116: 修复 #6102。非唯一标签的问题。
CUDA 增强/修复:
PR #5359: 移除对 0d 数组的特殊处理
PR #5709: CUDA: 对 cuda.jit 和内核/调度器抽象的重组
PR #5732: CUDA 文档: 记录内核的
forall
方法PR #5745: CUDA 流回调和异步可等待流
PR #5761: 为CUDA的int类型添加isnan和isinf的实现
PR #5819: 添加对 CUDA 11 和 Ampere / CC 8.0 的支持
PR #5826: CUDA: 添加获取内核SASS的函数
PR #5846: CUDA: 允许禁用 NVVM 优化,并修复调试问题
PR #5851: CUDA EMM 增强 - 添加默认的 get_ipc_handle 实现,有条件地跳过测试
PR #5852: CUDA: 修复
cuda.test()
PR #5857: CUDA 文档: 添加关于重置 EMM 插件的说明
PR #5859: CUDA: 修复reduce文档并改进样式
PR #6016: 修复了cuda测试中列表拼写的变化。
PR #6020: CUDA: 修复 #5820,添加 atomic nanmin / nanmax
PR #6030: CUDA: 在将IR发送给NVVM之前不要优化它
PR #6052: 修复 atomic_add_double 测试套件的 dtype
PR #6080: CUDA: 防止原子内部函数的自动升级
PR #6123: 修复 #6121
文档更新:
PR #5782: 在 Read the Docs 上托管文档
PR #5830: doc: 提到缓存使用 pickle
PR #5963: 修复指向 numpy ufunc 签名文档的断链
PR #5975: 重组沟通部分
PR #5981: 在python偏差页面中记录边界检查行为
PR #5993: structref 的文档
PR #6008: 小修复,使项目符号能被sphinx渲染
PR #6013: 强调 cuda 内核函数是异步的
PR #6036: 从 numba.errors 更新弃用文档到 numba.core.errors
PR #6062: 将引用 numba.pydata.org 改为 https
CI 更新:
PR #5850: 更新了“新建问题”的行为,以更好地重定向用户。
PR #5940: 添加 discourse 徽章
PR #5960: 在CI上设置mypy
来自用户贡献的PR的增强功能(感谢!):
Aisha Tammy 在 #5821 中添加了在编译时关闭 TBB 支持的功能(在 #6031 中由 Stuart Archibald 继续)。
Alexander Stiebing 在 #5952 中修复了一个赋值前引用的错误。
Alexey Kozlov 在 #6028 中修复了元组 getitem 对字面量的一个错误。
Andrew Eckart 在 #5869 中更新了 repomap,在 #5782 中增加了对 Read the Docs 的支持,在 #5779 中修复了
np.dot
实现中的一个错误以正确处理空数组,并在 #5763 中为np.bincount
增加了对minlength
的支持。@bitsisbits
在 #5956 中更新了numba_sysinfo.py
以正确处理 HSA 代理。Daichi Suzuo 修复了线程后端初始化序列中的一个错误,使得它在 #5724 中现在正确地成为一个惰性锁。
Eric Wieser 贡献了许多补丁,特别是在增强和改进
ufunc
功能方面:#5359: 移除对0维数组的特殊处理
#5834: 修复Ellipsis上的is运算符
#5619: 添加对多输出ufuncs的支持
#5841: 清理:在更多地方使用 PythonAPI.bool_from_bool
#5862: 不要将循环迭代变量泄漏到 numba.np.npyimpl 命名空间中
#5838: 确保
Dispatcher.__eq__
总是返回一个布尔值#5830: doc: 提到缓存使用 pickle
#5783: 使 np.divide 和 np.remainder 代码更加相似
Ethan Pronovost 在 #5881 中添加了一个防护措施,以防止常见的错误,即在同一个函数上两次应用 jit 装饰器。
Graham Markall 为 CUDA 目标贡献了许多补丁,如下:
#6052: 修复 atomic_add_double 测试的 dtype
#6030: CUDA: 在发送IR到NVVM之前不要优化它
#5846: CUDA: 允许禁用 NVVM 优化,并修复调试问题
#5826: CUDA: 添加获取内核SASS的函数
#5851: CUDA EMM 增强 - 添加默认的 get_ipc_handle 实现,有条件地跳过测试
#5709: CUDA: 对 cuda.jit 和内核/调度器抽象的重组
#5819: 添加对 CUDA 11 和 Ampere / CC 8.0 的支持
#6020: CUDA: 修复 #5820,添加原子 nanmin / nanmax
#5857: CUDA 文档: 添加关于重置 EMM 插件的说明
#5859: CUDA: 修复reduce文档和样式改进
#5852: CUDA: 修复
cuda.test()
#5732: CUDA 文档: 记录内核的
forall
方法
Guilherme Leobas 在 #5463 中增加了对
str(int)
的支持,并在 #5526 中增加了对np.asarray(字面值)
的支持。Hameer Abbasi 在 #5980 中弃用了
numba.jit
的target
关键字参数。Hannes Pahl 在 Numba 的 GitHub 页面上添加了一个徽章,链接到新的 discourse 论坛,相关工作在 #5940 中完成,并且还修复了一个允许非法组合的标志传递到
@jit
中的错误,相关工作在 #5808 中完成。Kayran Schmidt 在 #6013 的文档中强调,CUDA 内核函数是异步的。
Leonardo Uieda 在 #5963 中修复了一个指向 NumPy ufunc 签名文档的断链。
Lucio Fernandez-Arjona 在 #5960 中将 mypy 添加到 CI 并开始为代码库添加类型注解,还在 #5935 中修复了调度器上的 (反)序列化问题,在 #5876 中改进了未定义变量错误消息,在 #5711 中增加了对 timedelta 输入的除法支持,并在 #5849 中实现了当索引为
StringLiteral
时对记录的setitem
操作。Ludovic Tiako 在 #5981 的 python 偏差页面中记录了 Numba 的边界检查行为。
Matt Roeschke 在 #6062 中将所有
http
引用更改为https
。@niteya-shah
在 #5761 中为 CUDA 目标上的整数类型实现了isnan
和isinf
,并在 #5796 中实现了np.positive
。Peter Würtz 在 #5745 中添加了 CUDA 流回调和异步可等待流。
@rht
修复了在 #6036 中弃用文档中提到的无效导入。Sergey Pokhodenko 在 #5962 中更新了 LLVM 10 的 SVML 测试。
Shyam Saladi 在 #6008 中修复了一个 Sphinx 渲染错误。
作者:
Aisha Tammy
亚历山大·施泰宾
阿列克谢·科兹洛夫
安德鲁·埃卡特
@bitsisbits
Daichi Suzuo
埃里克·维瑟
Ethan Pronovost
格雷厄姆·马克尔
吉尔赫梅·莱奥巴斯
哈米尔·阿巴西
汉纳斯·帕尔
凯兰·施密特
科兹洛夫, 阿列克谢
莱昂纳多·乌伊达
Lucio Fernandez-Arjona
Ludovic Tiako
马特·罗斯切克
@niteya-shah
彼得·维茨
谢尔盖·波霍坚科
Shyam Saladi
@rht
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
版本 0.50.1 (2020年6月24日)
这是 0.50.0 的错误修复版本,它修复了错误报告中的一个关键错误以及一些其他较小的问题:
PR #5861: 为可能的 Windows get_terminal_size 异常添加了异常处理
PR #5876: 改进未定义变量错误信息
PR #5884: 更新 0.50.1 版本的弃用通知
PR #5889: 修复了对于 inline=’always’ 实际上没有强制重新分派的问题
PR #5912: 修复在某些类型模板上的错误属性访问,导致异常中断。
PR #5918: 修复由于 #5876 引起的 cuda 测试问题
作者:
@pepping_dore
Lucio Fernandez-Arjona
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
版本 0.50.0 (2020年6月10日)
与过去六个月发布的其他版本相比,这是一个更常见的版本。它包含了多项维护任务的结果,以及一些新功能和大量的错误修复。
核心功能变化亮点包括:
编译链现在基于 LLVM 9。
错误处理和报告系统已得到改进,以减少错误消息的大小,并提高质量和特异性。
CUDA 目标提供了更多的流构造器,并且新增了一个无需链接和加载代码到设备即可编译为 PTX 的函数。此外,用于描述 CUDA 线程和块的基于宏的系统已被替换为标准的类型和降低实现,以改进调试和扩展性。
重要提示:在 0.49.x 版本中为了适应 Numba 内部重构而存在的向后兼容垫片已被移除。如果从移动的位置导入模块,将会发生 ImportError
。
通用增强功能:
PR #5060: 启用 np.sum 用于 timedelta64
PR #5225: 调整解释器以通过 bool() 调用使条件成为谓词。
PR #5506: Jitclass 静态方法
PR #5580: 恢复 shim
PR #5591: 修复 #5525 为
numba -s
输出添加总内存图。PR #5616: 简化 ufunc 内核注册
PR #5617: 从 Numba 仓库中移除 /examples。
PR #5673: 修复内联器以在IR上运行所有传递并正确清理。
PR #5700: 使类型推断更容易理解:添加SSA转储,用于``DEBUG_TYPEINFER``
PR #5702: 针对LLVM 9的修复
PR #5722: 改进错误信息。
PR #5758: 支持 NumPy 1.18
修复:
PR #5390: 为 lookup_module 添加错误处理
PR #5464: Jitclass 删除注解以避免错误
PR #5478: 修复 #5471。省略类型未被识别为字面值的问题。
PR #5517: 修复 numba.typed.List 对单例和空可迭代对象的扩展
PR #5549: 检查类型 getitem
PR #5568: 在Windows上添加跳过入口点测试
PR #5581: 恢复 #5568
PR #5602: 修复由从 numba.typed.List 中弹出引起的段错误
PR #5645: 修复SSA冗余CFG计算
PR #5686: 修复 SSA 非最小化问题
PR #5689: 修复统一函数类型中的错误(问题 5685)
PR #5694: 如果切片数组分析的任何部分不可分析,则跳过部分切片数组分析。
PR #5697: 修复 parfor 循环嵌套变量的 usedef 问题。
PR #5705: 修复了 SSA 看起来像归约变量的情况。
PR #5714: 修复测试中的错误
PR #5717: 在任何编译开始之前初始化 Numba 扩展。
PR #5721: 修复数组迭代器布局。
PR #5738: 修复在构建农场上的主分支
PR #5757: 强制 LLVM 使用 ZMM 寄存器进行向量化。
PR #5764: 修复 flake8 错误
PR #5768: 区间示例:修复导入
PR #5781: 将记录数组示例移动到测试模块
PR #5791: 修复无cgroups问题
PR #5795: 恢复引用计数移除过程并使其严格
PR #5807: 由于PPC CTR循环问题,跳过在POWER8上失败的测试。
PR #5812: 修复 #5792 的次要问题,@overload 内联缓存的 IR 被突变。
PR #5815: 固定 llvmlite 版本为 0.33
PR #5833: 修复了错误信息中源位置显示不正确的问题。
CUDA 增强/修复:
PR #5347: CUDA: 提供更多流构造函数
PR #5388: CUDA: 修复 test_round{f4,f8} 中的 OOB 写入
PR #5437: 修复 #5429: 在从
as_cuda_array(...)
生成的数组上使用.get_ipc_handle(...)
时发生的异常PR #5481: CUDA: 用类型和降低实现替换宏
PR #5556: CUDA: 使原子语义与 Python / NumPy 匹配,并修复 #5458
PR #5558: CUDA: 仅在保留时释放主上下文
PR #5561: CUDA: 添加编译为PTX的函数(+其他小修复)
PR #5573: CUDA: 在cuda-memcheck下跳过导致挂起的测试
PR #5578: 为CUDA目标实现math.modf
PR #5704: CUDA 即时编译:修复 max_registers 关键字参数
PR #5718: CUDA 库路径测试:当 CUDA_HOME 未设置时,取消设置 CUDA_PATH
PR #5800: 修复 LLVM 9 IR 以支持 NVVM
PR #5803: CUDA 更新预期错误信息以修复 #5797
文档更新:
PR #5546: DOC: 在内联笔记中添加关于成本模型的文档。
PR #5653: 更新关于 try-finally 情况的文档
来自用户贡献的PR的增强功能(感谢!):
Elias Kuthe 修复了 #5768 中 Interval 示例中的导入问题
Eric Wieser 在 #5616 中简化了 ufunc 内核注册机制
Ethan Pronovost 在 #5464 中修复了
jitclass
中__annotations__
的问题,在 #5549 中修复了导致 Numba 的Type.__getitem__
无限循环的错误,在 #5714 中修复了np.arange
测试中的错误,并在 #5506 中为jitclass
添加了对@staticmethod
的支持。Gabriele Gemmi 在 #5578 中为 CUDA 目标实现了
math.modf
Graham Markall 贡献了许多补丁,主要针对 CUDA 目标,如下:
#5347: CUDA: 提供更多流构造函数
#5388: CUDA: 修复 test_round{f4,f8} 中的 OOB 写入
#5437: 修复 #5429: 在使用
as_cuda_array(...)
生成的数组上调用.get_ipc_handle(...)
时发生的异常#5481: CUDA: 用类型和降低实现替换宏
#5556: CUDA: 使原子语义与 Python / NumPy 匹配,并修复 #5458
#5558: CUDA: 仅在保留时释放主上下文
#5561: CUDA: 添加编译到PTX的函数(+其他小修复)
#5573: CUDA: 在cuda-memcheck下跳过导致其挂起的测试
#5648: 在EMM插件测试后取消内存管理器设置
#5700: 使类型推断更容易理解:添加SSA转储,用于``DEBUG_TYPEINFER``
#5704: CUDA 即时编译:修复 max_registers 关键字参数
#5718: CUDA 库路径测试:当 CUDA_HOME 未设置时,取消设置 CUDA_PATH
#5800: 修复 LLVM 9 IR 以适应 NVVM
#5803: CUDA 更新预期错误信息以修复 #5797
Guilherme Leobas 更新了 #5653 中关于 try-finally 的文档
Hameer Abbasi 在 #5546 的内联笔记中添加了关于成本模型的文档
Jacques Gaudin 重写了
numba -s
以生成和使用关于当前系统的输出字典,详见 #5591James Bourbeau 更新了 min/argmin 和 max/argmax 以处理非前导的 nans(通过 #5758)
Lucio Fernandez-Arjona 在 #5781 中将记录数组示例移动到了一个测试模块,并在 #5060 中为
np.sum
添加了np.timedelta64
处理。Pearu Peterson 在 #5689 中修复了 unified_function_type 中的一个错误
Sergey Pokhodenko 修复了 #5757 中影响 LLVM 10 在 Intel SkyLake 处理器上向量化宽度的问题。
Shan Sikdar 在 #5390 中为
lookup_module
添加了错误处理@toddrme2178 为 NumPy 1.18 添加 CI 测试(通过 #5758)
作者:
伊莱亚斯·库特
埃里克·维瑟
Ethan Pronovost
加布里埃莱·格米
格雷厄姆·马克尔
吉尔赫梅·莱奥巴斯
哈米尔·阿巴西
雅克·戈丁
詹姆斯·伯尔博
Lucio Fernandez-Arjona
Pearu Peterson
谢尔盖·波霍坚科
山·西卡达尔
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
@toddrme2178
Valentin Haenel (核心开发者)
版本 0.49.1 (2020年5月7日)
这是 0.49.0 的错误修复版本,它修复了 SSA 形式的一些残留问题,分支剪枝逻辑中的一个关键错误,以及一些其他较小的错误:
PR #5587: 修复了 #5586 线程实现中的拼写错误
PR #5592: 修复 #5583 从文档和示例中移除对 cffi_support 的引用
PR #5614: 修复 parfors 中比较表达式的 resolve 中的无效类型。
PR #5624: 修复在修剪时错误地将谓词重写为位常量的问题。
PR #5627: 修复 #5623,基于无效的等式假设的 SSA 本地定义扫描。
PR #5629: 修复了array_exprs中的命名错误
PR #5630: 修复 #5570。由于 SSA 命名导致的错误竞赛变量检测。
PR #5638: 使 literal_unroll 函数作为自由变量工作。
PR #5648: 在EMM插件测试后取消内存管理器设置
PR #5651: 修复一些 SSA 问题
PR #5652: 固定到 sphinx=2.4.4 以避免 C 声明的问题
PR #5658: 修复未定义的一级函数类型统一问题
PR #5669: 更新5分钟指南中的示例,关于SSA类型稳定性。
PR #5676: 恢复
numba.types
为公共 API
作者:
格雷厄姆·马克尔
胡安·曼努埃尔·克鲁兹·马丁内斯
Pearu Peterson
肖恩·劳
Stuart Archibald (核心开发者)
Siu Kwan Lam (核心开发者)
版本 0.49.0 (2020年4月16日)
此版本在代码更改方面非常大。大规模移除了不支持的 Python 和 NumPy 版本,并进行了大量的重构以简化 Numba 代码库,使其更容易为贡献者所用。Numba 的中间表示也经历了一些重要的变化,以解决一些长期存在的问题。此外,还添加了一些新功能,并修复了大量错误!
重要提示:在此版本中,Numba 的内部结构发生了很大变化。为了不立即破坏使用 Numba 内部的项目,此版本提供了一个向后兼容的“垫片”。如果从移动的位置导入模块,垫片将发出弃用警告并建议如何更新导入语句以适应新位置。该垫片将在 0.50.0 版本中移除!
核心功能变化亮点包括:
移除所有与 Python 2 相关的代码,并将最低支持的 Python 版本更新为 3.6,最低支持的 NumPy 版本更新为 1.15,最低支持的 SciPy 版本更新为 1.0。(Stuart Archibald)。
Numba 代码库的重构。代码现在按功能组织成子模块。这清理了 Numba 的顶层命名空间。(Stuart Archibald)。
Numba 中间表示的
ir.Del
自由静态单赋值形式介绍(Siu Kwan Lam 和 Stuart Archibald)。为使用并行CPU后端的代码添加了一个类似OpenMP的线程掩码API(Aaron Meurer 和 Stuart Archibald)。
对于CUDA目标,现在所有内核启动都需要一个配置,这样可以防止意外启动具有旧默认值(单个线程在单个块中)的内核。硬编码的自动调优器现在也被移除,此类调优被推迟到提供相同功能的CUDA API调用(Graham Markall)。
CUDA 目标还增加了一个外部内存管理插件接口,允许 Numba 使用另一个支持 CUDA 的库来进行所有内存分配和释放(Graham Markall)。
Numba 类型化列表容器增加了对从可迭代对象构建的支持(Valentin Haenel)。
为一级函数类型添加了实验性支持(Pearu Peterson)。
来自用户贡献的PR的增强功能(感谢!):
Aaron Meurer 在 #4615 中添加了对运行时线程掩码的支持。
Andreas Sodeur 修复了一个长期存在的错误,该错误阻止了
cProfile
与 Numba JIT 编译函数一起工作,详见 #4476。Arik Funke 修复了
test_array_reductions
中的错误信息 (#5278),解决了测试发现的问题 (#5239),使得文档在 Windows 上再次能够构建 (#5453),并在 #5489 中修复了文档中的嵌套列表问题。Antonio Russo 在 #5252 中修复了一个 SyntaxWarning。
Eric Wieser 增加了对推断对象数组类型(#5348)和迭代2D数组(#5115)的支持,还修复了由于在#5222中缺少(void)导致的某些编译器警告。此外,还帮助改进了“shim”及其相关警告,涉及#5485、#5488、#5498以及部分#5532。
Ethan Pronovost 修复了 #5454 中使用 jitclass 时 shim 错误警告的问题,并在 #5505 中防止了 jitclass
__init__
中的非法返回值。Gabriel Majeri 在 #5106 中将 SciPy 2019 的演讲添加到了文档中。
Graham Markall 更改了 Numba HTML 文档主题,以解决 #5346 中长期存在的多个问题。此外,还贡献了大量 CUDA 增强和修复,具体包括:
#5519: CUDA: 静音测试套件 - 修复 #4809,移除 autojit,删除打印
#5443: 修复 #5196: 文档: 仅在调试模式下启用CUDA中的断言
#5436: 修复 #5408: test_set_registers_57 在 Maxwell 上失败
#5423: 修复 #5421: 添加关于在CUDA内核中打印的注释
#5400: 修复 #4954,以及其他一些小的 CUDA 测试套件修复
#5328: NBEP 7: 外部内存管理插件接口
#5144: 修复 #4875: 使 #2655 测试在调试模式下预期通过
#5323: 文档化CUDA数组接口的生命周期语义
#5061: 防止在没有配置的情况下启动内核,移除自动调优器
#5099: 修复 #5073: 动态共享内存的所有切片都别名
#5136: CUDA: 在默认流上启用异步操作
#5085: 支持其他itemsizes与视图
#5059: 文档:解释如何将Memcheck与Numba一起使用,修复CUDA文档中的问题
#4957: 在文档中添加关于覆盖gufunc输入的说明
Greg Jennings 修复了
np.random.choice
在 #3897/#5310 中未能正确识别 RNG 种子的问题。Guilherme Leobas 在 #5293 中添加了对
np.isnat
的支持。Henry Schreiner 在 #5150 中使 requirements.txt 中的 llvmlite 需求更加明确。
Ivan Butygin 帮助修复了 #5114/#5250 中 parfors 顺序降低的问题。
Jacques Gaudin 在 #5548 中修复了 Python >= 3.8 在
numba -s
中的一个错误。Jim Pivarski 在 #5280 中添加了一些调试入口点的提示。
John Kirkham 在 #5252 中为 CUDA 设备数组的
dtype
参数添加了numpy.dtype
强制转换。Leo Fang 在 #5104 中添加了一个支持
__cuda_array_interface__
的库列表。Lucio Fernandez-Arjona 在 #5182 中为 NumPy 记录类型添加了
getitem
,当索引是StringLiteral
类型时,并在 #5450 中通过添加到目录和移除编号来改进了文档的渲染。Mads R. B. Kristensen 修复了
__cuda_array_interface__
在 #5189 中不需要上下文的问题。Marcin Tolysz 在 #5174 中为 AOT 编译添加了对嵌套模块的支持。
Mike Williams 在 #5343 中修复了 CUDA 模拟器中 NumPy 记录和
getitem
的一些问题。Pearu Peterson 在 #5287 中添加了对一等函数类型的实验性支持(并在 #5459、#5473/#5429 和 #5557 中进行了修复)。
Ravi Teja Gutta 在 #4376/#5313 中增加了对
np.flip
的支持。Rohit Sanjay 修复了类型细化对于传递给类型化列表
extend()
的 unicode 输入的问题(#5295),并修复了 unicode.strip()
以去除 #5213 中的所有空白字符。Vladimir Lukyanov 在 #5361 中修复了
typed.dict
中的一个尴尬的错误,在 #5357 中添加了一个修复以确保 LLVM 和汇编转储正确高亮,并在 #5333 中实现了 Numba IR 词法分析器并添加了对 Numba IR 转储的高亮。hdf 在 #5257 中修复了 CUDA jit 目标中
boundscheck
标志的问题。
通用增强功能:
PR #4615: 允许在运行时屏蔽线程
PR #4798: 基于原始谓词添加分支修剪。
PR #5115: 添加对遍历二维数组的支持
PR #5117: 实现 ord()/chr()
PR #5122: 移除 Python 2。
PR #5127: 为 boxer/unboxer 调用 jitcode 的调用约定适配器
PR #5151: 实现无类型的类型列表
PR #5174: 嵌套模块 https://github.com/numba/numba/issues/4739
PR #5182: 当索引为 StringLiteral 时,为 Record 类型添加 getitem
PR #5185: 从闭包中提取代码生成工具
PR #5197: 重构 Numba,第一部分
PR #5210: 从构建工具中移除更多不支持的 Python 版本。
PR #5212: 增加了查看ELF反汇编CFG的支持。
PR #5227: 不可变的类型化列表
PR #5231: 增加了对
np.asarray
与numba.typed.List
一起使用的支持PR #5235: 为
numba.typed.List
添加了属性dtype
PR #5272: 重构 parfor: 拆分 ParforPass
PR #5281: 在合法化之前使 IR ir.Del 保持自由。
PR #5287: 一级函数类型
PR #5293: np.isnat
PR #5294: 从可迭代对象创建类型化列表
PR #5295: 优化unicode输入上的typed-list以扩展
PR #5296: 重构 parfor: 从 passes 中获得更好的异常
PR #5308: 提供
numba.extending.is_jitted
PR #5320: 重构数组分析
PR #5325: 让 literal_unroll 接受 types.Named*Tuple
PR #5330: 将 parfor 降低中的常见操作重构为一个新的实用工具
PR #5333: 添加: 高亮显示 Numba IR 转储
PR #5342: 支持传递给 parfors 的元组。
PR #5348: 添加对推断对象数组类型的支持
PR #5351: 再次SSA
PR #5352: 添加垫片以适应重构。
PR #5356: 在 njit 中实现分配的参数
PR #5369: 使测试顺序在功能可用性方面更加一致
PR #5428: Wip/弃用 jitclass 位置
PR #5441: 对一等函数的额外更改
PR #5455: 迁移到 llvmlite 0.32.*
PR #5457: 为未类型化的列表实现 repr
修复:
PR #4476: 在调度器跟踪路径中修复帧注入的另一次尝试
PR #4942: 防止某些 parfor 别名。重命名复制的函数变量以防止递归类型锁定。
PR #5092: 修复 #5087
PR #5150: 在 requirements.txt 中更明确地要求 llvmlite
PR #5172: 修复 llvmlite 的版本规范
PR #5176: 规范化传入 fold_arguments 的关键字参数。
PR #5183: 显式传递 ‘inline’ 给 overload
PR #5193: 修复由于安装时缺少文件导致的CI失败
PR #5213: 修复
.strip()
以去除所有空白字符PR #5216: 修复调度器将命名元组误认为简单元组的错误
PR #5222: 修复由于缺少 (void) 导致的编译器警告
PR #5232: 修复了一个导致主分支崩溃的错误导入
PR #5239: 修复 unittest 的测试发现
PR #5247: 继续 PR #5126
PR #5250: 部分修复/5098
PR #5252: 简单修复 SyntaxWarning
PR #5276: 为 has_no_side_effect 添加 prange 变体。
PR #5278: 修复 test_array_reductions 中的错误信息
PR #5310: PR #3897 继续
PR #5313: 继续 PR #4376
PR #5318: 从 MANIFEST.in 中移除 AUTHORS 文件引用
PR #5327: 如果发现 FNV 哈希作为 CPython 的默认设置,则添加警告。
PR #5338: 移除引用计数修剪过程
PR #5345: 禁用因删除通过而失败的测试。
PR #5357: 小修复以正确高亮 llvm 和 asm
PR #5361: 5081 typed.dict
PR #5431: 为 numba 扩展模块入口点添加容差。
PR #5432: 修复导致编译器警告的代码。
PR #5445: 移除未定义的变量
PR #5454: 不要对 numba.experimental.jitclass 发出警告
PR #5459: 修复了问题 5448
PR #5480: 修复 #5477,literal_unroll 在搜索 getitems 时出现 KeyError
PR #5485: 在“没有直接替换”错误消息中显示违规模块
PR #5488: 添加缺失的
numba.config
垫片PR #5495: 修复phi strip后变量缺少空初始化的问题
PR #5498: 使 shim 弃用警告也能在 Python 3.6 上工作
PR #5505: 如果 __init__ 返回值,提供更好的错误信息
PR #5527: 尝试修复 #5518
PR #5529: PR #5473 继续
PR #5532: 使
numba.<mod>
无需导入即可使用PR #5542: 修复了RC2模块shim错误
PR #5548: 修复 #5537 移除了对
platform.linux_distribution
的引用PR #5555: 通过恢复对 ArrayAnalysis 的更改来修复 #5515
PR #5557: 一级函数调用不能使用关键字参数
PR #5569: 修复 RewriteConstGetitems 未为新表达式注册 calltype 的问题
PR #5571: 固定 llvmlite 需求
CUDA 增强/修复:
PR #5061: 防止在没有配置的情况下启动内核,移除自动调谐器
PR #5085: 支持其他项目大小的视图
PR #5099: 修复 #5073: 动态共享内存的所有切片都别名
PR #5104: 添加支持 __cuda_array_interface__ 的库列表
PR #5136: CUDA: 在默认流上启用异步操作
PR #5144: 修复 #4875: 使 #2655 测试在调试模式下预期通过
PR #5189: __cuda_array_interface__ 不需要上下文
PR #5253: 将
dtype
强制转换为numpy.dtype
PR #5257: 边界检查修复
PR #5319: 使面向用户的错误字符串使用绝对路径而非相对路径。
PR #5323: 文档化 CUDA Array Interface 的生命周期语义
PR #5328: NBEP 7: 外部内存管理插件接口
PR #5343: 修复 cuda 欺骗
PR #5400: 修复 #4954,以及其他一些小的 CUDA 测试套件修复
PR #5436: 修复 #5408: test_set_registers_57 在 Maxwell 上失败
PR #5519: CUDA: 静默测试套件 - 修复 #4809,移除 autojit,删除打印
文档更新:
PR #4957: 在文档中添加关于覆盖 gufunc 输入的说明
PR #5059: 文档:解释如何将Memcheck与Numba一起使用,修复CUDA文档中的问题
PR #5106: 将 SciPy 2019 演讲添加到文档中
PR #5147: 更新主分支以适应 0.48.0 更新
PR #5155: 解释在 Numba IR 级别内联将做什么
PR #5161: 修复 README.rst 格式
PR #5207: 移除 AUTHORS 列表
PR #5249: 修复“参见”的目标路径
PR #5262: 修正内联文档中的拼写错误
PR #5270: 修复 typeddict 文档中的 ‘see also’
PR #5280: 为调试入口点添加了一些提示。
PR #5297: 更新文档,添加 {g,}ufuncs 的介绍。
PR #5326: 更新安装文档以包含 OpenMP 要求。
PR #5346: 文档:使用 sphinx_rtd_theme
PR #5366: 在安装检查输出中移除对 Python 2.7 的引用
PR #5423: 修复 #5421: 添加关于在CUDA内核中打印的注释
PR #5438: 更新文档构建的包依赖。
PR #5440: 更新弃用通知。
PR #5443: 修复 #5196: 文档: 仅在调试模式下启用CUDA中的断言
PR #5450: 文档:移除编号并为目录添加标题
PR #5453: 修复在 Windows 上构建文档的问题
PR #5489: 文档: 修复嵌套项目列表的渲染
CI 更新:
PR #5314: 更新用于Azure CI中OSX的镜像。
PR #5360: 移除 Travis CI 徽章。
作者:
Aaron Meurer
安德烈亚斯·索德尔
安东尼奥·鲁索
Arik Funke
埃里克·维瑟
Ethan Pronovost
加布里埃尔·马杰里
格雷厄姆·马克尔
格雷格·詹宁斯
吉尔赫梅·莱奥巴斯
hdf
亨利·施赖纳
伊万·布提金
雅克·戈丁
吉姆·皮瓦尔斯基
约翰·柯克汉姆
Leo Fang
Lucio Fernandez-Arjona
Mads R. B. Kristensen
Marcin Tolysz
迈克·威廉姆斯
Pearu Peterson
拉维·特贾·古塔
罗希特·桑杰
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
弗拉基米尔·卢基扬诺夫
版本 0.48.0 (2020年1月27日)
此版本特别小,因为它旨在捕捉任何错过 0.47.0 截止日期的问题(截止日期故意与 Python 2.7 支持结束时间一致)。下一个版本将会大得多。
此版本的核心变化主要集中在为结束对 Python 2.7 支持所需的清理工作的开始,CUDA 目标的改进以及对众多额外 Unicode 字符串方法的支持。
来自用户贡献的PR的增强功能(感谢!):
Brian Wignall 在 #4998 中修正了更多拼写错误。
Denis Smirnov 增加了对字符串方法
capitalize
(#4823)、casefold
(#4824)、swapcase
(#4825)、rsplit
(#4834)、partition
(#4845) 和splitlines
(#4849) 的支持。Elena Totmenina 扩展了对字符串方法
startswith
(#4867) 的支持,并添加了endswith
(#4868)。Eric Wieser 在 #4760 中使
type_callable
返回装饰后的函数本身。Ethan Pronovost 在 #4617 中增加了对
np.argwhere
的支持Graham Markall 贡献了大量的 CUDA 增强和修复,具体包括:
#5068: 从utils中移除Python 3.4的backports
#4975: 使
device_array_like
创建连续数组 (修复 #4832)#5023: 不要用0个元素启动ForAll内核(修复 #5017)
#5016: 修复CUDA库搜索中的各种问题(修复 #4979)
#5014: 启用共享内存的记录和布尔值使用,移除ddt,添加额外的转置测试
#4964: 修复 #4628: 为CUDA设备数组添加更合适的类型注解
#5007: test_consuming_strides: 保持开发数组的活动状态
#4997: 在文档中说明需要CUDA Toolkit 8.0
James Bourbeau 在 #5027 中将 Python 3.8 分类器添加到 setup.py 中。
John Kirkham 在 #5049 中对
__cuda_array_interface__
文档进行了澄清。Leo Fang 在 #5012 中修复了
dummyarray
中的索引问题。Marcel Bargull 修复了 Python 3.8 在 #5029 中的构建和测试问题。
Maria Rubtsov 增加了对字符串方法
isdecimal
(#4842)、isdigit
(#4843)、isnumeric
(#4844) 和replace
(#4865) 的支持。
通用增强功能:
PR #4760: 使 type_callable 返回装饰后的函数
PR #5010: 合并字符串PR
此合并PR包括以下内容:
PR #4823: 基于 CPython 实现 str.capitalize()
PR #4824: 基于CPython实现str.casefold()
PR #4825: 基于CPython实现str.swapcase()
PR #4834: 基于CPython实现str.rsplit()
PR #4842: 实现 str.isdecimal
PR #4843: 实现 str.isdigit
PR #4844: 实现 str.isnumeric
PR #4845: 基于 CPython 实现 str.partition()
PR #4849: 基于CPython实现str.splitlines()
PR #4865: 实现 str.replace
PR #4867: 基于 CPython 的 str.startswith() 功能扩展
PR #4868: 为 str.endswith() 添加功能
PR #5039: 禁用帮助消息。
PR #4617: 为
np.argwhere
添加覆盖率
修复:
PR #4724: 仅使用直播(而非别名)来创建后 parfor 直播集。
PR #4998: 修复更多拼写错误
PR #5024: 在静态重写之前传播语义常量。
PR #5027: 在 setup.py 中添加 Python 3.8 分类器
PR #5046: 更新 setup.py 和 buildscripts 以满足依赖要求
PR #5053: 在 define() 中从数组转换为名称,并且不要因多个一致的定义而失效。
PR #5058: 允许在 wrap_index 中混合使用整数类型
PR #5078: 捕获在JITed函数中使用全局类型化列表
PR #5092: 修复 #5087,字节码分析中的错误。
CUDA 增强/修复:
PR #4964: 修复 #4628: 为 CUDA 设备数组添加更合适的类型注解
PR #4975: 使
device_array_like
创建连续数组 (修复 #4832)PR #4997: 在文档中声明需要 CUDA Toolkit 8.0
PR #5007: test_consuming_strides: 保持开发数组的活动状态
PR #5012: 修复访问 dummyarray 的“-1”元素时出现的 IndexError
PR #5014: 启用共享内存的记录和布尔值使用,移除ddt,添加额外的转置测试
PR #5016: 修复CUDA库搜索中的各种问题(修复 #4979)
PR #5023: 不要用0个元素启动ForAll内核(修复 #5017)
PR #5068: 从 utils 中移除 Python 3.4 的回退
文档更新:
PR #5049: 澄清字典的含义
PR #5062: 更新文档以适应更新后的版本要求
PR #5090: 更新 0.48.0 的弃用通知
CI 更新:
PR #5029: 为 Python 3.8 测试安装可选依赖项
PR #5040: 从公共CI中移除Py2.7和Py3.5
PR #5048: 修复 CI py38
作者:
布莱恩·威格纳
丹尼斯·斯米尔诺夫
埃琳娜·托特米娜
埃里克·维瑟
Ethan Pronovost
格雷厄姆·马克尔
詹姆斯·伯尔博
约翰·柯克汉姆
Leo Fang
Marcel Bargull
玛丽亚·鲁布佐夫
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
版本 0.47.0 (2020年1月2日)
此版本在多个重要领域扩展了 Numba 的功能,并且由于它包含了支持 Python 2 和 Python 3.5 的最后一个主要点发布,因此也具有重要意义。下一个版本(0.48.0)将仅支持 Python 3.6 及以上版本!(这遵循了 NumPy 在 NEP 29 中指定的弃用时间表。)
核心功能变化亮点包括:
全面支持 Python 3.8 (Siu Kwan Lam)
选择加入的边界检查(Aaron Meurer)
对
map
、filter
和reduce
的支持(Stuart Archibald)
英特尔还慷慨赞助了研究与开发,这些研究与开发带来了一些令人兴奋的新功能:
初步支持基本的
try
/except
用法(Siu Kwan Lam)能够将由闭包/lambda创建的函数作为参数传递(Stuart Archibald)
sorted
和list.sort()
现在接受key
参数 (Stuart Archibald 和 Siu Kwan Lam)一个新的编译器传递通过使用函数
numba.literal_unroll
触发,该函数允许对异构元组和常量列表进行迭代。(Stuart Archibald)
来自用户贡献的PR的增强功能(感谢!):
Ankit Mahato 在 #4862 中添加了对 PyCon India 2019 上关于 Numba 的新演讲的引用
Brian Wignall 友善地修正了 #4909 中的一些拼写错误和打字错误
Denis Smirnov 编写了大量方法,显著增强了字符串支持,包括:
str.rindex()
在 #4861str.isprintable()
在 #4836str.index()
在 #4860start/end
参数用于str.find()
在 #4866str.isspace()
在 #4835str.isidentifier()
#4837str.rpartition()
在 #4841str.lower()
和str.islower()
在 #4651
Elena Totmenina 在 #4839、#4840 和 #4847 中分别实现了
str.isalnum()
、str.isalpha()
和str.isascii
。Eric Larson 修复了 #4710 中的字面量比较错误
Ethan Pronovost 在 #4770 中更新了
np.arange
的实现,以允许使用dtype
关键字参数,并在 #4715 中为几种类型添加了bool
实现。Graham Markall 修复了 CUDA 目标的一些问题,具体如下:
#4931: 为 CUDA 自动调优添加了 CC 7.0 / 7.5 的物理限制
#4934: 修复了 TestCudaWarpOperations 中的错误
#4938: 改进了CUDA vectorize装饰器的错误/警告
Guilherme Leobas 在 #4667 中修复了
urem
实现中的一个拼写错误Isaac Virshup 贡献了许多补丁,修复了错误,增加了对更多 NumPy 函数的支持,并增强了 Python 功能支持。这些贡献包括:
#4729: 允许使用混合类型形状元组构造数组
#4904: 实现
np.lcm
#4780: 实现 np.gcd 和 math.gcd
#4779: 使切片构造函数更接近Python。
#4707: 添加了对 slice.indices 的支持
#4578: 澄清 numba ufunc 支持的功能
James Bourbeau 修复了一些工具问题,#4794 将
setuptools
添加为依赖项,#4501 为flake8
合规性添加了预提交钩子。Leo Fang 在 #4629 中使
numba.dummyarray.Array
可迭代Marc Garcia 修复了
numba.jit
参数名 signature_or_function 在 #4703Marcelo Duarte Trevisani 在 #4725 中将 llvmlite 的要求修改为
>=0.30.0
Matt Cooper 通过移除 maxParallel 解决了 #4737 中长期存在的 CI 问题。
Matti Picus 修复了 Azure Pipelines 中 #4734 的
collections.abc
问题。Rob Ennis 在 #4911 中修复了
np.interp
float32
处理的错误VDimir 在 #4777 中修复了数组转置布局中的一个错误,并在 #4776 中重新启用了一些空闲测试并进行了修复。
Vyacheslav Smirnov 在 #4645 中启用了对 str.istitle()` 的支持
通用增强功能:
PR #4432: 边界检查
PR #4501: 添加预提交钩子
PR #4536: 当调用者是函数时,处理内联器中的关键字参数
PR #4599: 允许闭包成为函数,启用 map(), filter()
PR #4611: 基于Cpython为unicode实现title()方法
PR #4645: 启用对 unicode 字符串的 istitle() 方法的支持
PR #4651: 实现 str.lower() 和 str.islower()
PR #4652: 实现 str.rfind()
PR #4695: 重构 overload* 并支持 jit_options 和 inline
PR #4707: 增加了对 slice.indices 的支持
PR #4715: 为几种类型添加 bool 重载
PR #4729: 允许使用混合类型的形状元组进行数组构造
PR #4755: Python3.8 支持
PR #4756: 为 ndarray.fill 添加 parfor 支持。
PR #4768: 更新 typeconv 错误信息以请求 sys.executable。
PR #4770: 使用 @overload 更新 np.arange 实现
PR #4779: 使切片构造函数更接近Python。
PR #4780: 实现 np.gcd 和 math.gcd
PR #4794: 添加 setuptools 作为依赖项
PR #4802: 将 git hash 放入构建字符串中
PR #4803: 为不当使用的归约变量提供更好的编译器错误信息。
PR #4817: 类型化列表的实现和暴露分配
PR #4818: 类型化列表更快的复制
PR #4835: 基于CPython实现str.isspace()
PR #4836: 基于 CPython 实现 str.isprintable()
PR #4837: 基于 CPython 实现 str.isidentifier()
PR #4839: 基于CPython实现 str.isalnum()
PR #4840: 基于CPython实现str.isalpha()
PR #4841: 基于CPython实现str.rpartition()
PR #4847: 基于 CPython 实现 str.isascii()
PR #4851: 为 FunctionIR 添加 graphviz 输出
PR #4854: Python3.8 循环提升
PR #4858: 基于 CPython 实现 str.expandtabs()
PR #4860: 基于 CPython 实现 str.index()
PR #4861: 基于 CPython 实现 str.rindex()
PR #4866: 支持 str.find() 的 start/end 参数
PR #4874: 升级到 llvmlite 0.31
PR #4896: 根据架构和Python版本特化arange的dtype。
PR #4902: 对 try except 的基本支持
PR #4904: 实现 np.lcm
PR #4910: 循环规范化与类型感知的元组解包器/循环体版本控制传递
PR #4961: 更新 Python 3.8 的 hash(tuple)。
PR #4977: 实现带有键的 sort/sorted。
PR #4987: 为所有类型类添加 is_internal 属性。
修复:
PR #4090: 更新到 LLVM8 的 memset/memcpy 内部函数
PR #4582: 在进行跨线程缩减数组的缩减操作时,将 sub 转换为 add,将 div 转换为 mul。
PR #4648: 正确处理 0 作为切片参数。
PR #4660: 从所有块的等价集中移除重复定义的变量。
PR #4672: 修复 dufunc 的序列化问题
PR #4710: BUG: 字面量的比较
PR #4718: 修改 get_call_table 以支持中间变量。
PR #4725: 需要 llvmlite >=0.30.0
PR #4734: 更倾向于从 collections.abc 导入
PR #4736: 修复 flake8 错误
PR #4776: 修复并启用来自 test_array_manipulation 的 idle 测试
PR #4777: 修复转置输出数组布局
PR #4782: 修复SVML问题(及其连锁函数解析效果)。
PR #4785: 将 0d 数组视为标量。
PR #4787: 修复标志上缺失的incref
PR #4789: 修复 numba/targets/base.py 中的拼写错误
PR #4791: 修复拼写错误
PR #4811: 修复现在失败的测试中的拼写错误
PR #4852: 窗口测试应仅检查双精度误差范围内的相等性
PR #4881: 通过在迭代器上使用 extend 来修复列表的细化
PR #4882: 修复 arange 中的返回类型和零步长处理。
PR #4885: 抑制关于ufunc大小的虚假RuntimeWarning
PR #4891: 暂时跳过 xfail 测试。Py3.8 CFG 重构似乎已经改变了测试用例。
PR #4892: 正则表达式需要接受“argument”的单数形式
PR #4901: 修复类型化列表的相等性
PR #4909: 修复一些拼写错误
PR #4911: 修复 np.interp 对 float32 处理的错误
PR #4920: 修复在禁用JIT时创建列表的问题
PR #4921: 修复在禁用JIT时创建字典的问题
PR #4935: 更好地处理同一变量上的多个缩减的 prange。
PR #4946: 改进 raise <string> 的错误信息。
PR #4955: 移动 literal_unroll 的重载以避免破坏 Python 2.7 的循环依赖
PR #4962: 修复Windows上的测试错误
PR #4973: 修复了 literal_unroll 中重标记逻辑的一个错误。
PR #4978: 修复带有星号参数的重载方法问题
PR #4981: 添加 ind_to_const 以减少等价类数量。
PR #4991: 继续 #4588 (让死代码移除在 prange 转换为 parfor 后处理移除更多不需要的代码)
PR #4994: 移除已修复底层问题的测试的 xfail。
PR #5018: 修复 #5011。
PR #5019: 由于distutils问题,在Python 3.8 + macOS上跳过pycc测试
CUDA 增强/修复:
PR #4629: 使 numba.dummyarray.Array 可迭代
PR #4675: 将 cuda 数组接口升级到版本 2
PR #4741: 更新为 Windows 选择 “CUDA_PATH”
PR #4838: 允许在CUDA目标中对连续设备数组使用ravel(‘A’)
PR #4931: 为 CC 7.0 / 7.5 添加自动调谐的物理限制
PR #4934: 修复 TestCudaWarpOperations 中的失败
PR #4938: 改进cuda vectorize装饰器的错误/警告
文档更新:
PR #4418: 有向图任务路线图
PR #4578: 澄清 numba ufunc 支持的功能
PR #4655: 修复 sphinx 构建警告
PR #4667: 修复urem实现中的拼写错误
PR #4669: 添加 ParallelAccelerator 论文的链接。
PR #4703: 修复 numba.jit 参数名称 signature_or_function
PR #4862: 添加了关于Numba的PyCon India 2019演讲
PR #4947: 使用 numba.typed 记录 jitclass。
PR #4958: 为 try..except 添加文档
PR #4993: 更新 0.47 版本的弃用内容
CI 更新:
PR #4737: 从 Azure Pipelines 中移除 maxParallel
PR #4767: 在osx上为py27固定到2.7.16
PR #4781: WIP/runtest cf pytest
作者:
Aaron Meurer
Ankit Mahato
布莱恩·威格纳
丹尼斯·斯米尔诺夫
Ehsan Totoni (核心开发者)
埃琳娜·托特米娜
埃里克·拉尔森
Ethan Pronovost
乔瓦尼·卡瓦林
格雷厄姆·马克尔
吉尔赫梅·莱奥巴斯
艾萨克·维尔舒普
詹姆斯·伯尔博
Leo Fang
马克·加西亚
Marcelo Duarte Trevisani
马特·库珀
Matti Picus
罗布·恩尼斯
Rujal Desai
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
VDimir
Valentin Haenel (核心开发者)
维亚切斯拉夫·斯米尔诺夫
版本 0.46.0
此版本显著重构了 Numba 的主要部分之一,即编译器管道,以使其更具扩展性和更易于使用。此举旨在继续增强 Numba 作为编译器工具包的能力。同样地,Numba 现在有了一个扩展注册机制,允许其他使用 Numba 的项目自动发现其可由 Numba JIT 编译的函数。此外,还添加了许多其他相关的编译器工具包增强功能,以及一些更多的 NumPy 特性和大量的错误修复。
此版本已将 CUDA Array Interface 规范更新至第 2 版,该版本明确了 C 连续数组的 strides 属性,并规定了零大小数组的处理方式。Numba 中的实现已更改,可能会影响依赖旧行为的下游包(参见问题 #4661)。
来自用户贡献的PR的增强功能(感谢!):
Aaron Meurer 在 #4345 和 #4341 中修复了代码库中的一些 Python 问题。
Ashwin Srinath 通过 #4576 修复了一个 CUDA 性能问题。
Ethan Pronovost 在 #4601 中增加了对三角形索引函数(NumPy 函数
tril_indices
、tril_indices_from
、triu_indices
和triu_indices_from
)的支持。Gerald Dalley 修复了 Python 2 中发生的竞争条件。
Gregory R. Lee 修复了已弃用的
inspect.getargspec
的使用。Guilherme Leobas 贡献了五个 PR,在 #4518 和 #4386 中增加了对
np.append
和np.count_nonzero
的支持。在 #4510 中,类型化的 List 被修复以接受无符号整数。#4463 修复了 NamedTuple 内部的一个问题,而 #4397 更新了np.sum
的文档。James Bourbeau 在 #4331 中添加了一个新功能,允许自动将 jit 装饰器应用于整个模块。此外,在 #4447 和 #4433 中对文档和代码库进行了一些小修复,并在 #4228 中修复了就地数组操作。
Jim Crist 修复了 #4464 中补丁错误渲染的一个错误。
Leo Fang 在 #4609 中更新了 CUDA 数组接口合约。
Pearu Peterson 在 #4425 中增加了对基于 Unicode 的 NumPy 数组的支持。
Peter Andreas Entschev 修复了 #4581 中的 CUDA 并发错误。
Lucio Fernandez-Arjona 扩展了 Numba 的
np.sum
支持,现在可以在 #4472 中接受dtype
关键字参数。Pedro A. Morales Maries 在 #4128 中增加了对
np.cross
的支持,并在 #4595 中添加了必要的扩展numba.numpy_extensions.cross2d
。David Hoese、Eric Firing、Joshua Adelman 和 Juan Nunez-Iglesias 分别在 #4565、#4482、#4455、#4375 中修复了文档问题。
Vyacheslav Smirnov 和 Rujal Desai 在 #4606 中启用了对 unicode 字符串的
count()
支持。
通用增强功能:
PR #4113: 为语义常量添加重写。
PR #4128: 添加 np.cross 支持
PR #4162: 使IR可比较并使其合法化。
PR #4208: 研发内联、即时编译和重载。
PR #4331: 调用函数的自动JIT
PR #4353: 检查工具以确认numba支持的功能
PR #4386: 实现 np.count_nonzero
PR #4425: Unicode 数组支持
PR #4427: numba 扩展的入口点
PR #4467: 文字分派
PR #4472: 允许在 np.sum 中使用 dtype 输入参数
PR #4513: 新编译器。
PR #4518: 添加对 np.append 的支持
PR #4554: 重构 NRT C-API
PR #4556: 0.46 计划弃用的功能
PR #4567: 添加环境变量以禁用性能警告。
PR #4568: 添加 np.array_equal 支持
PR #4595: 实现 numba.cross2d
PR #4601: 添加三角索引函数
PR #4606: 启用对 unicode 字符串的 count() 方法的支持
修复:
PR #4228: 修复数组的就地操作符错误
PR #4282: 检测并抛出对生成器表达式的不支持
PR #4305: 不允许将写入容器的可变对象的分配提升。
PR #4311: 避免使用已弃用的 inspect.getargspec
PR #4328: 将 GC 宏替换为函数调用
PR #4330: 放宽类型化容器转换检查
PR #4341: 修复某些文件顶部的部分编码行(utf8 -> utf-8)
PR #4345: 在 numba/types 中用显式导入替换 “import *”
PR #4346: 修复 ascii 字符串中 isupper 的错误算法。
PR #4349: 在 typed-list 中使用 jitclass 进行测试
PR #4361: 在诊断L4的LICM部分添加分配提升信息
PR #4366: 将搜索框偏移以避免在某些使用Safari的页面上换行。修复了 #4365。
PR #4372: 将所有 “except BaseException” 替换为 “except Exception”。
PR #4407: 恢复用于支持 NumPy 1.10 的“free” conda 频道。
PR #4408: 添加对常量字节的降低处理。
PR #4409: 添加异常链以提供更好的错误上下文
PR #4411: 类型名称不应包含面向用户的调试描述。
PR #4412: 修复 #4387。限制递归函数的返回类型数量
PR #4426: 修复了py2中的两个模块拆卸竞争问题。
PR #4431: 修复并测试 numpy.random.random_sample(n) 以适应 np117
PR #4463: NamedTuple - 在非可迭代元素上引发错误
PR #4464: 在补丁错误中添加一个换行符
PR #4474: 修复 parfors(及其他 IR 扩展)的移除死代码的活性问题
PR #4510: 使 List.__getitem__ 接受无符号参数
PR #4512: 在类型检查时,对大于1维数组的迭代抛出特定错误。
PR #4532: 修复使用 Literal 类型作为索引的 static_getitem
PR #4547: 更新内联成本模型信息。
PR #4557: 生成任意测试数据时使用特定的随机数种子
PR #4559: 调整测试超时时间
PR #4564: 在 ppc64le 上跳过触发 LLVM 错误的 unicode 数组测试
PR #4621: 修复由于缺少 numba/cext 导致的打包问题
PR #4623: 修复由于存储模型不匹配导致的 #4520 问题
PR #4644: 更新 llvmlite 0.30.0
CUDA 增强/修复:
PR #4410: 修复 #4111。cudasim 错误处理 recarray
PR #4576: 将 np.prod 替换为 functools.reduce 以从形状计算大小
PR #4581: 防止在 ForAll 中获取 GIL
PR #4592: 修复 #4589。 对于常量动态共享内存,只需传递 NULL 给 b2d_func。
PR #4609: 更新 CUDA 数组接口 & 强制 Numba 合规性
PR #4619: 为CUDA目标实现 math.{degrees, radians}。
PR #4675: 将 cuda 数组接口升级到版本 2
文档更新:
PR #4317: 为 ARMv8/AArch64 添加文档
PR #4318: 在文档中添加支持的平台。关闭 #4316
PR #4375: 为检查方法添加文档字符串
PR #4388: 更新 Python 2.7 EOL 声明
PR #4397: 添加关于 np.sum 的说明
PR #4447: 小幅并行性能提示编辑
PR #4455: 澄清关于数组的类型字典文档
PR #4482: 修复 guvectorize 文档字符串中的示例。
PR #4541: 修复 architecture.rst 中的两个拼写错误
PR #4548: 文档化 numba.extending.intrinsic 和内联。
PR #4565: 修正 jit-compilation 文档中的拼写错误
PR #4607: 在文档中添加依赖列表
PR #4614: 添加实现新编译器传递的文档。
CI 更新:
PR #4415: 在Linux上进行32位增量构建时不使用空闲通道
PR #4433: 移除过时的azure评论
PR #4493: 修复 CUDA 内在函数相关的重载内联器
PR #4593: 启用 Azure CI 批处理
贡献者:
Aaron Meurer
阿什温·斯里纳特
大卫·霍斯
Ehsan Totoni (核心开发者)
埃里克·法林
Ethan Pronovost
杰拉尔德·达利
格雷戈里·R·李
吉尔赫梅·莱奥巴斯
詹姆斯·伯尔博
吉姆·克里斯
约书亚·阿德尔曼
Juan Nunez-Iglesias
Leo Fang
Lucio Fernandez-Arjona
Pearu Peterson
佩德罗·A·莫拉莱斯·玛丽
彼得·安德烈亚斯·恩切夫
Rujal Desai
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
维亚切斯拉夫·斯米尔诺夫
版本 0.45.1
此补丁版本解决了在 0.45.0 版本中报告的一些回归问题,并增加了对 NumPy 1.17 的支持:
PR #4325: 接受标量/0维数组
PR #4338: 修复 #4299。Parfors 归约变量未被删除。
PR #4350: 仅在 fork() 时使用进程级锁。
PR #4354: 尝试修复 #4352。
PR #4357: 修复 np1.17 的 isnan、isinf、isfinite ufuncs
PR #4363: 修复 np.interp 在 np1.17 中对 nan 的处理
PR #4371: 修复 nump1.17 随机函数非别名问题
贡献者:
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
Valentin Haenel (核心开发者)
版本 0.45.0
在此版本中,Numba 增加了一个实验性的 numba.typed.List 容器,作为 reflected list 的未来替代品。此外,使用 parallel=True
装饰的函数现在可以被缓存,以减少与自动并行化相关的编译开销。
来自用户贡献的PR的增强功能(感谢!):
James Bourbeau 在 #4227 中为可报告的错误消息添加了 Numba 版本,在 #4200 中为
inspect_types
添加了signature
参数,在 #4205 中改进了normalize_signature
的文档字符串,并通过在 #4254 中为register_dispatcher
添加引用计数修复了 #3658。Guilherme Leobas 分别在 #4216 和 #4149 中实现了支配树和支配前沿算法。
Nick White 在 #4137 中修复了 CUDA 目标中
round
的问题。Joshua Adelman 在 #4129 中增加了对判断一个值是否在 range 内的支持(即
x in range(...)
),并在 #4076 中增加了来自 NumPy 的窗口函数(np.bartlett
,np.hamming
,np.blackman
,np.hanning
,np.kaiser
)。Lucio Fernandez-Arjona 在 #4077 中增加了对
np.select
的支持Rob Ennis 在 #4157 中添加了对
np.flatnonzero
的支持Keith Kraus 在 #4199 中扩展了
__cuda_array_interface__
,添加了一个可选的掩码属性。Gregory R. Lee 在 #4311 中替换了已弃用的
inspect.getargspec
用法。
通用增强功能:
PR #4328: 用函数调用替换 GC 宏
PR #4311: 避免使用已弃用的 inspect.getargspec
PR #4296: 放宽 ppc64le 上窗口函数测试的容差
PR #4254: 为 register_dispatcher 添加引用计数
PR #4239: 在数组分析中支持多维数组的 len() 函数
PR #4234: 为 np.kron 数组顺序引发信息性错误
PR #4232: 添加 unicodetype 数据库、底层字符串函数及示例。
PR #4229: 使哈希可缓存
PR #4227: 在可报告的错误信息中包含 numba 版本
PR #4216: 添加支配树
PR #4200: 为 inspect_types 添加签名参数
PR #4196: 捕获内部函数导入缺失的情况。
PR #4180: 更新不可小写的全局消息的使用。
PR #4166: 为 PR #4149 添加测试
PR #4157: 支持 np.flatnonzero
PR #4149: 为 Numba IR 实现 SSA 的支配边界
PR #4148: 在内联闭包调用中调用分支剪枝
PR #4132: 减少 inttoptr 的使用
PR #4129: 支持范围的包含
PR #4112: 为 np.transpose 和元组提供更好的错误信息
PR #4110: 添加范围属性, 开始, 停止, 步长
PR #4077: 添加 np select
PR #4076: 添加 numpy 窗口函数支持 (np.bartlett, np.hamming, np.blackman, np.hanning, np.kaiser)
PR #4095: 在 find_const() 中支持 ir.Global/FreeVar
PR #3691: 使 TypingError 更早中止编译
PR #3646: 记录类型推断中遇到的内部错误
修复:
PR #4303: 解决 scipy 错误 10206
PR #4302: 修复主分支上的flake8问题
PR #4301: 修复 np.select 实现中的整数字面量错误
PR #4291: 修复 jitclass 类型的序列化问题
PR #4262: 解决 #4251 - 修复重塑分析中的错误。
PR #4233: 修复了 #4215 揭示的问题
PR #4224: 修复 #4223。由于 objectmode 中的 StaticSetItem 导致的循环提升错误
PR #4222: 修复错误的Python路径。
PR #4178: 修复一元运算符重载,与unicode实现进行检查
PR #4173: 修复带有权重的 np.bincount 中的返回类型
PR #4153: 修复数组分析中的切片形状分配
PR #4152: 修复字典查找中的状态检查
PR #4145: 使用可调用对象而不是检查 __module__
PR #4118: 修复CPU上的内联汇编支持。
PR #4088: 解决 #4075 - parfors array_analysis 错误。
PR #4085: 解决 #3314 - parfors array_analysis 在 reshape 时的错误。
CUDA 增强/修复:
PR #4199: 扩展 __cuda_array_interface__ 以包含可选的掩码属性,版本提升至 1
PR #4137: CUDA - 修复 round 内置函数
PR #4114: 支持第三方激活的CUDA上下文
文档更新:
PR #4317: 为 ARMv8/AArch64 添加文档
PR #4318: 在文档中添加支持的平台。关闭 #4316
PR #4295: 修改弃用时间表
PR #4253: 修复 pysupported 文档中的拼写错误
PR #4252: 修复 repomap 上的拼写错误
PR #4241: 移除未使用的导入
PR #4240: 修复 jitclass 文档中的拼写错误
PR #4205: 在 normalize_signature 文档字符串中更新返回值顺序
PR #4237: 更新文档链接以指向最新文档而非开发文档。
PR #4197: 超链接 repomap
PR #4170: 澄清在 prange 中向数组累积的文档
PR #4147: 修复 DictType 可迭代对象的文档字符串
PR #3951: 重载指南
CI 更新:
PR #4300: AArch64 没有 faulthandler 包
PR #4273: 为测试固定到 MKL BLAS 以获得一致的结果
PR #4209: 恢复之前的网络容差补丁,并尝试使用conda配置
PR #4138: 仅在Python 3上进行Azure测试之前移除tbb,因为Python 2上已经移除了它
贡献者:
Ehsan Totoni (核心开发者)
格雷戈里·R·李
吉尔赫梅·莱奥巴斯
詹姆斯·伯尔博
约书亚·L·阿德尔曼
基思·克劳斯
Lucio Fernandez-Arjona
尼克·怀特
罗布·恩尼斯
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
版本 0.44.1
此补丁版本解决了在 0.44.0 版本中报告的一些回归问题:
PR #4165: 修复 NUMBAPRO_NVVM 的 #4164 问题。
PR #4172: 如果参数名称被重新定义,则放弃分支修剪。(修复 #4163)
PR #4183: 修复 #4156。定义循环内变量的问题。
版本 0.44.0
重要提示:在此版本中,进行了一些重要的弃用(以及一些不太重要的弃用),建议用户阅读相关文档。
此版本中的通用增强功能包括:
Numba 在所有平台上都由 LLVM 8 支持,除了 ppc64le,由于 bug,它仍然停留在 LLVM 7.x 系列。
Numba 的字典支持现在包括了对键和值的类型推断。
现在,.view() 方法适用于 NumPy 标量类型。
新增支持的 NumPy 函数:np.delete, np.nanquantile, np.quantile, np.repeat, np.shape。
此外,已经投入了大量精力来修复一些长期存在的错误和大量其他错误,“修复”部分这次非常大!
来自用户贡献的PR的增强功能(感谢!):
Max Bolingbroke 在 #3847 中增加了对选择性使用
fastmath
标志的支持。Rob Ennis 在 #3820 中使 min() 和 max() 在可迭代对象上工作,并在 #3899 中添加了 np.quantile 和 np.nanquantile。
Sergey Shalnov 添加了许多与 Unicode 字符串相关的功能,包括 #3978 中的 zfill,#4001 中的 ljust,#4044 中的 rjust 和 center,以及 #4048 中的 strip、lstrip 和 rstrip。
Guilherme Leobas 在 #3890 中增加了对 np.delete 的支持
Christoph Deil 在 #4066 中通过
python -m numba
公开了 Numba CLI,并进行了大量的文档修复。Leo Schwarz 在 #3852 中为 jitclass 默认构造函数参数编写了大部分代码。
Nick White 增强了 CUDA 后端,在 #4054 中尽可能使用 min/max PTX 指令。
Lucio Fernandez-Arjona 在 #3952 中实现了 unicode 字符串
__mul__
函数。Dimitri Vorona 编写了 #3861 中实现 jitclass 的 getitem 和 setitem 的大部分代码。
通用增强功能:
PR #3820: 可迭代对象的最小值和最大值
PR #3842: Unicode 类型迭代
PR #3847: 允许对 fastmath 标志进行细粒度控制,以部分解决 #2923
PR #3852: PR #2894 的延续
PR #3861: 继续 PR #3730
PR #3890: 添加对 np.delete 的支持
PR #3899: 支持 np.quantile 和 np.nanquantile
PR #3900: 修复 3457 :: 实现 np.repeat
PR #3928: 为 NumPy 标量添加 .view() 方法
PR #3939: 更新 icc_rt 克隆配方。
PR #3952: 字符串的 __mul__ 方法,初始实现和测试
PR #3956: 类型推断的字典
PR #3959: 创建一个字符串切片视图以避免额外分配
PR #3978: zfill 操作的实现
PR #4001: ljust 操作的实现
PR #4010: 支持 dict() 和 {}
PR #4022: 支持 llvm 8
PR #4034: 使 type.Optional str 更具代表性
PR #4041: 弃用警告
PR #4044: rjust 和 center 操作的实现
PR #4048: strip、lstrip 和 rstrip 操作的实现
PR #4066: 通过 python -m numba 暴露 numba CLI
PR #4081: 实现 np.shape 并支持 asarray 函数。
PR #4091: 弃用不带 RefType 的 iternext_impl 使用
CUDA 增强/修复:
PR #3933: 为 CUDA 设备数组对象添加了 .nbytes 属性。
PR #4011: 为 cuda 设备函数添加 .inspect_ptx() 方法
PR #4054: CUDA: 使用 min/max PTX 指令
PR #4096: 更新 CUDA 库查找的环境变量
文档更新:
PR #3867: 代码仓库地图
PR #3918: 添加Joris的Fosdem 2019演讲
PR #3926: 按日期排列Numba应用的演讲
PR #3943: 修复向量化文档中的两个小拼写错误
PR #3944: 修正 jitclass 文档
PR #3990: 在FAQ中提及预印本仓库。修复 #3981
PR #4012: 修正 contributing.rst 中的 runtests 命令
PR #4043: 修正拼写错误
PR #4047: 修复 guvectorize 的模糊文档
PR #4060: 移除文档中剩余的 autojit 提及
PR #4063: 修复文档字符串中的注释示例
PR #4065: 添加FAQ条目解释Numba项目名称
PR #4079: 为 typed.Dict 的原子性添加文档
PR #4105: 移除关于CUDA ENVVAR潜在替换的信息
修复:
PR #3719: 解决 #3528 问题。在不使用 parallel=True 时增加对切片的支持。
PR #3727: 移除已知死变量的删除操作。
PR #3845: 修复 .astype 中的可变标志传输
PR #3853: 修复C源代码中的一些小问题。
PR #3862: 修正数据的布尔重解释
PR #3863: 注释掉了 appveyor 徽章
PR #3869: 合并后修复了flake8
PR #3871: 在 ir.py 中添加断言以帮助强制正确的结构
PR #3881: 修复 datetime64 的 dtype 转换准备
PR #3884: 防止 objmode 回退 IR 的突变。
PR #3885: 更新 llvmlite 0.29
PR #3886: 使用 safe_load 从 pyyaml。
PR #3887: 通过允许conda重试来增加对网络错误的容忍度
PR #3893: 修复 namedtuple 构造函数中的类型转换。
PR #3894: 修复多重数组定义的数组内联器。
PR #3905: 将 #3903 合并到主分支
PR #3920: 如果发现不支持的跳转操作码,则引发更好的错误。
PR #3927: 对与numpy相关的文件应用flake8
PR #3935: 静默 DeprecationWarning
PR #3938: 为未知操作码提供更好的错误信息
PR #3941: 修复 parfor 转换中 ufuncs 的类型
PR #3946: 从 inline_closurecall 返回变量重命名字典
PR #3962: 修复 Record.make_c_struct 对齐计算中的错误
PR #3967: 修复pickling unicode时的错误
PR #3964: Unicode 分割算法版本控制
PR #3975: 为 numba -s 添加未知区域设置的处理程序
PR #3991: 允许在ufunc机制中使用可选参数
PR #3995: 移除类型推断中的断言,以改善错误信息。
PR #3996: 为 UnicodeType 添加 is_ascii 标志
PR #4009: 防止在 np.linalg.cond 中出现零除错误
PR #4014: 解决 #4007。
PR #4021: 为无效的全局写入添加更具体的错误消息。
PR #4023: 修复记录数据类型中标题的处理
PR #4024: 在声明对象被多次定义之前,先检查调用是否为常量。
PR #4027: 修复问题 #4020。 在编译时关闭 no_cpython_wrapper 标志…
PR #4033: [WIP] 修复反射列表内数组的错误数据类型 #4028
PR #4061: 将 IPython 缓存目录名称更改为 numba_cache
PR #4067: 删除 examples/notebooks/LinearRegr.py
PR #4070: 捕获对全局 typed.Dict 的写入并引发异常。
PR #4078: 检查元组长度
PR #4084: 修复可选返回 None 时缺少 incref 的问题
PR #4089: 使警告修复器在类型比较时刷新工作。
PR #4094: 修复注释def的函数定义查找逻辑
PR #4100: 修复32位上的对齐检查。
PR #4104: 使用符合 PEP 508 的 env 标记来安装依赖项
贡献者:
本杰明·扎伊特伦
克里斯托夫·戴尔
大卫·赫希菲尔德
迪米特里·沃罗纳
Ehsan Totoni (核心开发者)
吉尔赫梅·莱奥巴斯
Leo Schwarz
Lucio Fernandez-Arjona
马克斯·博林布罗克
南都特吉
尼克·怀特
拉维·特贾·古塔
罗布·恩尼斯
谢尔盖·沙尔诺夫
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Valentin Haenel (核心开发者)
版本 0.43.1
这是一个修复错误的发布版本,提供了一些小的改动来修复:分支修剪中的错误,np.interp 功能中的错误,并且完全适配 NumPy 1.16 发布系列。
PR #3826: 支持 NumPy 1.16
PR #3850: 重构 np.interp
PR #3883: 将修剪的条件重写为其评估的常量。
贡献者:
罗布·恩尼斯
Siu Kwan Lam (核心开发者)
Stuart Archibald (核心开发者)
版本 0.43.0
在此版本中,主要的新功能包括:
对静态类型字典的初始支持
改进 hash() 以匹配 Python 3 的行为
对 heapq 模块的支持
能够将 C 结构体传递给 Numba
更多 NumPy 函数:asarray, trapz, roll, ptp, extract
注意:
绝大多数的 NumPy 1.16 行为都得到了支持,然而涉及 NaT
的 datetime
和 timedelta
使用与早期版本的行为相匹配。ufunc 套件尚未扩展以适应 NumPy 1.16 中存在的两个与时间计算相关的新增功能。此外,函数 ediff1d
和 interp
在某些输入模式中出现 NaN
时,复制输出时存在已知的小问题。
通用增强功能:
PR #3563: 支持 np.roll
PR #3572: 支持 np.ptp
PR #3592: 在类型推断之前添加死分支剪枝。
PR #3598: 实现 np.asarray()
PR #3604: 支持 np.interp
PR #3607: 降低过程中的一些简化
PR #3612: 调度器中的精确匹配标志
PR #3627: 支持 np.trapz
PR #3630: 带有广播的 np.where
PR #3633: 支持 np.extract
PR #3657: np.max, np.min, np.nanmax, np.nanmin - 支持复数数据类型
PR #3661: 以 Numpy 结构化数组的形式访问 C 结构
PR #3678: 支持 str.split 和 str.join
PR #3684: 支持C结构体中的C数组
PR #3696: 添加内在函数以帮助调试引用计数
PR #3703: 类型哈希的实现。
PR #3715: 为 numba 内部使用移植 CPython3.7 字典
PR #3716: 支持字符串的就地连接
PR #3718: 为 ConstantInferenceError 异常添加位置信息。
PR #3720: 改进关于无效签名的错误信息
PR #3731: 对 heapq 的支持
PR #3754: 更新 llvmlite 0.28
PR #3760: 可重载的运算符.setitem
PR #3775: 支持重载运算符.delitem
PR #3777: 实现字典的编译器支持
PR #3791: 实现 numba 字典的解释器端接口
PR #3799: 在 numba 字典中支持 refcount’ed 类型
CUDA 增强/修复:
PR #3713: 修复当CC过低时的NvvmSupportError消息
PR #3722: 修复 #3705: 负步长导致的切片错误
PR #3755: 使 cuda.to_device 接受只读主机数组
PR #3773: 调整库搜索以适应多个位置
文档更新:
PR #3651: 修复文档中指向 berryconda 的链接
PR #3668: 添加 Azure Pipelines 构建徽章
PR #3749: DOC: 澄清 prange 与 range 的不同之处
PR #3771: 修复一些拼写错误
PR #3785: 澄清仅将 range 用作函数的情况。
PR #3829: 为 typed-dict 添加文档
修复:
PR #3614: 解决 #3586
PR #3618: 在ARM上跳过gdb测试。
PR #3643: 移除 support_literals 的使用
PR #3645: 强制并修复 AbstractTemplate.generic 必须返回一个 Signature
PR #3648: 在 @overload 签名不匹配时失败。
PR #3660: 在测试 numba.tests.test_lists.TestLists.test_mul_error 时添加了忽略消息
PR #3662: 用 numba.six 替换 six
PR #3663: 从 travisci 构建中移除覆盖率计算
PR #3672: 在迭代统一元组时避免内存泄漏
PR #3676: 修复了元组内常量字符串的降低问题
PR #3677: 确保所有引用的编译函数都正确链接
PR #3692: 修复由于对浮点值的测试过于严格导致的测试失败。
PR #3693: 拦截失败的导入以帮助用户。
PR #3694: 修复 enumerate 迭代器中的内存泄漏
PR #3695: 将内在实现的返回值 None 转换为虚拟值
PR #3697: 修复问题 #3687
PR #3701: 修复数组.T分析(修复 #3700)
PR #3704: 重载方法的修复
PR #3706: 不要递归地将调用变量推入嵌套的 parfors 中。解决 #3686。
PR #3710: 如果在循环中将可变变量传递给函数,则设置为不可提升。解决 #3699。
PR #3712: 使用更好的内置机制来解析调用类型,设置 parallel=True。解决 #3671 问题。
PR #3725: 修复无效的空列表删除
PR #3740: 将 uintp 添加为 tuple operator.getitem 的有效类型。
PR #3758: 修复内联中的目标定义更新
PR #3782: 在 yield optional 时引发类型错误。
PR #3792: 修复了将非模块对象用作函数模块的问题。
PR #3800: 修复 np.interp 的错误
PR #3808: 更新宏以包含 VS2014 以修复 py3.5 构建
PR #3809: 为仅调试的C函数添加调试保护。
PR #3816: 修复 array.sum(axis) 1d 输入的返回类型。
PR #3821: 使用 PySys_FormatStdout 替换 PySys_WriteStdout 以确保不会截断。
PR #3830: Getitem 不应返回可选类型
PR #3832: 在 find_file() 中处理单个字符串作为路径
贡献者:
Ehsan Totoni
Gryllos Prokopis
乔纳森·J·赫尔姆斯
凯拉·恩根
lalitparate
luk-f-a
Matyt
马克斯·博林布罗克
迈克尔·塞弗特
罗布·恩尼斯
林思宽
Stan Seibert
斯图尔特·阿奇博尔德
Todd A. Anderson
Tao He
瓦伦丁·哈内尔
版本 0.42.1
错误修复版本,修复了OSX wheel包中错误的哈希值。源代码无更改。
版本 0.42.0
在此版本中,主要功能包括:
从 jitted 函数内部启动并附加 GDB 调试器的能力。
将 LLVM 升级到 7.0.0 版本。
我们在开发者手册中添加了项目路线图的草稿。该路线图仅供参考,因为优先级和资源可能会发生变化。
以下是来自贡献的PR中的一些改进:
#3532. Daniel Wennberg 改进了
cuda.{pinned, mapped}
API,使得在上下文管理器退出时,相关内存立即释放。#3531. Dimitri Vorona 启用了 jitclass 方法的内联功能。
#3516. Simon Perkins 增加了对传递 numpy dtypes(例如
np.dtype("int32")
)及其类型构造函数(例如np.int32
)到 jitted 函数的支持。#3509. Rob Ennis 增加了对
np.corrcoef
的支持。
与在并行模式下创建空切片相关的回归问题(#3554, #3461)已通过 #3558 解决。
通用增强功能:
PR #3392: 直接从 Numba 启动并附加 gdb。
PR #3437: 为适应 LLVM 7.0.x 所做的更改
PR #3509: 支持 np.corrcoef
PR #3516: dtype 值的类型
PR #3520: 修复 @stencil 在提供 out kwarg 时忽略 cval 的问题。
PR #3531: 修复 jitclass 方法内联并避免不必要的 increfs
PR #3538: 避免由于无效的可见性导致的未来C级断言错误
PR #3543: 避免实现错误被 try-except 隐藏
PR #3544: 添加 long_running 测试标志和排除测试的功能。
PR #3549: ParallelAccelerator 缓存改进
PR #3558: 修复了就地二元运算符的数组分析。
PR #3566: 在 armv7l 上跳过对齐测试。
PR #3567: 修复命名元组中统一字面类型的错误
PR #3576: 为 NumPy 输出数组添加特殊复制例程
PR #3577: 修复 objmode 上下文管理器的示例和文档中的拼写错误。重新排序语句。
PR #3580: 在确定是否安全时使用别名信息
PR #3583: 使用 ir.unknown_loc 表示未知的 Loc,如 #3390 带有测试
PR #3587: 修复 llvm7 中 llvm.memset 使用方式的变更
PR #3596: 修复全局命名元组的数组分析
PR #3597: 如果线程后端初始化不安全,警告用户。
PR #3605: 为从ufunc调用写入只读数组添加保护
PR #3606: 提高未定义类型错误消息措辞的准确性。
PR #3611: gdb 测试守卫需要确认 ptrace 权限
PR #3616: 在ARM上跳过gdb测试。
CUDA 增强:
PR #3532: 一次性注销临时固定的主机数组
PR #3552: 在主机到设备的传输中正确处理广播数组。
PR #3578: 对齐 cuda 和 cuda 模拟器的 kwarg 名称。
文档更新:
PR #3545: 修复5分钟指南中的@njit描述
PR #3570: 对numba.cuda的小型文档修复
PR #3581: 修复 reference/types.rst 中的小拼写错误
PR #3594: 修改 @stencil 文档以正确反映 func_or_mode 参数
PR #3617: 截至2018年12月的草案路线图
贡献者:
亚伦·克里奇利
丹尼尔·温伯格
迪米特里·沃罗纳
Dominik Stańczak
Ehsan Totoni (核心开发者)
Iskander Sharipov
罗布·恩尼斯
西蒙·穆勒
西蒙·珀金斯
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
版本 0.41.0
此版本添加了以下主要功能:
显示由 ParallelAccelerator 完成的优化诊断
支持在 Intel VTune 中分析 Numba 编译的函数
额外的 NumPy 函数:partition, nancumsum, nancumprod, ediff1d, cov, conj, conjugate, tri, tril, triu
对Python 3 Unicode字符串的初步支持
通用增强功能:
PR #1968: armv7 支持
PR #2983: 反转 binop 运算符与运算符模块之间的映射 #2297
PR #3160: 并行诊断的首次尝试
PR #3307: 添加 NUMBA_ENABLE_PROFILING 环境变量,启用 jit 事件
PR #3320: 支持 np.partition
PR #3324: 支持 np.nancumsum 和 np.nancumprod
PR #3325: 在异常中添加位置信息。
PR #3337: 支持 np.ediff1d
PR #3345: 支持 np.cov
PR #3348: 支持用户管道类在提升中使用
PR #3363: 字符串支持
PR #3373: 改进空的不精确列表的错误信息。
PR #3375: 启用 overload(operator.getitem)
PR #3402: 支持元组中的负索引。
PR #3414: 重构 Const 类型
PR #3416: 优化了循环外的 alloca 使用
PR #3424: 更新 llvmlite 0.26
PR #3462: 添加对 np.conj/np.conjugate 的支持。
PR #3480: np.tri, np.tril, np.triu - 默认可选参数
PR #3481: 允许在 np.eye 中仅使用 dtype 参数作为关键字参数
CUDA 增强:
PR #3399: 为 cuda.jit 添加 max_registers 选项
持续集成 / 测试:
PR #3303: 使用 Azure Pipelines 的 CI
PR #3309: 解决apt的竞争条件问题
PR #3371: 修复 Azure Pipelines 的问题
PR #3362: 修复 #3360: RuntimeWarning: ‘numba.runtests’ 在 sys.modules 中找到
PR #3374: 在 wheel 构建中禁用 openmp
PR #3404: Azure Pipelines 模板
PR #3419: 修复cuda测试和测试发现中的错误报告
PR #3491: 防止在 armv7l 上安装 faulthandler
PR #3493: 修复了使用已修复的负索引行为的CUDA测试。
PR #3495: 开始对 Numba 源代码进行 Flake8 检查
修复:
PR #2950: 修复调度器以仅考虑连续性。
PR #3124: 修复 #3119,在归约中对0维数组抛出异常
PR #3228: 减少冗余模块链接
PR #3329: 修复Windows上的AOT问题。
PR #3335: 修复 __cuda_array_interface__ 视图的内存管理。
PR #3340: 修复错误名称中的拼写错误。
PR #3365: 修复默认的解包逻辑
PR #3367: 允许非全局引用 objmode() 上下文管理器
PR #3381: 修复在动态创建的函数中objmode的全局引用
PR #3382: 使用多个常量数组时的 CUDA_ERROR_MISALIGNED_ADDRESS 问题
PR #3384: 正确处理非常旧版本的 colorama
PR #3394: 为非32位安装添加32位包保护
PR #3397: 修复 with-objmode 警告
PR #3403 修复了在parfor传递后调用内联中的标签偏移
PR #3429: 修复了执行 exec(<字符串>) 时用户定义异常的引发。
PR #3432: 修复由于在py2.7中CI中的函数命名导致的错误
PR #3444: 修复了TBB的单线程执行问题,并为#3440添加了测试
PR #3449: 允许在 find_callname() 中匹配非数组对象
PR #3455: 更改 getiter 和 iternext 使其不再为纯函数。解决 #3425
PR #3467: 使 ir.UndefinedType 成为单例类。
PR #3478: 修复 np.random.shuffle 副作用
PR #3487: 对传递给 print() 的 kwargs 不支持
PR #3488: 移除无效脚本。
PR #3498: 修复布尔类型作为返回类型的模板支持
PR #3511: 修复处理 make_function 字面量的问题(#3414 的回归)
PR #3514: 添加缺失的 unicode != unicode
PR #3527: 修复复杂数学平方根实现,适用于大负值
PR #3530: 这为提供给 Parfors 的模式添加了一个参数检查。
PR #3536: 将列表析构函数的链接设置为 linkonce_odr 以修复AOT中的可见性
文档更新:
PR #3316: 更新 0.40 变更日志以包含更多 PR
PR #3318: 调整间距以避免搜索框换行到第二行
PR #3321: 在文档中添加关于异常导致的内存泄漏的说明。修复 #3263
PR #3322: 添加关于 CUDA + fork 问题的常见问题解答。修复 #3315。
PR #3343: 更新 argsort 的文档,部分支持 kind 关键字参数。
PR #3357: 在 5minguide.rst 中添加了对 njit 的提及。
PR #3434: 修复文档中的并行归约示例。
PR #3452: 修复断开的链接和标记问题。
PR #3484: 在文档中以em单位调整Numba标志的大小。修复了 #3313
PR #3502: 仅两个拼写错误
PR #3506: 文档字符串支持
PR #3513: 并行诊断的文档。
PR #3526: 修复与 @njit 声明相关的 5 分钟指南
贡献者:
亚历克斯·福特
安德烈亚斯·索德尔
安东·马拉霍夫
丹尼尔·斯坦德
Ehsan Totoni (核心开发者)
亨利·施赖纳
Marcel Bargull
马特·库珀
尼克·怀特
尼古拉斯·胡格
rjenc29
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
版本 0.40.1
这是一个仅针对 PyPI 的补丁版本,以确保 PyPI 轮子可以启用 TBB 线程后端,并在轮子中禁用 OpenMP 后端。manylinux1 的限制和用户环境的差异可能会导致在启用 OpenMP 的轮子构建中发生段错误。请注意,对于通过 conda 获取 Numba 0.40.0 的用户,此版本没有功能上的变化。
补丁:
PR #3338: 不小心将 Anton 从 0.40.0 的贡献者名单中遗漏了
PR #3374: 在wheel构建中禁用OpenMP
PR #3376: 更新 0.40.1 变更日志和 OpenMP 后端文档
版本 0.40.0
此版本增加了许多主要功能:
一个新的 GPU 后端:现在可以使用 Linux 上的 ROCm 驱动编译适用于 AMD GPU 的内核。
Numba 用于自动多线程的线程池实现是可配置的,可以使用 TBB、OpenMP 或旧的“workqueue”实现。(TBB 可能会在未来的版本中成为首选默认设置。)
关于Numba中线程和分叉安全性的新文档,以及线程安全性方面的整体改进。
实验性支持在 nopython 模式函数中以对象模式执行代码块。
并行循环现在允许数组作为归约变量
CUDA 改进:FMA、在支持的硬件上更快的 float64 原子操作、常量内存中的记录,以及改进的 datatime 数据类型支持
更多 NumPy 函数:vander, tri, triu, tril, fill_diagonal
通用增强功能:
PR #3017: 添加支持 with-contexts 的功能
PR #3033: 添加对多维CFFI数组的支持
PR #3122: 在对象模式管道中添加内联器
PR #3127: 支持数组上的归约操作。
PR #3145: 支持 np.fill_diagonal
PR #3151: 保持一个最近N个反序列化函数的引用队列。修复 #3026
PR #3154: 如果可类型化,支持使用 list()。
PR #3166: Objmode with-块
PR #3179: 更新 llvmlite 0.25
PR #3181: 支持别名分析中的函数扩展
PR #3189: 支持对象方法类型中的字面常量
PR #3190: 支持在类型注解中传递闭包作为字面量值
PR #3199: 支持在简单的一元表达式中推断模板索引为常量
PR #3202: 线程层后端重构/重写/重造!
PR #3209: 支持 np.tri, np.tril 和 np.triu
PR #3211: 处理在构建元组中的解包(BUILD_TUPLE_UNPACK 操作码)
PR #3212: 支持 np.vander
PR #3227: 添加 NumPy 1.15 支持
PR #3272: 在 runtime._nrt_python.c_helpers 中添加 MemInfo_data
PR #3273: 重构。移除基于线程本地存储的上下文嵌套。
PR #3278: 编译器线程安全锁定
PR #3291: 在 numba -s 中添加 CPU 数量和 CFS 限制信息。
CUDA 增强:
PR #3152: 使用 cuda 驱动程序 API 获取最佳块大小以实现最佳占用率
PR #3165: 添加FMA内在函数支持
PR #3172: 使用 float64 添加原子操作,在可用的地方
PR #3186: 支持 CUDA 常量内存中的记录
PR #3191: CUDA: 修复日志大小
PR #3198: 修复 GPU datetime timedelta 类型的使用
PR #3221: 支持将 datetime/timedelta 标量参数传递给 CUDA 内核。
PR #3259: 添加 DeviceNDArray.view 方法以将数据重新解释为不同类型。
PR #3310: 修复分片cuda数组的IPC处理。
ROCm 增强功能:
PR #3023: 支持 AMDGCN/ROCm。
PR #3108: 将ROC信息添加到 numba -s 输出中。
PR #3176: 将 ROC 向量化初始化移动到 npyufunc
PR #3177: 为ROC流添加auto_synchronize支持
PR #3178: 更新ROC目标文档。
PR #3294: 在ROC编译路径中添加编译器锁。
PR #3280: 为HSA代理添加wavebits属性。
PR #3281: 修复 ds_permute 类型并添加测试
持续集成 / 测试:
PR #3091: 移除旧的配方,切换到基于环境变量的测试配置。
PR #3094: 为复数空间中的乘积增加更高的ULP容差。
PR #3096: 在增量脚本中设置错误退出
PR #3109: 如果没有 jinja2,则跳过需要 jinja2 的测试。
PR #3125: 跳过仅cudasim测试
PR #3126: 添加 Slack,移除 Flowdock
PR #3147: 改进在类型检查期间不支持的参数类型的错误信息。
PR #3128: 修复jetson tx2/ARM的recipe/build
PR #3167: 在安装之前在构建脚本中激活环境。
PR #3180: 添加跳过损坏测试的功能。
PR #3216: 修复某些容器设置中的 libcuda.so 加载问题
PR #3224: 切换到新的 Gitter 通知 webhook URL 并加密它
PR #3235: 添加32位Travis CI作业
PR #3257: 这将在Windows conda测试阶段中重新加入scipy/ipython。
修复:
PR #3038: 修复随机整数生成以匹配NumPy的结果。
PR #3045: 修复 #3027 - Numba 重新分配 sys.stdout
PR #3059: 已知 LoweringErrors 的处理程序。
PR #3060: 调整NumPy函数的属性错误。
PR #3067: 在线程块中发生异常时中止模拟器线程。
PR #3079: 实现 +/-(types.boolean) 修复 #2624
PR #3080: 正确计算复数类型的 np.var 和 np.std。
PR #3088: 修复 #3066 (prange 中的 array.dtype.type)
PR #3089: 修复无效的 ParallelAccelerator 提升问题。
PR #3136: 修复 #3135 (降低错误)
PR #3137: 修复问题3103(竞态条件检测)
PR #3142: 修复问题 #3139 (parfors 在 prange 块之间重复使用归约变量)
PR #3148: 移除无效的数组相等 @infer 代码
PR #3153: 修复带有 kw 参数调用的 canonicalize_array_math 类型
PR #3156: 修复了测试中缺少 pygments 的问题,并增加了防护措施。
PR #3168: Py37 字节输出修复。
PR #3171: 修复 #3146。修复 CFUNCTYPE void* 返回类型处理
PR #3193: 修复 setitem/getitem 解析器
PR #3222: 修复 #3214。在 while True 循环中对 POP_BLOCK 的错误处理。
PR #3230: 修复了looplifting中的活跃性分析问题
PR #3233: 修复32位ctypes.c_void_p的返回类型差异
PR #3234: 修复 np.where 的类型和布局。
PR #3237: 修复关于 imp 模块的 DeprecationWarning
PR #3241: 修复 #3225。在索引代码的类型定义中将 0nd 数组规范化为标量。
PR #3256: 修复 #3251: 将 ABCs 的导入移动到 Python >= 3.3 的 collections.abc
PR #3292: 修复问题3279。
PR #3302: 修复由于数据类型不匹配导致的错误
文档更新:
PR #3104: 针对 #3098 的变通方案(test_optional_unpack 海森堡错误)
PR #3132: 添加了一个约5分钟的Numba指南。
PR #3194: 修复关于 np.random 生成器 fork/线程安全的文档
PR #3242: 包含Numba演讲和教程链接的页面
PR #3258: 允许用户选择他们正在报告的问题类型。
PR #3260: 修复了损坏的链接
PR #3266: 修复用户/外部分配指针的cuda指针所有权问题
PR #3269: 使用CSS调整排版
PR #3270: 更新作为参数传递的函数的FAQ
PR #3274: 更新安装说明
PR #3275: 注意 pyobject 和 voidptr 是文档中的类型
PR #3288: 不再需要将并行优化称为“实验性”
PR #3318: 调整间距以避免搜索框换行到第二行
贡献者:
安东·马拉霍夫
亚历克斯·福特
安东尼·比苏尔科
Ehsan Totoni (核心开发者)
伦纳德·劳森
马修·佩特罗夫
尼克·怀特
Ray Donnelly
rjenc29
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
斯图尔特·雷诺兹
Todd A. Anderson (核心开发者)
版本 0.39.0
以下是 Numba 0.39.0 版本的重点内容。
这是支持 Python 3.7 的第一个版本。
在英特尔的帮助下,我们解决了SVML支持的问题(相关问题 #2938, #2998, #3006)。
列表已支持包含引用计数类型,如 NumPy 数组和 list。注意,列表仍然不能容纳异构类型。
我们对内部调用约定进行了重大更改,这应该对大多数用户来说是透明的,以允许未来的一项功能,该功能将允许从 nopython 模式函数跳回到 python 模式。这还修复了一个限制,即 print 在调用栈深处的 nopython 函数中无法使用。
为了支持CUDA GPU,我们按照NumPy数组接口规范添加了`__cuda_array_interface__`,以允许Numba使用外部定义的设备数组。我们已经向CuPy提交了相应的拉取请求,以测试该概念并能够使用CuPy GPU数组。
Numba 调度器 inspect_types() 方法现在支持 pretty 关键字参数,如果设置为 True,将在从 ipython/jupyter-notebook 调用时生成 ANSI/HTML 输出,显示注释的类型。
现在支持 NumPy 函数 ndarray.dot、np.percentile、np.nanpercentile 和 np.unique。
Numba 现在支持使用每个项目的配置文件来永久设置通常通过 NUMBA_* 系列环境变量设置的行为。
已添加对 ppc64le 架构的支持。
增强功能:
PR #2793: 简化并移除 html_annotate 模板中的 JavaScript。
PR #2840: 支持引用计数类型的列表
PR #2902: 支持 np.unique
PR #2926: 为所有架构启用围栏并添加开发者注释
PR #2928: 使关于未类型化列表的错误信息更加详细。
PR #2930: 添加配置文件和配色方案。
PR #2932: 在 check_output 解码中修复编码为 ‘UTF-8’。
PR #2938: Python 3.7 兼容性: _Py_Finalizing 变为 _Py_IsFinalizing()
PR #2939: 全面的 SVML 单元测试
PR #2946: 添加对 ndarray.dot 方法和测试的支持。
PR #2953: 百分位数和非数百分位数
PR #2957: 添加新的 3.7 操作码支持。
PR #2963: 改进别名分析以更加全面
PR #2984: 在数组分析中支持命名元组
PR #2986: 修复环境传播
PR #2990: 改进对内部函数的调用匹配
PR #3002: 第二次重写错误(解释器错误)。
PR #3004: 将 numpy.empty 添加到纯函数列表中。
PR #3008: 通过 llvmlite SVML 补丁检测增强 SVML 检测。
PR #3012: 使用异构/同构的通用拼写。
PR #3032: 修复pycc ctypes测试,由于调用约定不匹配
PR #3039: 在Numba环境诊断工具中添加SVML检测。
PR #3041: 这为使用 BLAS 的测试添加了 @needs_blas
PR #3056: 需要 llvmlite>=0.24.0
CUDA 增强:
PR #2860: __cuda_array_interface__
PR #2910: 更多 CUDA 内在函数
PR #2929: 添加标志以防止不必要的 D->H 复制
PR #3037: 在非对等可访问设备上添加 CUDA IPC 支持
CI 增强:
PR #3021: 更新 appveyor 配置。
PR #3040: 为所有构建添加故障处理程序
PR #3042: 添加 catchsegv
PR #3077: 在测试中为 -m 添加了可选的进程数量
修复:
PR #2897: 修复 numba ir 中删除语句的行位置
PR #2905: 修复 #2862
PR #3009: 修复递归调用中的可选类型返回
PR #3019: 针对问题 #3016 的变通方案和单元测试
PR #3035: [测试] 尝试延迟移除环境
PR #3048: [WIP] 修复构建农场上的cuda测试失败
PR #3054: 使测试在32位系统上工作
PR #3062: 修复在核函数启动前释放 cuda.In 的 devary
PR #3073: 解决 #3072 的变通方法
PR #3076: 避免由于解释器销毁时缺少全局变量导致的忽略异常
文档更新:
PR #2966: 修复环境变量文档中的语法。
PR #2967: 修复CUDA内核布局示例中的拼写错误。
PR #2970: 修复文档字符串复制粘贴错误。
贡献者:
以下人员为此次发布做出了贡献。
安东·马拉霍夫
Ehsan Totoni (核心开发者)
Julia Tatz
马蒂亚斯·布索尼耶
尼克·怀特
Ray Donnelly
林思源 (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
Todd A. Anderson (核心开发者)
Rik-de-Kort
rjenc29
版本 0.38.1
这是一个关键的错误修复版本,解决了以下问题:https://github.com/numba/numba/issues/3006
该错误不会影响使用来自 Anaconda 或 Intel Python 发行版的 conda 包的用户(但它会影响 conda-forge 的用户)。它不会影响使用来自 PyPI 的 wheel 的 pip 用户。
这仅影响一小部分用户,其中:
ICC 运行时(特别是 libsvml)存在于用户的环境中。
用户正在使用一个静态链接了未打SVML支持补丁的LLVM版本的llvmlite。
该平台是64位的。
此版本修复了一个代码生成路径,该路径在上述情况下可能导致生成不正确的结果。
修复:
PR #3007: 通过 llvmlite SVML 补丁检测增强 SVML 检测。
贡献者:
以下人员为此次发布做出了贡献。
Stuart Archibald (核心开发者)
版本 0.38.0
继上次发布专注于修复错误之后,本次发布转向根据社区反馈增加新功能和提升易用性。这次发布相对较大!需要注意的三个关键功能/变化是:
Numba (通过 llvmlite) 现在由 LLVM 6.0 支持,因此通用向量化得到了改进。还发现并修复了一个长期存在的导致损坏的 LLVM 错误。
在向量化方面进一步显著的改进现在可以通过Numba支持Intel的短向量数学库(SVML)来实现。尝试使用 conda install -c numba icc_rt 来体验。
CUDA 8.0 现在是支持的最低 CUDA 版本。
其他亮点包括:
对 parallel=True 的错误修复在使用 ParallelAccelerator 技术时开启了更多的向量化机会。
在改进错误报告和Numba的总体可用性方面投入了大量精力。这包括突出显示的错误消息和性能提示文档。尝试使用 conda install colorama 来体验。
支持了许多新的 NumPy 函数,np.convolve、np.correlate、np.reshape、np.transpose、np.permutation、np.real、np.imag 和 np.searchsorted 现在支持 side 关键字参数。此外,np.argsort 现在支持 kind 关键字参数,并提供了 quicksort 和 mergesort 选项。
Numba 扩展 API 通过使用 numba.extending.get_cython_function_address 来获取函数地址,从而更容易地操作来自 Cython 模块的函数,这些地址可以直接用于 ctypes.CFUNCTYPE。
Numba 现在允许将 jitted 函数(以及 jitted 函数的容器)作为参数传递给其他 jitted 函数。
CUDA 功能已增加了对更多位操作内在函数的支持,包括 SELP,并修复了许多错误。
已添加对 PPC64LE 平台的初步支持工作,但全面支持仍在等待 LLVM 6.0.1 版本的发布,因为它包含 6.0.0 版本中没有的关键补丁。希望在下一个版本中能解决所有剩余问题。
高级用户/编译器工程师定义自己的编译管道的功能。
增强功能:
PR #2660: 在 nopython 模式下支持 cffi 中的布尔类型。
PR #2741: 增强未定义变量的错误信息。
PR #2744: 在测试套件发现失败时添加诊断错误消息。
PR #2748: 添加了 Intel SVML 优化作为默认启用的选择退出选项
PR #2762: 支持带有轴参数的转置。
PR #2777: 添加对 np.correlate 和 np.convolve 的支持
PR #2779: 实现 np.random.permutation
PR #2801: 将即时编译的函数作为参数传递
PR #2802: 支持 np.real() 和 np.imag()
PR #2807: 暴露 import_cython_function
PR #2821: 为 np.searchsorted 添加 kwarg ‘side’
PR #2822: 添加稳定的 argsort
PR #2832: 修复 llvmlite 0.23/llvm 6 的问题
PR #2836: 在元组上支持 index 方法
PR #2839: 支持 np.transpose 和 np.reshape。
PR #2843: 自定义管道
PR #2847: 在无符号 prange 循环体中替换有符号数组访问索引
PR #2859: 添加对改进错误报告的支持。
PR #2880: 这增加了一个github问题模板。
PR #2881: 构建配方以克隆 Intel ICC 运行时。
PR #2882: 更新 TravisCI 以测试 SVML
PR #2893: 在 array.ctypes 对象中添加对数据缓冲区的引用
PR #2895: 迁移到 CUDA 8.0
修复:
PR #2737: 修复 #2007 (部分 1)。np.linalg 中的空数组处理。
PR #2738: 修复 install_requires 以允许 pip 获取预发布版本
PR #2740: 修复 2208。生成更好的错误信息。
PR #2765: 修复位数
PR #2780: PowerPC 引用计数内存栅栏
PR #2805: 修复 six 导入。
PR #2813: 修复 #2812: gufunc 标量输出错误。
PR #2814: 修复了 #2727 之后的构建问题
PR #2831: 尝试修复 #2473
PR #2842: 修复测试发现和损坏的CUDA驱动程序的问题。
PR #2850: 添加 rtsys 初始化保护和测试。
PR #2852: 跳过目标不是 x86 的向量化测试
PR #2856: 防止在 test_extending.py 中向 stdout 打印
PR #2864: 修正C代码以防止编译器警告。
PR #2889: 尝试修复 #2386。
PR #2891: 移除了对 inspect_cfg 的测试跳过
PR #2898: 在不支持的平台上为并行测试添加防护
PR #2907: 更新PPC64LE LLVM依赖的变更日志。
PR #2911: 将构建需求移动到 llvmlite>=0.23.0dev0
PR #2912: 修复随机排列测试。
PR #2914: 修复问题模板中的MD列表语法。
文档更新:
PR #2739: 在文档字符串中明确说明 error_model 的默认值
PR #2803: DOC: 并行向量化需要签名
PR #2829: 在文档中添加 Python 2.7 EOL 计划
PR #2838: 在列表中使用自动编号语法。
PR #2877: 添加性能优化文档。
PR #2883: 修复 #2872: 更新关于线程/分叉安全性的rng文档
PR #2908: 添加缺失的链接和文档引用。
PR #2909: 微小的拼写错误修正
ParallelAccelerator 增强/修复:
PR #2727: 对ParallelAccelerator中启用向量化的更改。
PR #2816: 任意参数的转置数组分析
PR #2874: 修复死代码消除器,使其不会移除带有副作用的调用
PR #2886: 修复 ParallelAccelerator 数组表达式 repr
CUDA 增强功能:
PR #2734: 从 cuda.h 中获取更多常量
PR #2767: 为 DeviceNDArray 添加 len(..) 支持
PR #2778: 为 CUDA 模拟器添加更多设备数组 API 函数
PR #2824: 为人口统计添加CUDA原语
PR #2835: 发出selp指令以避免分支
PR #2867: 全面支持 CUDA 设备属性
CUDA 修复:* PR #2768: 不要在每次赋值时编译代码 * PR #2878: 修复了 Pr/2865 测试中的 Win64 问题
贡献者:
以下人员为此次发布做出了贡献。
阿布塔利布·阿加耶夫
亚历克斯·奥利瓦斯
安东·马拉霍夫
Dong-hee Na
Ehsan Totoni (核心开发者)
约翰·兹温克
乔什·威尔逊
凯尔西·乔达尔
尼克·怀特
Olexa Bilaniuk
Rik-de-Kort
Siu Kwan Lam (核心开发者)
Stan Seibert (核心开发者)
Stuart Archibald (核心开发者)
托马斯·阿利尔森
Todd A. Anderson (核心开发者)
版本 0.37.0
此版本主要集中在错误修复和稳定性提升,但也增加了一些新功能,包括对 Numpy 1.14 的支持。Numba 核心的关键变化是期待已久的线程安全改进的最终部分,这些改进允许 Numba 在多个线程上并发运行,而不会遇到 LLVM 内部的已知线程安全问题。此外,CUDA 实现中加入了许多修复和增强功能,ParallelAccelerator 获得了一些新功能并进行了一些内部重构。
其他增强功能:
PR #2627: 移除使 llvmlite 线程安全的 hack
PR #2672: 添加 ascontiguousarray
PR #2678: 添加 Gitter 徽章
PR #2691: 修复 #2690: 添加将数组转换为元组的内在函数
PR #2703: 测试运行器功能:先失败和最后失败
PR #2708: 修复问题 #1907 的补丁
PR #2732: 添加对 array.fill 的支持
杂项修复:
PR #2610: 修复 #2606 中 optional.setattr 的降低问题
PR #2650: 移除 win32 余弦测试的跳过
PR #2668: 修复从只读数组创建的 empty_like。
PR #2682: 修复了 #2210,移除了 _DisableJitWrapper
PR #2684: 修复 #2340,生成器错误产生布尔值
PR #2693: 添加对 NumPy 1.14 的 travis-ci 测试,并同时检查 Python 2.7
PR #2694: 避免由于类型模板拒绝导致的类型推断失败
PR #2695: 更新 llvmlite 版本依赖。
PR #2696: 修复空元组的索引代码生成
PR #2698: 通过在 simplify_CFG 循环中延迟删除来修复 #2697。
PR #2701: 小修复以避免在当前目录中创建临时文件
PR #2725: 修复 #2481,由于变异的IR导致的LLVM IR解析错误
PR #2726: 修复 #2673: 不正确的fork错误信息。
PR #2728: #2620 的替代方案。移除无用代码 ByteCodeInst.get。
PR #2730: 为需要 SciPy/BLAS 的测试添加保护
文档更新:
PR #2670: 更新沟通渠道
PR #2671: 添加关于诊断循环向量化器的文档
PR #2683: 添加关于常量参数要求和常量内存分配的文档
PR #2722: 添加关于cuda中numpy支持的文档
PR #2724: 更新文档:关于不支持的参数的警告
ParallelAccelerator 增强/修复:
增加了对 np.arange 和 np.linspace 的并行支持,同时还有 np.mean、np.std 和 np.var。这是作为对核心 ParallelAccelerator 代码进行全面重构和清理的一部分完成的。
PR #2674: 核心 pa
PR #2704: 在 parfor 顺序降低后生成 Dels
PR #2716: 处理直接支持的匹配函数
CUDA 增强功能:
PR #2665: CUDA DeviceNDArray: 支持 numpy 转置 API
PR #2681: 允许分配给 DeviceNDArrays
PR #2702: 使 DummyArray 进行高维重塑
PR #2714: 使用 CFFI 重用代码
CUDA 修复:
PR #2667: 修复 CUDA DeviceNDArray 切片
PR #2686: 修复 #2663: 索引 cuda 数组时的偏移错误。
PR #2687: 确保构造的流绑定
PR #2706: 由于异常抛出代码导致的意外warp发散的解决方法
PR #2707: 修复回归问题:cuda测试子模块在runtests中未能正确加载
PR #2731: 在切片测试中使用更具挑战性的值。
PR #2720: 一个快速的测试套件修复,以避免在多进程池中运行新的cuda测试用例
贡献者:
以下人员为此次发布做出了贡献。
Coutinho Menezes Nilo
丹尼尔
Ehsan Totoni
尼克·怀特
保罗·H·刘
林思宽
Stan Seibert
斯图尔特·阿奇博尔德
Todd A. Anderson
版本 0.36.2
这是一个修复错误的发布版本,提供了一些小的改动来解决:
PR #2645: 避免在较旧的 2.7.x 版本中使用
exec
时的 CPython 错误。PR #2652: 添加对 CUDA 9 的支持。
版本 0.36.1
此版本继续为与英特尔合作的 ParallelAccelerator 技术添加新功能。其他值得注意的变化包括编译链更新为使用 LLVM 5.0,以及使用 conda-build 3 和新编译器生成 conda 包。
注意:版本 0.36.0 被标记为内部使用,但未发布。
ParallelAccelerator:
注意:ParallelAccelerator 技术正在积极开发中,应视为实验性技术。
与Intel合作完成的ParallelAccelerator相关的新功能包括:添加了 @stencil 装饰器以方便实现类似模板计算,支持一般归约,以及为并行切片/位数组赋值提供的切片和范围融合。关于上述功能的使用和实现文档已经添加。此外,一个新的调试环境变量 NUMBA_DEBUG_ARRAY_OPT_STATS 被提供,以提供哪些操作符/调用被转换为并行for循环的信息。
ParallelAccelerator 特性:
PR #2457: 并行加速器中的模板计算
PR #2548: 切片和范围融合,并行化位数组和切片赋值
PR #2516: 支持 ParallelAccelerator 中的通用归约
ParallelAccelerator 修复:
PR #2540: 修复 bug #2537
PR #2566: 修复问题 #2564。
PR #2599: 修复嵌套多维 parfor 类型推断问题
PR #2604: 修复了模板测试和 cmath sin()。
PR #2605: 修复了问题 #2603。
值得注意的附加功能:
此版本的 Numba(和 llvmlite)更新为使用 LLVM 5.0 版本作为编译器后端,Numba 支持此版本的主要变化是添加了一个自定义符号跟踪器,以避免在请求不存在的符号地址时调用 LLVM 的 ExecutionEngine 导致崩溃。此外,此版本 Numba 的 conda 包是使用 conda build 3 版本以及该版本中存在的新编译器/配方语法构建的。
PR #2568: 更新至 LLVM 5
PR #2607: 修复获取“nrt_unresolved_abort”地址时导致的终止
PR #2615: 向 conda build 3 迈进
感谢社区的反馈和错误报告,还进行了以下修复。
杂项修复/增强:
PR #2534: 为 np.take 添加元组支持。
PR #2551: 品牌重塑修复
PR #2552: 相对文档链接
PR #2570: 修复问题 #2561,处理循环退出时缺少后继者的情况
PR #2588: 修复 #2555。在Linux上禁用libpython.so链接。
PR #2601: 更新 llvmlite 版本依赖。
PR #2608: 修复潜在的缓存文件冲突
PR #2612: 修复由于在覆盖率运行时增加的开销导致的NRT测试失败
PR #2619: 修复了在锁外调用 pthread_cond_signal 的问题
PR #2622: 修复 np.nanmedian 在所有 NaN 情况下的问题。
PR #2633: 修复 CONTRIBUTING.md 中的 Markdown 问题
PR #2635: 使AOT对编译器的依赖变为可选。
CUDA 支持修复:
PR #2523: 修复在另一个线程中内存传输调用中的无效cuda上下文
PR #2575: 使用 CPU 初始化 GPU RNG 的 xoroshiro 状态。修复了 #2573。
PR #2581: 修复 cuda gufunc 将标量参数错误处理为数组和输出参数的问题
版本 0.35.0
此版本包含了一些令人兴奋的新功能,这是与英特尔合作在ParallelAccelerator技术方面的工作成果。此外,还对Numpy支持进行了一些添加,并进行了一些小但重要的修复,这些修复是大量努力追踪错误和实施稳定性改进的结果。
ParallelAccelerator:
注意:ParallelAccelerator 技术正在积极开发中,应视为实验性技术。
与英特尔合作完成的工作中,与 ParallelAccelerator 相关的新功能包括在 parallel 模式下支持更大范围的 np.random 函数,在无 Python 模式下打印 Numpy 数组,能够直接从列表推导中初始化 Numpy 数组,以及 .sum() 方法的 axis 参数。此外,还添加了关于 ParallelAccelerator 技术实现的文档。进一步地,为了在并行模式下启用广播行为的运行时检查,进行了大量关于等价关系的工作。
ParallelAccelerator 特性:
PR #2400: 数组推导
PR #2405: 支持打印 Numpy 数组
PR #2438: 在 ParallelAccelerator 中支持更多 np.random 函数
PR #2482: 在 nopython 模式下支持 sum 函数使用 axis 参数。
PR #2487: 为 ParallelAccelerator 技术添加开发者文档。
PR #2492: 核心 PA 重构增加了对广播语义的断言
ParallelAccelerator 修复:
PR #2478: 在parfor翻译前重命名cfg (#2477)
PR #2479: 修复在不支持的平台上数组推导测试失败的问题
PR #2484: 修复 win64 上的数组推导测试
PR #2506: 修复32位机器的问题。
值得注意的附加功能:
在无 Python 模式下,增加了对 np.take、np.finfo、np.iinfo 和 np.MachAr 的支持。此外,还添加了三个新的环境变量,其中两个用于覆盖 CPU 目标/特性,另一个用于警告如果设置了 parallel=True 但无法进行此类转换。
PR #2490: 实现 np.take 和 ndarray.take
PR #2493: 如果设置了 parallel=True 但无法实现,则显示警告。
PR #2513: 添加 np.MachAr, np.finfo, np.iinfo
PR #2515: 允许通过环境变量覆盖cpu目标和cpu特性。
由于测试农场的扩展和专注于修复错误,以下修复也被实施。
杂项修复/增强:
PR #2455: 为运行时错误添加上下文信息
PR #2470: 修复 #2458,np.median 性能不佳
PR #2471: 确保在 {g,}ufunc 构建中 LLVM 的线程安全。
PR #2494: 更新文档主题
PR #2503: 移除在 #2482 中添加的临时代码并进行功能增强
PR #2505: 在多线程测试期间序列化环境变异测试。
PR #2520: 修复失败的 cpu-target 覆盖测试
CUDA 支持修复:
PR #2504: 启用 CUDA 工具包版本测试
PR #2509: 禁用生成在较低CC版本中不可用代码的测试。
PR #2511: 修复 Windows 64 位 CUDA 测试。
版本 0.34.0
此版本新增了一系列重要功能,这些功能源于与英特尔在ParallelAccelerator技术上的合作。同时,增加了列表推导和闭包支持,支持Numpy 1.13,并引入了一种新的、更快的CUDA归约算法。对于Linux用户,此版本是首个基于Centos 6构建的版本,这将成为未来版本的新基础平台。最后,修复了多个线程安全、类型推断及其他一些小问题和错误。
ParallelAccelerator 特性:
注意:ParallelAccelerator 技术正在积极开发中,应视为实验性技术。
ParallelAccelerator 技术通过一个新的“nopython”模式选项“parallel”来访问。ParallelAccelerator 技术尝试识别具有并行语义的操作(例如将标量添加到向量),将相邻的此类操作融合在一起,然后在多个 CPU 核心上并行化它们的执行。这本质上是一种自动并行化。
除了自动并行化功能外,还通过使用 prange 代替 range 作为循环迭代器,提供了基于显式循环的并行性。
关于自动并行化和 prange 的更多信息和示例,分别可以在文档和示例目录中找到。
作为 ParallelAccelerator 必要工作的一部分,增加了对闭包和列表推导的支持:
PR #2318: 将 ParallelAccelerator 技术转移到 Numba
PR #2379: 并行加速器核心改进
PR #2367: 添加对 len(range(…)) 的支持
PR #2369: 列表推导式
PR #2391: 显式并行循环支持 (prange)
ParallelAccelerator 功能在所有支持的平台上和 Python 版本中都可用,除了(计划在未来版本中支持):
Windows 操作系统与 Python 2.7 的结合。
运行32位Python的系统。
CUDA 支持增强:
PR #2377: 新的GPU归约算法
CUDA 支持修复:
PR #2397: 修复 #2393,始终设置 cuda 静态内存区域的对其方式
杂项修复:
PR #2373, Issue #2372: 修复了与 parfor 相关代码的 32 位兼容性问题
PR #2376: 修复 #2375 py2.7 vc9 缺少 stdint.h
PR #2378: 修复并行 gufunc 中内核获取 GIL 时的死锁问题。
PR #2382: 禁止在位操作中进行不安全的类型转换
PR #2385: docs: 修复 Sphinx 错误
PR #2396: 对移位操作使用64位右操作数
PR #2404: 修复 ufunc 编译缓存中的线程安全逻辑问题。
PR #2424: 确保类型推断的块迭代顺序一致。
PR #2425: 保护代码以防止在 win32 + py27 上使用 ‘parallel’
PR #2426: 枚举成员类型恢复的基本测试。
PR #2433: 修复与Windows py2.7相关的parfors测试
PR #2442: 如果 scipy 不可用,跳过需要 BLAS/LAPACK 的测试。
PR #2444: 添加对无效数组 setitem 的测试
PR #2449: 使运行时初始化器线程安全
PR #2452: 在64位Windows上跳过CFG测试
杂项增强:
PR #2366: 改进 IR 工具
PR #2388: 更新 README.rst 以指示 LLVM 的正确版本
PR #2394: 升级到 llvmlite 0.19.*
PR #2395: 将 llvmlite 版本更新到 0.19
PR #2406: 将环境对象暴露给ufuncs
PR #2407: 在lowerer内部的目标上下文中暴露环境对象
PR #2413: 为 buildbot 添加标志以传递给 conda 构建
PR #2414: 在本地配方中添加交叉编译标志
PR #2415: 对重写的一些清理
PR #2418: 为 Enum 类添加 getitem 支持
PR #2419: 添加对在矢量化中返回枚举的支持
PR #2421: 为Intel贡献的文件添加版权声明。
PR #2422: 修补代码库以兼容 np 1.13 版本
PR #2448: 在使用 ‘parallel’ 时,如果 cache=True,则添加警告消息
PR #2450: 为 .sum-like 和 .cumsum-like 数组方法添加关键字参数测试
版本 0.33.0
此版本解决了循环体内原子引用计数操作引起的几个性能问题。新增的优化过程已用于减少这些操作的影响。由于不必要的引用计数操作的移除,我们观察到受影响程序的速度提升在2倍至10倍之间。
CUDA GPU 支持也有多项增强:
基于 xoroshiro128+ 算法 的 GPU 随机数生成器已添加。详情和示例请参见 文档。
@cuda.jit
CUDA 内核现在可以调用@jit
和@njit
CPU 函数,它们将自动编译为 CUDA 设备函数。CUDA IPC 内存 API 用于在进程之间共享内存。使用细节请参见 文档。
引用计数增强:
PR #2346, Issue #2345, #2248: 内联后增加额外的引用计数修剪
PR #2349: 修复 refct 修剪未移除带有尾调用的 refct 操作。
PR #2352, Issue #2350: 为不需要引用计数的函数添加引用计数修剪传递
CUDA 支持增强:
PR #2023: 支持设备数组的CUDA IPC
PR #2343, Issue #2335: 允许使用 CPU jit 装饰的函数作为 cuda 设备函数
PR #2347: 为CUDA设备代码添加随机数生成器支持
PR #2361: 更新 CC: 5.3, 6.0, 6.1, 6.2 的 autotune 表
杂项修复:
PR #2362: 避免由于在32位平台上输入到int32导致的测试失败
PR #2359: 修复了在执行时抛出 TypeError 的 nogil 示例。
PR #2357, Issue #2356: 修复依赖于脚本执行方式的脆弱测试。
PR #2355: 修复了作为另一个模块属性的cpu调度器引用
PR #2354: 修复了当函数需要NRT和引用计数修剪时的缓存问题
PR #2342, Issue #2339: 在使用未序列化的缓存代码时,向检查中添加警告
PR #2329, Issue #2250: 更好地处理缺失的操作码
其他增强功能:
PR #2360: 在错误消息解释中添加缺失的值。
PR #2353: 处理 get_host_cpu_features() 引发 RuntimeError 的情况
PR #2351: 为 erf/erfc/gamma/lgamma/log2 启用 SVML
PR #2344: 在 jit 装饰器中公开 error_model 设置
PR #2337: 使 fork() 的阻塞终止支持与新版 TBB 对齐
PR #2336: 将 llvmlite 版本升级到 0.18
PR #2330: PR #2318 中的核心更改
版本 0.32.0
在此版本中,我们将升级到 LLVM 4.0。当编译器被并发使用时,LLVM 内部存在许多竞态条件问题,这在使用 Numba 与 Dask 时很常见,为此我们做了大量工作来修复这些问题。
改进:
PR #2322: 由于与 tgamma 相关的未知但一致的错误,抑制测试错误
PR #2320: 将 llvmlite 依赖更新到 0.17
PR #2308: 在错误信息中添加关于为什么禁用cuda支持的详细信息。
PR #2302: 添加 os x 到 travis
PR #2294: 由于LLVM内部的内存泄漏,禁用MCJIT上的remove_module
PR #2291: 分割并行测试并回收工作线程以控制内存使用
PR #2253: 移除用于在列表中存储 meminfos 的指针填充技巧
修复:
PR #2331: 修复GPU数组索引中的一个错误
PR #2326: 修复 #2321 文档中引用不存在的函数。
PR #2316: 修复更多竞态条件问题
PR #2315: 修复 #2314。放宽严格类型检查以允许可选类型。
PR #2310: 修复由于并发编译和缓存加载导致的竞争条件
PR #2304: 修复内部函数第一个参数不是文档中声明的 typing.Context 的问题。
PR #2287: 修复 int64 原子最小-最大值
PR #2286: 修复 #2285 @overload_method 未链接依赖库
PR #2303: 缺少导入语句到 interval-example.rst
版本 0.31.0
在此版本中,我们增加了对 GDB 版本 >= 7.0 的调试的初步支持。该功能通过设置 debug=True
编译器选项启用,这将导致生成与 GDB 兼容的调试信息。CUDA 后端也获得了有限的调试支持,以便在内存检查和分析工具中显示源代码位置。详情请参阅 故障排除和提示。
此外,我们添加了 fastmath=True
编译器选项以启用不安全的浮点转换,这允许 LLVM 自动向量化更多代码。
其他重要变化包括升级到 LLVM 3.9.1 并增加对 Numpy 1.12 的支持。
改进:
PR #2281: 更新为 numpy1.12
PR #2278: 添加 CUDA atomic.{max, min, compare_and_swap}
PR #2277: 在conda配方中添加关于部分,以在Anaconda Cloud中识别许可证和其他元数据
PR #2271: 为 CPU 和 CUDA 目标采用 itanium C++ 风格的名称修饰
PR #2267: 添加 fastmath 标志
PR #2261: 支持 dtype.type
PR #2249: 针对 llvm3.9 的更改
PR #2234: 将 llvmlite 要求提升至 0.16,并为 OS X 的 mviewbuf 添加 install_name_tool_fixer
PR #2230: 在 TravisCi 中添加 python3.6
PR #2227: 为 gufunc 包装器启用缓存
PR #2170: 添加调试支持
PR #2037: 为更容易地可视化函数操作,添加了 inspect_cfg() 方法。
修复:
PR #2274: 修复 nvvm ir 补丁在处理“load”时的错误
PR #2272: 修复对 cuda7.5 的破坏
PR #2269: 修复cuda.reduce中copy_strides内核的缓存问题
PR #2265: 修复 #2263: 当链接两个具有动态全局变量的模块时出错
PR #2252: 修复测试中的路径分隔符
PR #2246: 修复某些系统中 fork 导致的内存过度使用问题
PR #2241: 修复 #2240: 动态创建的函数中的 __module__ 不是 str
PR #2239: 修复指纹计算失败,防止回退
版本 0.30.1
这是一个修复bug的版本,以启用对Python 3.6的支持。此外,现在在源码构建时,如果定义了TBBROOT,则可以支持并行ufuncs的早期Intel TBB支持。TBB功能在我们的官方构建中未启用。
修复:
PR #2232: 修复 Python 3.6 中与 _Py_hashtable_xxx 的名称冲突。
改进:
PR #2217: 为并行ufunc添加Intel TBB线程池实现。
版本 0.30.0
此版本增加了对 Python 3.6 的初步支持,但尚未提供官方构建。新增了一个系统报告工具(numba --sysinfo
),用于提供系统信息,以帮助核心开发人员进行复制和调试。请参阅下方了解其他改进和错误修复。
改进:
PR #2209: 支持 Python 3.6。
PR #2175: 支持
np.trace()
、np.outer()
和np.kron()
。PR #2197: 支持
np.nanprod()
。PR #2190: 支持ufunc的缓存。
PR #2186: 添加系统报告工具。
修复:
PR #2214, Issue #2212: 修复 ndenumerate 和 flat 迭代器中的内存错误。
PR #2206, Issue #2163: 修复
zip()
在早期耗尽时消耗额外元素的问题。PR #2185, Issue #2159, #2169: 修复重写过程影响objmode回退的问题。
PR #2204, Issue #2178: 修复 liftedloop 的注解。
PR #2203: 修复 Appveyor 在 Python 3.5 上的段错误。
PR #2202, Issue #2198: 修复从ufunc缓存加载时目标上下文未初始化的问题。
PR #2172, Issue #2171: 修复可选类型解包。
PR #2189, Issue #2188: 禁用对大型 (>1MB) 全局数组的冻结。
PR #2180, Issue #2179: 修复循环提升中的无效变量版本。
PR #2156, Issue #2155: 修复 CUDA 上的 divmod, floordiv 段错误。
版本 0.29.0
此版本扩展了对递归函数的支持,包括直接和间接递归,无需显式函数类型注解。请参阅 examples/mergesort.py 中的新示例。新支持的 numpy 功能包括数组堆叠函数、np.linalg.eig* 函数、np.linalg.matrix_power、np.roots 以及赋值中的数组到数组广播。
此版本依赖于 llvmlite 0.14.0 并支持 CUDA 8,但不是必需的。
改进:
PR #2130, #2137: 添加类型推断递归,附带文档和示例。
PR #2134: 添加
np.linalg.matrix_power
。PR #2125: 添加
np.roots
。PR #2129: 添加
np.linalg.{eigvals,eigh,eigvalsh}
。PR #2126: 添加数组到数组的广播功能。
PR #2069: 添加 hstack 及相关函数。
PR #2128: 允许向量化一个 jitted 函数。(感谢 @dhirschfeld)
PR #2117: 更新示例并使其可测试。
PR #2127: 重构解释器类及其结果。
修复:
PR #2149: 解决 MSVC9.0 SP1 fmod 错误 kb982107 的变通方法。
PR #2145, Issue #2009: 修复了 jitclass
__init__
方法的 kwargs。PR #2150: 修复 objmode 回退中的减速问题。
PR #2050, Issue #1259: 修复某些生成器循环的活性问题。
PR #2072, Issue #1995: 无符号左值的右移应为逻辑右移。
PR #2115, Issue #1466: 修复因变量名混淆导致的 inspect_types() 错误。
PR #2119, Issue #2118: 修复从记录数据类型创建的数组类型。
PR #2122, Issue #1808: 修复由于数据模型错误导致的返回生成器问题。
版本 0.28.1
这是一个修复了与setuptools依赖相关的打包问题的bug修复版本。
版本 0.28.0
在其他改进中,此版本再次提升了对线性代数的支持水平——来自 numpy.linalg
模块的函数。此外,我们的随机数生成器现在保证是线程安全和分叉安全的。
改进:
PR #2019: 添加
@intrinsic
装饰器以定义可从JIT函数调用的低级子程序(目前这被视为私有API)。PR #2059: 实现
np.concatenate
和np.stack
。PR #2048: 使随机生成器支持分叉安全和线程安全,为每个线程或进程生成独立的随机数流。
PR #2031: 添加浮点陷阱的文档。
问题 #2053: 避免在并行 CPU 目标中轮询(修复了 Windows 上的严重性能回归)。
问题 #2029: 使默认参数快速。
PR #2052: 为CUDA驱动添加日志记录。
PR #2049: 实现内置的
divmod()
函数。PR #2036: 在数组上实现
argsort()
方法。PR #2046: 通过延迟释放内存直到达到某些阈值,从而改进CUDA内存管理,以避免中断异步执行。
PR #2040: 将 CUDA 驱动实现切换为使用 CUDA 的“主上下文”API。
PR #2017: 允许
min(tuple)
和max(tuple)
。PR #2039: 减少 CUDA 中 fork() 检测的开销。
PR #2021: 处理带有标题的结构化数据类型。
PR #1996: 将循环提升重写为 Numba IR 上的一个转换。
PR #2014: 实现
np.linalg.matrix_rank
。PR #2012: 实现
np.linalg.cond
。PR #1985: 重写即使是简单的数组表达式,这为其他优化打开了大门(例如,
array ** 2
可以转换为array * array
)。PR #1950: 让
typeof()
在失败时总是引发 ValueError。之前,它可能会根据输入引发错误或返回 None。PR #1994: 实现
np.linalg.norm
。PR #1987: 实现
np.linalg.det
和np.linalg.slogdet
。问题 #1979: 文档整数宽度推断及如何解决。
PR #1938: Numba 现在与 LLVM 3.8 兼容。
PR #1967: 限制
np.linalg
函数为同质数据类型。希望传递混合类型输入的用户必须显式转换,这使得性能影响更加明显。
修复:
PR #2006:
array(float32) ** int
应返回array(float32)
。PR #2044: 允许重塑空数组。
问题 #2051: 修复在连接元组时的引用计数问题。
问题 #2000: 使 Numpy 在 setup.py 中成为可选依赖,以便在没有预装 Numpy 的情况下也能使用
pip install
进行安装。PR #1989: 修复
Dispatcher.disable_compile()
中的断言。问题 #2028: 当从多个进程缓存时忽略文件系统错误。
问题 #2003: 允许使用 Unicode 变量和函数名(在 Python 3 上)。
问题 #1998: 修复在并行ufuncs中重新获取GIL时的死锁问题。
PR #1997: 修复在某些Windows平台上进行AOT编译时的随机崩溃问题。
问题 #1988: 传播 jitclass 文档字符串。
问题 #1933: 确保数组常量以正确的对齐方式发出。
版本 0.27.0
改进:
问题 #1976:当给CUDA内核提供非整数维度时,改进错误消息。
PR #1970: 使用静态指数优化幂运算符。
PR #1710: 改进编译器错误的上下文信息。
PR #1961: 支持打印常量字符串。
PR #1959: 在 print() 函数中支持更多类型。
PR #1823: 在CUDA后端中支持
compute_50
。PR #1955: 支持
np.linalg.pinv
。PR #1896: 改进
SmartArray
API。PR #1947: 支持
np.linalg.solve
。问题 #1943: 当参数类型检查失败时,改进错误信息。
PR #1927: 支持
np.linalg.lstsq
。PR #1934: 在可能的情况下,使用系统的 hypot() 函数,而不是我们自己的实现。
PR #1929: 为
@cfunc
对象添加 cffi 支持。PR #1932: 为并行CPU目标添加用户可控的线程池限制。
PR #1928: 当签名明确时支持自递归。
PR #1890: 在开发者文档中列出所有降低实现。
问题 #1884: 支持
np.lib.stride_tricks.as_strided()
。
修复:
问题 #1960: 修复源区域和目标区域重叠时的切片赋值问题。
PR #1963: 使 CUDA print() 原子化。
PR #1956: 允许0维数组常量。
问题 #1945: 允许在AOT编译代码中使用Numpy ufuncs。
问题 #1916: 修复
@generated_jit
的文档示例。问题 #1926: 修复在 IPython 会话中缓存函数时的回归问题。
问题 #1923: 允许 carray() 和 farray() 接受非 intp 整数参数。
问题 #1908: 在 Python 2 上接受非 ASCII 的 Unicode 文档字符串。
问题 #1874: 允许在对象模式中使用
del container[key]
。问题 #1913: 修复当查找链包含已删除条目时的集合插入错误。
问题 #1911: 允许在 jitclass 方法上使用函数注解。
版本 0.26.0
此版本增加了对 cfunc
装饰器的支持,用于将 numba jitted 函数导出到接受 C 回调的第三方 API。消除了在解释器内部使用 jitclasses 的大部分开销。增加了对 numpy.linalg
中分解的支持。最后,支持 Numpy 1.11。
改进:
PR #1889: 为 pycc 导出 BLAS 和 LAPACK 包装器。
PR #1888: 更快的数组幂运算。
问题 #1867: 允许为 dufuncs 使用 “out” 关键字参数。
PR #1871:
carray()
和farray()
用于从指针创建数组。PR #1855:
@cfunc
装饰器用于导出为 ctypes 函数。PR #1862: 添加对
numpy.linalg.qr
的支持。PR #1851: 支持 ‘_’ 和 ‘__’ 前缀属性的 jitclass。
PR #1842: 优化 Python 解释器中的 jitclass。
问题 #1837: 修复 CUDA 模拟器中设备函数的问题。
PR #1839: 添加对
numpy.linalg
中分解的支持。PR #1829: 支持 Python 枚举。
PR #1828: 添加对
numpy.random.rand()
和numpy.random.randn()
的支持问题 #1825: 使用 0-darray 代替标量索引。
问题 #1824: 对象模式 gufuncs 的标量参数。
问题 #1813: 让按位布尔运算符返回布尔值,而不是整数。
问题 #1760: 生成器中的可选参数。
PR #1780: 支持 Numpy 1.11。
版本 0.25.0
此版本在 nopython 模式下增加了对 set
对象的支持。它还增加了对许多缺失的 Numpy 特性和函数的支持。在使用 dask、distributed 或 Spark 等分布式执行框架时,它提高了 Numba 的兼容性和性能。最后,它移除了对 Python 2.6、Python 3.3 和 Numpy 1.6 的兼容性。
改进:
问题 #1800: 在CUDA目标中添加erf()、erfc()、gamma()和lgamma()函数。
PR #1793: 实现更多 Numpy 函数:np.bincount()、np.diff()、np.digitize()、np.histogram()、np.searchsorted() 以及 NaN-aware 归约函数(np.nansum()、np.nanmedian() 等)。
PR #1789: 优化一些归约函数,如 np.sum()、np.prod()、np.median() 等。
PR #1752: 使 CUDA 功能在 dask、distributed 和 Spark 中工作。
PR #1787: 支持 np.nditer() 用于广播的多数组快速索引。
PR #1799: 在分析时将JIT编译的函数报告为常规Python函数(允许查看定义函数的文件名和行号)。
PR #1782: 支持 np.any() 和 np.all()。
问题 #1788: 支持 iter() 和 next() 内置函数。
PR #1778: 支持 array.astype()。
问题 #1775: 允许用户为AOT编译设置目标CPU模型。
PR #1758: 支持使用
size
参数通过 np.random API 创建随机数组。PR #1757: 支持在 array.flat 对象上使用 len()。
PR #1749: 移除对 Numpy 1.6 的兼容性。
PR #1748: 移除对 Python 2.6 和 3.3 的兼容性。
PR #1735: 支持
not in
运算符以及 operator.contains()。PR #1724: 在 nopython 模式下支持同质集合。
问题 #875:使数组常量的编译速度更快。
修复:
PR #1795: 修复了在使用分布式、Spark 或类似机制进行序列化时调用 Numba 函数时的巨大性能问题。
问题 #1784: 使 jitclasses 在 NUMBA_DISABLE_JIT=1 下可用。
问题 #1786: 允许在分析时使用线性代数函数。
问题 #1796: 修复非连续输入时 np.dot() 的内存泄漏。
PR #1792: 修复元组的静态负索引问题。
问题 #1771: 当 __pycache__ 不可写时,例如当用户代码安装在系统位置时,使用备用缓存目录。
问题 #1223: 在数组表达式中使用 Numpy 错误模型(例如,除以零返回
inf
或nan
而不是引发错误)。问题 #1640: 修复 np.random.binomial() 函数在大 n 值下的问题。
问题 #1643: 当向
@jitclass
传递无效的规范时,改进错误报告。PR #1756: 修复了在省略起始位置时使用负步长的切片问题。
版本 0.24.0
此版本引入了几项重大变化,包括用于灵活特化的 @generated_jit
装饰器,类似于 Julia 的 @generated
宏,或 SmartArray 数组包装类型,该类型允许在 CPU 和 GPU 之间无缝传输数组数据。
这将是支持 Python 2.6、Python 3.3 和 Numpy 1.6 的最后一个版本。
改进:
PR #1723: 提高JIT函数与Python分析器的兼容性。
PR #1509: 支持 array.ravel() 和 array.flatten()。
PR #1676: 添加 SmartArray 类型以支持在多个地址空间(主机和GPU)中进行透明的数据管理。
PR #1689: 减少导入 Numba 的启动开销。
PR #1705: 支持将 CFFI 类型注册为与已知 Numba 类型相对应。
PR #1686: 文档化扩展API。
PR #1698: 改进类型推断期间引发的警告。
PR #1697: 支持在非连续数组上使用 np.dot() 及其相关函数。
PR #1692: cffi.from_buffer() 改进 (允许更多指针类型,允许非Numpy缓冲对象)。
PR #1648: 添加
@generated_jit
装饰器。PR #1651: 使用 LAPACK 实现 np.linalg.inv。感谢 Matthieu Dartiailh。
PR #1674: 支持 np.diag()。
PR #1673: 当查找未知全局变量上的属性时,改进错误消息。
问题 #1569: 实现对 LLVM 区域设置错误的运行时检查。
PR #1612: 与 llvmlite 同步切换到 LLVM 3.7。
PR #1624: 允许将序列的切片分配给数组。
PR #1622: 支持使用常量切片对元组进行切片。
修复:
问题 #1722: 修复返回可选布尔值(bool 或 None)。
问题 #1734: 当变量在被定义之前被删除时,NRT decref 错误,可能导致内存泄漏。
PR #1732: 修复 CUDA 目标的元组 getitem 回归问题。
PR #1718: 可选到可选类型转换的处理不当。
PR #1714: 修复 JIT 函数上的 .compile() 不遵守 ._can_compile 的问题。
问题 #1667: 修复数组上的 np.angle()。
问题 #1690: 修复省略停止值和负步长值的切片问题。
PR #1693: 修复在处理非标量输入值时,标量形式参数的gufunc错误。
PR #1683: 修复在Windows下的并行测试。
问题 #1616: 尽可能使用系统提供的 C99 数学库版本。
问题 #1652: bool 数组的归约操作(例如 sum() 或 mean())应返回整数或浮点数,而不是布尔值。
问题 #1664: 修复当使用常量索引对记录数组进行索引时的回归问题。
PR #1661: 在旧的Linux内核上禁用AVX。
问题 #1636: 允许在模块上查找并引发异常。
版本 0.23.1
这是一个错误修复版本,旨在解决0.23.0版本中引入的几个回归问题,以及其他一些问题。
修复:
问题 #1645: CUDA ufuncs 在 0.23.0 版本中被破坏。
问题 #1638: 在传递元组列表时检查元组大小。
问题 #1630: 在Windows下,并行ufunc在完成任务后仍会持续占用CPU。
问题 #1628: 修复在 Windows 上使用 Python 3.5 的 ctypes 和 cffi 测试。
问题 #1627: 修复 xrange() 支持。
PR #1611: 重写变量活跃性分析。
问题 #1610: 允许在显式类型的ufuncs之间进行嵌套调用。
问题 #1593: 修复对象模式中的 *args。
版本 0.23.0
此版本引入了使用新的 @jitclass
装饰器的 JIT 类,允许用户定义 nopython 模式的结构。其他改进和错误修复如下所列。
改进:
PR #1609: 通过在调用者中内联一些简单的数学函数来加速它们
PR #1571: 实现 JIT 类
PR #1584: 改进数组索引的类型定义
PR #1583: 允许打印布尔值
PR #1542: 允许在 np.reshape() 中使用负值
PR #1560: 支持向量和矩阵的点积,包括
np.dot()
和 Python 3.5 中的@
运算符PR #1546: 支持在记录数组和标量上进行字段查找(即除了
array.field
之外,还可以使用array['field']
)PR #1440: 支持 HSA wavebarrier() 和 activelanepermute_wavewidth() 内在函数
PR #1540: 支持 np.angle()
PR #1543: 实现CPU多线程gufuncs(target=”parallel”)
PR #1551: 允许在 np.where() 和 np.empty_like() 中使用标量参数。
PR #1516: 从 NumbaPro 添加更多示例
PR #1517: 支持 np.sinc()
修复:
问题 #1603: 修复从缓存函数调用非缓存函数
问题 #1594:确保在解包时列表是同质的
问题 #1595: 替换已弃用的 get_pointer_to_function() 用法
问题 #1586: 允许在同一台机器上由不同用户运行测试
问题 #1587: 使 CudaAPIError 可序列化
问题 #1568: 修复在 Visual Studio 2015 中使用 Numba
问题 #1559: 修复引用重命名模块的 jit 函数的序列化
PR #1508: 让 reshape() 接受整数参数,而不仅仅是元组
问题 #1545:改进解包列表对象时的错误检查
问题 #1538: 修复 CUDA gufuncs 中的数组广播
问题 #1526: 修复一个引用计数处理错误
版本 0.22.1
这是一个修复版本,旨在解决0.22.0版本中发现的某些打包问题和其他问题。
修复:
PR #1515: 在 MANIFEST.in 中包含 MANIFEST.in,以便从源 tar 文件中仍然可以正常使用 sdist。
PR #1518: 修复由隐藏别名引起的引用计数错误
PR #1519: 修复当传递 nopython=True 给 guvectorize 时错误的断言。
PR #1521: 修复 cuda.test()
版本 0.22.0
此版本有几个亮点:Python 3.5 支持、Numpy 1.10 支持、扩展模块的提前编译、以前仅在专有扩展 NumbaPro 中可用的额外矢量化功能、数组索引的改进。
改进:
PR #1497: 允许标量输入类型,而不是大小为1的数组到 @guvectorize
PR #1480: 为AOT编译添加distutils支持
PR #1460: 为提前(AOT)编译创建一个新的API
PR #1451: 允许将 Python 列表传递给 JIT 编译的函数,并在函数返回时反映突变
PR #1387: 支持 Numpy 1.10
PR #1464: 支持 cffi.FFI.from_buffer()
PR #1437: 传播从 Numba 编译的 ufuncs 引发的错误;此外,让“除以零”和其他数学错误产生警告,而不是提前退出函数
PR #1445: 支持部分花式索引
PR #1454: 支持“外部”CFFI模块
PR #1442: 改进数组索引以支持更多种类的基本切片
PR #1409: 支持显式的CUDA内存栅栏
PR #1435: 添加对 vectorize() 和 guvectorize() 的 HSA 支持
PR #1432: 实现 numpy.nonzero() 和 numpy.where()
PR #1416: 添加对 CUDA 的 vectorize() 和 guvectorize() 支持,这些功能最初在 NumbaPro 中提供。
PR #1424: 支持就地数组操作符
PR #1414: Python 3.5 支持
PR #1404: 添加最初在 NumbaPro 中提供的并行 ufunc 功能
PR #1393: 实现数组和列表的排序
PR #1415: 添加函数以估计CUDA内核的占用率
PR #1360: JIT 缓存现在存储编译后的对象代码,从而实现更大的速度提升。
PR #1402: 修复Linux下ARMv7 (armv7l) 架构的问题
PR #1400: 添加最初在 NumbaPro 中提供的 cuda.reduce() 装饰器
修复:
PR #1483: 允许 np.empty_like() 及其同类函数在非连续数组上使用
问题 #1471: 允许缓存 IPython 中定义的 JIT 函数
PR #1457: 修复布尔数组的扁平索引
PR #1421: 允许在不显式输出情况下,对非连续数组调用 Numpy ufuncs
问题 #1411:修复解包包含由 Numba 分配的数组的元组时发生的崩溃
问题 #1394: 允许统一 range_state32 和 range_state64
问题 #1373: 修复布尔列表上的代码生成错误
版本 0.21.0
此版本引入了对AMD异构系统架构的支持,该架构允许CPU和GPU之间直接共享内存。其他主要增强功能包括对列表的支持以及引入了一个可选的编译缓存。
改进:
PR #1391: 为CUDA代码实现print()函数
PR #1366: 实现整数类型增强提案(NBEP 1)
PR #1380: 支持单参数的 type() 内置函数
PR #1375: 允许对列表和元组进行布尔值评估
PR #1371: 在CUDA模式下支持array.view()
PR #1369: 在 nopython 模式下支持命名元组
PR #1250: 实现 numpy.median()。
PR #1289: 从常规Python调用JIT编译函数时,加快调度速度
问题 #1226: 提高整数幂的性能
PR #1321: 文档支持CUDA的功能
PR #1345: HSA 支持
PR #1343: 在 nopython 模式下支持列表
PR #1356: 使 Numba 分配的内存对 tracemalloc 可见
PR #1363: 添加环境变量 NUMBA_DEBUG_TYPEINFER
PR #1051: 添加一个可选的、按函数编译的缓存
修复:
问题 #1372: 当涉及同一变量多次或一元运算符时,某些数组表达式在重写时会失败。
问题 #1385: 允许在函数中的任何位置声明 CUDA 局部数组
问题 #1285: 在 Numpy 归约函数中支持 datetime64 和 timedelta64
问题 #1332: 处理 EXTENDED_ARG 操作码。
PR #1329: 在对象模式中处理
in
运算符问题 #1322: 修复 Python 2 上的增强切片赋值
PR #1357: 修复某些负边界或步长值的切片问题。
版本 0.20.0
此版本更新了 Numba 以使用 LLVM 3.6 和 CUDA 7 进行 CUDA 支持。随着 CUDA 7 中平台弃用的更新,Numba 的 CUDA 功能不再支持 32 位平台。Windows 支持的最低版本为 Windows 7。
改进:
问题 #1203: 支持索引 ndarray.flat
PR #1200: 将 cgutils 迁移到 llvmlite
PR #1190: 支持更多数组方法: .transpose(), .T, .copy(), .reshape(), .view()
PR #1214: 简化 setup.py 并避免手动维护
PR #1217: 支持 datetime64 和 timedelta64 常量
PR #1236: 编译时重新加载环境变量
PR #1225: 生成的代码中各种速度改进
PR #1252: 在CUDA中支持cmath模块
PR #1238: 使用32字节对齐的分配器以优化AVX
PR #1258: 支持 numpy.frombuffer()
PR #1274: 使用 TravisCI 容器基础设施以减少等待时间
PR #1279: 微优化调用分派中的重载解析
问题 #1248: 当返回类型统一失败时,改进错误信息
修复:
问题 #1131: 处理 np.conjugate() 和 np.arccos() 中的负零
问题 #1188: 修复慢速数组返回
问题 #1164: 避免在关闭时来自CUDA上下文的警告
问题 #1229: 在数组中尊重可写标志
问题 #1244: 修复引用计数修剪过程中的错误
问题 #1251: 修复 Fortran 连续数组的局部左索引
问题 #1264: 修复数组表达式中的编译错误
问题 #1254: 修复生成数组对象时的错误
问题 #1276: 修复嵌套生成器的使用
版本 0.19.2
此版本修复了 pypi 上的源代码分发。唯一的更改在 setup.py 文件中。我们不计划为此版本提供 conda 包,因为对于 conda 用户来说,此版本本质上与 0.19.1 相同。
版本 0.19.1
问题 #1196:
修复由于Numba IR中冗余变量删除导致的double-free段错误 (#1195)
修复数组表达式重写过程中的使用后删除问题
版本 0.19.0
此版本在 Numba 运行时中引入了内存管理,允许在 Numba 编译的函数内部分配新数组。此外,还对 ufunc 基础设施进行了重构,并增加了一个优化过程,将级联数组操作折叠成一个高效的循环。
警告
支持所有编译器目标的Windows XP和Vista以及支持CUDA编译器目标的32位平台(Win/Mac/Linux)已被弃用。在Numba的下一个版本中,支持的Windows最旧版本将是Windows 7。CPU编译将继续在32位Linux和Windows平台上得到支持。
已知问题:
由于内存管理带来的额外开销,非常短的
nopython
函数中存在一些性能退化。我们将在未来的版本中努力减少这种开销。
特性:
问题 #1181: 在文档中添加一个常见问题解答部分。
问题 #1162: 支持在 Numpy 数组上使用
cumsum()
和cumprod()
方法。问题 #1152: 支持
*args
参数传递风格。问题 #1147: 允许将字符序列作为参数传递给即时编译的函数。
问题 #1110: 数组表达式的快捷去森林化和循环融合。
问题 #1136: 支持各种 Numpy 数组构造函数,例如 numpy.zeros() 和 numpy.zeros_like()。
问题 #1127: 添加一个在 CPU 上运行的 CUDA 模拟器,通过设置 NUMBA_ENABLE_CUDASIM 环境变量启用。
问题 #1086: 允许从
nopython
函数中调用标准 Numpy ufuncs 而不需要显式的输出数组。问题 #1113: 在调用 numpy.empty() 及相关函数时支持关键字参数。
问题 #1108:支持 Numpy 数组的
ctypes.data
属性。问题 #1077:
nopython
模式下数组分配的内存管理。问题 #1105: 支持调用一个接受 ctypes.py_object 参数的 ctypes 函数。
问题 #1084: 环境变量 NUMBA_DISABLE_JIT 禁用了
@jit
函数的编译,而是在调用时进入 Python 解释器。这使得调试多个 jitted 函数变得更加容易。问题 #927: 允许没有输出数组的广义函数。
问题 #1097: 支持元组之间的比较。
问题 #1075: 现在可以从
nopython
函数中调用 Numba 生成的 ufuncs。问题 #1062:
@vectorize
现在允许省略签名,并且会在运行时编译所需的特化(类似于@jit
的做法)。问题 #1027: 支持 numpy.round()。
问题 #1085: 允许从JIT编译的函数中返回一个字符序列(从结构化数组中获取)。
修复:
问题 #1170: 确保
ndindex()
,ndenumerate()
和ndarray.flat
在生成器内部正常工作。问题 #1151: 禁止解包大小错误的元组。
问题 #1141: 在 setup.py 中指定安装依赖。
问题 #1106: 当提升的循环没有为函数尾部生成任何输出值时,循环提升将失败。
问题 #1103: 修复当使用多个数组布局调用JIT编译函数时对某些输入的错误处理。
问题 #1089: 修复 range() 函数处理大无符号整数的问题。
问题 #1088: 从 conda 构建配方中安装入口点脚本 (numba, pycc)。
问题 #1081:常量结构化标量现在可以正常工作。
问题 #1080: 修复布尔值自动提升为整数的问题。
版本 0.18.2
错误修复:
问题 #1073: 修复了HTML注释缺少模板文件的问题
问题 #1074: 修复了由于 NVVM API 不匹配导致的 Windows 机器上的 CUDA 支持问题
版本 0.18.1
版本 0.18.0 尚未正式发布。
此版本移除了旧的已弃用且未文档化的 argtypes
和 restype
参数,这些参数曾用于 @jit
装饰器。函数签名应始终作为第一个参数传递给 @jit
。
特性:
问题 #960:为JIT编译的函数添加 inspect_llvm() 和 inspect_asm() 方法:它们分别输出编译函数的LLVM IR和本地汇编源代码。
问题 #990: 允许在
nopython
模式下将元组作为参数传递给即时编译的函数。问题 #774: 在
nopython
模式下支持两个参数的 round() 函数。问题 #987: 在 nopython 模式下支持 math 模块中缺失的函数: frexp(), ldexp(), gamma(), lgamma(), erf(), erfc()。
问题 #995: 改进 Python 3 上 round() 函数的代码生成。
问题 #981: 在
nopython
模式下支持来自 random 和 numpy.random 模块的函数。问题 #979: 添加 cuda.atomic.max()。
问题 #1006: 改进异常的引发和报告。现在允许在
nopython
模式下使用错误消息引发异常。问题 #821: 允许将 ctypes 和 cffi 定义的函数作为
nopython
函数的参数。问题 #901: 允许
@jit
使用多个显式签名。签名必须以列表形式传递,如同@vectorize
一样。问题 #884: 当使用错误类型调用 JIT 编译函数时,提供更好的错误信息。
问题 #1010: 由于数据模型的重构,CUDA 参数的编组变得更简单和更快。
问题 #1018: 支持 Numpy 结构化类型中的标量数组。
问题 #808:将 Numba 导入时间减少一半。
问题 #1021: 在
nopython
模式下支持缓冲区协议。提供缓冲区的对象,如bytearray
、array.array
或memoryview
支持类似数组的操作,如索引和迭代。此外,memoryview
对象上的一些标准属性也得到了支持。问题 #1030: 在 Numpy 结构化数组中支持嵌套数组。
问题 #1033: 为 CUDA 内核实现 inspect_types()、inspect_llvm() 和 inspect_asm() 方法。
问题 #1029: 支持使用 CUDA 的 Numpy 结构化数组。
问题 #1034: 在 nopython 和 object 模式下对生成器的支持。
问题 #1044: 在调用 Numba 编译的函数时支持默认参数值。
问题 #1048: 允许从CUDA函数调用Numpy标量构造函数。
问题 #1047: 允许使用单个整数对多维数组进行索引,以获取视图。
问题 #1050: 支持元组上的 len()。
问题 #1011: 恢复 HTML 注释。
修复:
问题 #977: 赋值优化过于激进。
问题 #561: 在 Python 3 中,单参数的 round() 现在返回一个 int。
问题 #1001: 修复了一个不太可能的错误,即两个具有相同名称和 id() 的闭包会编译为相同的 LLVM 函数名称,尽管闭包值不同。
问题 #1006: 修复当一个JIT编译的函数被释放时的引用泄漏。
问题 #1017: 更新 README 中关于 CUDA 的说明。
问题 #1008: 生成更短的 LLVM 类型名称以避免 CUDA 导致的段错误。
问题 #1005: 当从对象模式引发异常时,正确清理引用。
问题 #1041: 修复 Numba 与第三方库 “future” 之间的不兼容性。
问题 #1053: 修复 CUDA 共享数组的大小属性。
版本 0.17.0
此版本的主要重点是对文档进行了重写。新的文档结构更加合理,并且对Numba的功能和API进行了更详细的介绍。可以在 https://numba.pydata.org/numba-doc/dev/index.html 在线找到。
特性:
问题 #895: LLVM 现在可以在
nopython
模式下内联嵌套函数调用。问题 #863: CUDA 内核现在可以推断其参数的类型(类似于“autojit”)。
问题 #833: 在
nopython
模式下支持 numpy.{min,max,argmin,argmax,sum,mean,var,std}。问题 #905: 在
@jit
装饰器中添加一个nogil
参数,以在nopython
模式下释放 GIL。问题 #829: 为
@vectorize
和@guvectorize
添加一个identity
参数,以设置 ufunc 的标识值。问题 #843:允许使用空元组对 0-d 数组进行索引。
问题 #933: 允许在调用 Numba 编译函数时使用命名参数,而不仅仅是位置参数。
问题 #902: 在
nopython
模式下支持 numpy.ndenumerate()。问题 #950: 现在默认启用 AVX,但在 Sandy Bridge 和 Ivy Bridge CPU 上除外,在这些 CPU 上它可能会产生比 SSE 更慢的代码。
问题 #956: 支持结构化类型的常量数组。
问题 #959: 不再允许使用浮点数对数组进行索引。
问题 #955: 添加对3D CUDA网格和线程块的支持。
问题 #902: 在
nopython
模式下支持 numpy.ndindex()。问题 #951: Numpy 数字类型 (
numpy.int8
等) 可以在nopython
模式下用作类型转换的构造函数。
修复:
问题 #889: 修复 CUDA 后端的
NUMBA_DUMP_ASSEMBLY
。问题 #903: 修复在 Windows 下使用 ctypes 调用 stdcall 函数的问题。
问题 #908: 允许从多个线程同时进行延迟编译。
问题 #868: 当标量与非标量相乘时,错误信息不正确。
问题 #917:允许在签名中使用 datetime64 和 timedelta64 进行矢量化(尽管仅限于无单位的值,因为这是 Numpy 的限制)。
问题 #431: 允许重载 cuda 设备函数。
问题 #917: 打印出在对象模式 ufuncs 中发生的错误。
问题 #923: Numba 编译的 ufuncs 现在继承了原始 Python 函数的名称和文档。
问题 #928: 修复嵌套调用中的布尔返回值。
问题 #915: 当
@jit
使用带有参数类型不匹配的显式签名调用时,现在会引发错误。问题 #784: 修复 NaN 的真值。
问题 #953:修复在多个函数(内核或设备)中使用共享内存的问题。
问题 #970: 修复在 CentOS5 32 位系统上的一个不常见的双精度到 uint64 转换错误(C 编译器问题)。
版本 0.16.0
此版本包含了一个重大重构,以从 llvmpy 切换到 llvmlite 作为我们的代码生成后端。这一切换是必要的,以调和 LLVM 3.5(需要 C++11)和 Python 扩展(在 Windows 上需要特定编译器版本)的不同编译器要求。作为额外的好处,我们发现使用 llvmlite 使编译速度提高了两倍!
其他主要变化:
numpy 结构化数组的更快分派
优化的 array.flat()
改进的 CPU 特性选择
修复宏展开代码中的常量元组回归问题
已知问题:
由于在操作未对齐的 NumPy 数组时性能下降,AVX 代码生成默认仍处于禁用状态。我们希望将来能有解决方案。
在*极其*罕见的情况下,LLVM 3.5 的 已知问题 代码生成可能会导致64位Linux系统上的ELF重定位错误。
版本 0.15.1
(这是一个修复错误的版本,它在0.15版本宣布之前就已经取代了它。)
修复:
Windows XP 上缺少 __ftol2 的解决方法。
不要提升包含break语句的循环进行编译。
修复了在需要向封闭作用域返回多个值时循环提升中的一个错误。
处理循环提升的情况,当循环计数为零时需要更新累加器。
版本 0.15
特性:
支持 Python
cmath
模块。(NumPy 复数函数已经支持。)对非复数支持
.real
、.imag
和.conjugate()
。添加对
math.isfinite()
和math.copysign()
的支持。兼容模式:如果启用(默认关闭),对象模式编译失败时将回退到使用函数的纯Python实现。
实验性 支持使用 cloudpickle 序列化 JIT 函数。
对象模式中的循环优化现在适用于在循环后访问的修改标量的循环,例如累加器。
@vectorize
函数可以在对象模式下编译。Numba 现在可以使用 Windows 平台上的 Visual C++ Compiler for Python 2.7 进行构建。
CUDA JIT 函数可以通过工厂函数返回,闭包中的变量作为常量冻结。
在 nopython 模式下支持“可选”类型,允许
None
作为有效值。
修复:
如果 nopython 模式编译因任何原因失败,自动回退到对象模式(除非将 nopython=True 传递给 @jit),而不是引发异常。
允许从在对象模式下编译的函数中返回函数对象。
修复了一个链接问题,该问题导致在Windows上使用较慢的平台数学函数(如
exp()
),从而导致与NumPy相比性能下降。min()
和max()
在 nopython 模式下不再接受标量参数。修复了JIT函数多个编译版本之间类型提升处理的问题。调度器现在将编译一个新版本来解决这个问题。(问题 #776)
修复32位Linux上float32到uint64的转换错误。
修复类型推断以允许强制转换返回类型。
允许一维
cuda.shared.array
和cuda.local.array
的形状为一个单元素元组。更正确地处理带符号的零。
在Windows上添加``atan2()``的自定义实现,以正确处理特殊情况。
消除了在传输 CUDA 数组时使用的页锁定暂存区域处理中的竞争条件。
修复导致性能不稳定的非确定性类型统一问题。(问题 #797)
版本 0.14
特性:
在 nopython 模式下,几乎所有 Numpy 数学函数(包括比较、逻辑、位运算以及一些之前缺失的浮点函数)的支持。
Numpy 的 datetime64 和 timedelta64 数据类型在 Numpy 1.7 及更高版本中支持 nopython 模式。
在 nopython 模式下对复数上的 Numpy 数学函数的支持。
ndarray.sum() 在 nopython 模式下受支持。
当在 Numpy 数学函数中使用不支持的类型时,提供更好的错误信息。
在环境中设置 NUMBA_WARNINGS=1 以查看哪些函数是在对象模式下编译的,哪些是在 nopython 模式下编译的。
在 nopython 模式下添加对双参数 pow() 内置函数的支持。
新的开发者文档,描述了Numba的工作原理以及如何添加新类型。
GPU 上对 Numpy 记录数组的支持。(注意:dtype 字段的错误对齐将导致异常被抛出。)
GPU 设备数组上的切片。
GPU 对象可以用作 Python 上下文管理器,以在代码块中选择活动设备。
GPU 设备数组可以绑定到一个 CUDA 流。所有后续操作(如内存复制)将在这个流上排队,而不是默认流。这可以防止与其他流不必要的同步。
修复:
已禁用生成 AVX 指令,以避免在调用可能使用 SSE 指令的外部数学函数时出现性能问题,尤其是在 OS X 上。
JIT 函数在不再可访问时可以被垃圾收集器移除。
各种其他的引用计数修复,以防止内存泄漏。
修复了当输入参数超出范围时异常的处理。
防止 autojit 函数在调用时使用不同数值类型进行不安全的数值转换。
修复访问不可哈希的全局值时出现的编译错误。
在IPython Notebook中优雅地处理无法启用faulthandler的失败情况。
修复了一个导致循环提升失败的错误,如果循环位于
else
块内。修复了在Linux上多线程程序中选择CUDA设备的问题。
pow()
函数(以及**
操作)应用于两个整数时,现在返回整数而不是浮点数。使用对象dtype的Numpy数组在autojit中不再引发异常。
尝试写入全局数组将导致编译回退到对象模式,而不是尝试并失败于 nopython 模式。
range()
可以处理所有负数参数(例如:range(-10, -12, -1)
)
版本 0.13.4
特性:
在对象模式下设置和删除属性
增加了对支持和不支持的 numpy ufuncs 的文档说明
对一维 numpy 数组切片的赋值
闭包变量和函数可以在对象模式中使用
模块中的所有数值全局值都可以在JIT编译的代码中用作常量
对 enumerate() 中的 start 参数的支持
就地算术运算(+=、-= 等)
在 nopython 模式下直接迭代一维 numpy 数组(例如“for x in array: …”)
修复:
支持NVIDIA计算能力5.0的设备(如GTX 750)
当使用 bool_ 作为返回类型时,矢量化不再崩溃/报错
当在JIT函数中使用globals()时,返回正确的字典
修复在对象中创建字典字面量时的崩溃错误
如果在导入时 llvmpy 版本过旧,报告更详细的信息错误消息
暂时禁用 pycc –header,该功能生成了不正确的函数签名。
版本 0.13.3
特性:
在 nopython 模式下对 enumerate() 和 zip() 的支持
将JIT函数的LLVM优化级别提升至-O1,在某些情况下启用编译代码的自动矢量化
在 nopython 模式下对元组进行迭代和解包
对象模式下对字典和集合(Python >= 2.7)字面量的支持
修复:
JIT 函数与原始函数具有相同的 __name__ 和 __doc__。
对不同平台上JIT编译代码中的Python数学函数的数据类型和行为进行了大量改进,以更好地匹配。
导入 Numba 时,如果存在 CUDA 驱动程序但无法初始化,将不再抛出异常。
guvectorize 现在正确支持带有标量参数的函数。
CUDA 驱动程序是延迟初始化的
版本 0.13.2
特性:
@vectorize ufunc 现在可以为单位步长数组生成 SIMD 快速路径
添加了 cuda.gridsize
添加了初步的异常处理(引发异常类)
修复:
UNARY_POSITIVE
处理闭包和动态生成的函数
全局 None 值
版本 0.13.1
特性:
对CUDA数组切片的初步支持
修复:
当系统具有不兼容的CUDA驱动时,间接修复numbapro
修复 numba.cuda.detect
导出 numba.intp 和 numba.intc
版本 0.13
特性:
在 numba.cuda 中开源 NumbaPro CUDA python 支持
添加对 ufunc 数组广播的支持
为 ufuncs 添加对混合输入类型的支持
添加对从 jitted 函数返回元组的支持
修复:
修复 Python2 中存储切片字节码的处理
原地减法修复
修复 pycc 以便正确发出头文件
允许向量化在带有 jit 装饰器的函数上工作
版本 0.12.2
修复:
在 nopython 模式下改进的 NumPy ufunc 支持
杂项错误修复
版本 0.12.1
此版本修复了用户报告的0.12版本中的许多回归问题。此版本包含一个新的循环提升机制,该机制针对nopython模式编译的某些循环模式进行了专门化。这避免了直接支持堆分配和其他非常动态的操作。
改进:
在对象模式代码中添加循环提升–在nopython模式下编译循环。这允许函数分配NumPy数组并使用Python对象,同时函数中的紧密循环仍然可以在nopython模式下编译。任何紧密循环使用的数组应在循环进入之前创建。
修复:
添加对“math”模块大部分函数支持
修复…else 处理
添加对内置 round() 的支持
修复三元 if…else 支持
恢复 “numba” 脚本
修复一些布尔表达式的问题
添加对更多 NumPy ufuncs 的支持
版本 0.12
版本 0.12 包含了对编译器的一次重大重构。此次重构的主要目标是简化代码库,为后续工作打下更好的基础。次要目标是提高最坏情况下的性能,确保对象模式下编译的函数永远不会比纯 Python 代码运行得更慢(这在旧代码库的几个情况下是一个问题)。此次重构仍在进行中,需要进一步测试。
主要改进:
由于性能和维护原因,对编译器进行了重大重构
当原生模式失败时,更好地回退到对象模式
在对象模式下提高了最坏情况下的性能
numba 的公共接口已经稍微改变。目的是使其更简洁和更合理:
jit 装饰器已被修改,因此可以在没有签名的情况下调用。在没有签名的情况下调用时,它的行为与旧的 autojit 相同。为了支持这种方法,autojit 已被弃用。
Jitted 函数现在可以被重载。
添加了一个“njit”装饰器,其行为类似于“jit”装饰器,但带有nopython=True。
numba.vectorize 命名空间已不存在。vectorize 装饰器将位于主 numba 命名空间中。
在主 numba 命名空间中添加了一个 guvectorize 装饰器。它类似于 numba.vectorize,但接受一个维度签名。它生成 gufuncs。这是已被弃用的 GUVectorize gufunc 工厂的替代品。
主要回归问题(将在未来的版本中修复):
在 nopython 模式下不支持创建新的 NumPy 数组
在 nopython 模式下不支持返回 NumPy 数组
在 nopython 模式下不支持 NumPy 数组切片
在 nopython 模式下,不支持列表和元组
string, datetime, cdecimal, 和 struct 类型尚未实现
在 nopython 模式下不支持扩展类型(类)
不支持闭包
不支持 raise 关键字
递归在 nopython 模式下不支持
版本 0.11
对 NumPy 日期时间类型的实验性支持
版本 0.10
注释工具 (./bin/numba –annotate –fancy) (感谢 Jay Bourque)
开源的 prange
对 raise 语句的支持
可插拔数组表示
对 enumerate 和 zip 的支持(感谢 Eugene Toder)
更好的字符串格式化支持(感谢 Eugene Toder)
内置函数 min()、max() 和 bool()(感谢 Eugene Toder)
修复了一些代码重新加载的问题(感谢 Björn Linse)
识别 NumPy 标量对象(感谢 Björn Linse)
版本 0.9
改进的数学支持
开源的通用ufuncs
改进的数组表达式
版本 0.8
- 支持自动即时编译的类
继承尚未支持
pycc 的 Python 3 支持
- 允许检索 ctypes 函数包装器
因此支持检索指向函数的指针
修复了数组切片视图的内存泄漏问题
版本 0.7.2
正式支持 Python 3(Python 3.2 和 3.3)
对内部函数和指令的支持
各种错误修复(参见 https://github.com/numba/numba/issues?milestone=7&state=closed)
版本 0.7.1
各种错误修复
版本 0.7
开源的单线程 ufunc 向量化器
开源的 NumPy 数组表达式编译
开源的快速 NumPy 数组切片
实验性 Python 3 支持
- 支持类型化容器
类型化的列表和元组
对对象迭代的支持
支持对象比较
- 初步的 CFFI 支持
对CFFI函数的Jit调用(传递给autojit函数)
TODO: 识别 ffi_lib.my_func 属性
改进了对 ctypes 的支持
允许通过类属性声明扩展属性类型
- Python 中的类型转换支持
无论是否使用 numba 编译,都能获得相同的语义
- 递归支持
对于jit方法和扩展类
允许将 jit 函数作为 C 回调
更友好的错误报告
内部改进
各种错误修复
版本 0.6.1
支持位操作
版本 0.6
Python 2.6 支持
- 可编程输入
允许用户为外部代码添加类型推断
- 更好的 NumPy 类型推断
outer, inner, dot, vdot, tensordot, nonzero, where, 二元ufuncs + 方法 (reduce, accumulate, reduceat, outer)
- 基于类型的别名分析
严格别名支持
从Python调用时,更快的autojit调度
通过数据和步幅预加载实现更快的数值循环
对象转换中的整数溢出和下溢检查
使 Meta 依赖项可选
版本 0.5
- 基于SSA的类型推断
允许变量重用
允许在词法定义之前引用变量
支持多重比较
模板类型支持
列表推导式
指针支持
许多错误修复
添加了用户文档
版本 0.4
版本 0.3.2
添加对对象算术的支持(问题 56)。
Bug 修复 (issue 55)。
版本 0.3
将默认编译方法更改为 ast
增加了对跨模块链接的支持
增加了对闭包的支持(可以即时编译内部函数并返回它们)(参见 examples/closure.py)
添加了对 dtype 结构的支持(可以通过属性访问结构中的元素)(参见 examples/structures.py)
增加了对扩展类型(numba 类)的支持(参见 examples/numbaclasses.py)
增加了对通用Python代码的支持(使用nopython来在使用了Python C-API时抛出错误,以避免因缺乏实现而默认使用通用Python导致的意外缓慢)
修复了许多错误
增加了对检测数学运算的支持。
添加了 python 和 nopython 上下文
增加了更多示例
许多功能仍需记录。查看示例和测试以获取更多信息。
版本 0.2
添加了编译的抽象语法树方法
从 numba 命名空间中移除了 d, f, i, b(使用 f8, f4, i4, b1)
将函数更改为 autojit2
添加了 autojit 函数来装饰对函数的调用,并使用变量的类型来创建编译版本。
将 jit 和 autojit 函数的参数关键字更改为 restype 和 argtypes,以与 ctypes 模块保持一致。
添加了 pycc – 一个将 Python 编译为共享库的编译器