如何解决为什么在此Numba函数中未使用此变量?
我正在尝试使用Numba加速我的代码。我的代码使用了大量的numpy数组矩阵乘法,因此我想创建一个jit
版本。我知道jit
希望将其变量预先分配,所以我的功能是这样的:
@njit(parallel = True)
def jdot(a,b):
c = np.zeros((a.shape[0],b.shape[1]))
c = a.dot(b)
return c
但是我的IDE告诉我c
的第一个实例尚未使用。我这是怎么了?
编辑:
要添加一些信息:如果我删除了上面版本中的多余行并进行了速度测试,则得到的jit
版本比普通版本差。这表明我绝对不能正确使用Numba,并且我怀疑正确地预分配c
可能是解决方案-但就像我说的那样,我不确定如何。这是速度测试代码:
@jit(nopython = True,parallel = True)
def jdot(a,b):
c = np.dot(a,b)
return c
jdot(np.ones((4,5,)),np.ones((5,6))) #Compile ahead of test
t1 = timer()
testrange = 10^6
for i in range(testrange):
a = np.random.randn(4,5)
b = np.random.randn(5,6)
jdot(a,b)
t2 = timer()
for i in range(testrange):
a = np.random.randn(4,6)
a.dot(b)
t3 = timer()
Tratio = (t2-t1)/(t3-t2)
print(f"Timing Ratio is {Tratio}")
哪个产生Timing Ratio is 1.9013561547738118
该怎么办?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。