python - guvectorize 在 nopython 模式下不解析类型
问题描述
我正在为 numba 错误而苦苦挣扎
Untyped global name 'is_a_subset': Cannot determine Numba type of <class 'numba.np.ufunc.gufunc.GUFunc'>
这通常意味着我摸索并使用了 numba 不支持的方法。以下代码失败。
@guvectorize("(n),(n)->(n)",nopython=True)
def is_a_subset(x,y,out):
out[:]=np.array([item in x for item in y])
@njit()
def test(x,y,z):
is_a_subset(x,y,z)
return z.mean()
x=np.array([[1,2,3],[3,2,1]])
y=np.array([[3,6,1],[1,2,3]])
z = np.empty_like(x)
test(x,y,z)
但是,在测试功能上删除 njit 会使一切正常。
def test(x,y,z):
is_a_subset(x,y,z)
return z.mean()
为什么在 no-python 模式下 numba 难以解析类型?
我也试过没有不同的结果
@guvectorize(["f8[:],f8[:],f8[:]"],"(n),(n)->(n)",nopython=True)
def is_a_subset(x,y,out):
out[:]=np.array([item in x for item in y])
解决方案
我正在使用 Numba 0.53.1 并且可以复制此错误。这篇关于Numba 0.53 中的动态调度更新的博客最后提到了这一点(强调添加):guvectorize
在未来,我们希望使这些
@guvectorize
能力更接近@vectorize
那些能力。例如,目前无法从 jited (@jit
) 函数中调用 guvectorize 函数。
有一个类似的未解决问题,vectorize
但它表明@vectorize
可以在函数中调用@jit
函数,只是它仅限于默认的target = "cpu"
.
推荐阅读
- sql - 如何更改 SQL 查询中的时区?
- javascript - Javascript 逻辑未按预期流动
- android - 没有更新建议的复合构建依赖项
- c++ - C ++中未排序数组中缺少元素
- python - Python-3、Pandas datareader 和 Yahoo 错误 RemoteDataError:无法读取 URL
- python - xlrd 没有属性 sheet_by_name
- python - Selenium 找不到单选按钮
- c - 静态库代码对驻留在应用程序代码中的外部结构使用了错误的地址
- facebook - Facebook Graph API 没有返回测试见解的数据
- spring-boot - EmbeddedKafka Spring 启动测试仅在 Github 操作上失败,但在本地失败