python - numpy.zeros() 是否允许正确的 numba 缓存?
问题描述
在函数中调用Numba 时不会缓存numpy.zeros()
。但是,缓存与numpy.zeros_like()
.
在函数中调用时,我不能让 numba 缓存numpy.zeros()
函数。当numpy.zeros()
被替换时,相同的函数被成功缓存numpy.zeros_like()
,并正确更改参数。
@jit('UniTuple(float64[:],4)(int32[:],int32[:],int32[:],int32[:],float64[:])',
nopython=True, parallel=True, cache=True, fastmath=True, nogil=True)
def fun_rec(a: np.ndarray, b: np.ndarray, m: np.ndarray, n: np.ndarray, x: np.ndarray):
l = int(len(x))
rec_num = np.zeros_like(x)
# not caching with rec_num = np.zeros(l)
rec_avg = np.zeros_like(x)
rec_err = np.zeros_like(x)
rec_fnd = np.zeros_like(x)
for i in range(l):
if rec_num[i] != 0:
continue
for j in prange(i + 1, l):
if (a[i] == m[j] and b[i] == n[j] and m[i] == a[j] and n[i] == b[j]):
avg = (x[i] + x[j]) / 2
err = abs(x[i] - x[j]) / abs(avg)
rec_num[i] = j + 1
rec_num[j] = i + 1
rec_avg[i] = avg
rec_avg[j] = avg
rec_err[i] = err
rec_err[j] = err
rec_fnd[i] = 1
rec_fnd[j] = 1
break
return(rec_num, rec_avg, rec_err, rec_fnd)
我期望 numba 能够按照文档中的描述进行支持,并且描述numpy.zeros()
之间没有区别。我想知道不正确的缓存是否与我的代码中可能出现的错误有关。numpy.zeros()
numpy.zeros_like()
解决方案
推荐阅读
- xcode - 如何安装和使用多个版本的 Xcode 命令行工具
- reporting-services - 更改 SSRS 中的分隔符
- swift - 直接传递getter时,Swift XCTAssertEqual(Float)失败
- node.js - 在 ExtendScript 中使用 npm 包
- html - 如何将 html 元素(div 或段落)放置在 2 个 boostrap 列的中心?
- c# - 使用 Graphics.DrawLine() 画圆
- sql - 使用 ORACLE 中的 CASE 语句了解 UPDATE 评估所有行
- javascript - 如何使用指向相关页面的 URL 获取类或 id 的内容
- java - 有没有办法让一个 for 循环为不同的用户输入返回不同的值?
- javascript - 从jQuery调用表单提交()时的无限循环