1
我想使用weave.blitz改善以下numpy的代码的性能:闪电代码产生不同的输出
def fastIteration(self):
g = self.grid
nx,ny = g.ux.shape
uxold = g.old_ux
ux = g.ux
ux[0:,1:-1] = uxold[0:,1:-1] + ReI* (uxold[0:,2:] - 2*uxold[0:,1:-1] + uxold[0:,0:-2])
g.setBC()
g.old_ux = ux.copy()
在此代码g是计算网格。它由两个不同的领域ux和uxold组成。旧的只是用于临时存储变量。在完整的代码中,大约95%的运行时间用于fastIteration方法,因此即使简单的性能增益也会显着减少执行此代码的时间。
的numpy的方法的输出看起来好像:
由于这个代码是我的瓶颈,我想用编织热捧提高速度。这种方法看起来像:
def blitzIteration(self):
### does not work correct so far
g = self.grid
nx,ny = g.ux.shape
uxold = g.old_ux
ux = g.ux
expr = "ux[0:,1:-1] = uxold[0:,1:-1] + ReI* (uxold[0:,2:] - 2*uxold[0:,1:-1] + uxold[0:,0:-2])"
weave.blitz(expr, check_size=0)
g.setBC()
g.old_ux = ux.copy()
然而,这并不产生正确的输出:(fixed转载,提交并有一个关于实际错误的详细信息那里)
@jordeca:这里是: '$蟒蛇blitz_bug.py' '$蟒蛇-c “进口SciPy的;打印SciPy的.__版本__”' 0.13.0.dev-639ef30 '$蟒蛇 - c“import numpy; print numpy .__ version __”' 1.7.1 '$ uname -a' Linux ratatoskr 2.6.32-45-generic#104-Ubuntu SMP Tue Feb 19 21:20:09 UTC 2013 x86_64 GNU/Linux – 2013-04-26 21:58:43
@ Zhenya谢谢! – jorgeca 2013-04-27 14:13:22