更新: 看起来,.sort()在使用JIT时,对于ndarrays根本不支持? 我的ndarray如下所示,我总是在函数中任何应该是jittet的地方有一个.sort()时得到numba错误? 真的没有办法在jittet函数中对数据数组进行排序吗
我已经为如何使用Numba/JIT编译代码而苦苦挣扎了两天(我认为它被称为nopython模式):
import numpy as np
Nmax=10000
T=50000
MyObject = np.dtype([('x','i4'),('y','i1'),('v','i1'),('vmax','i1'),('b','i1')])
for N in range(Nmax,100):
A = np.zeros(N, dtype=MyObject)
# Then A is filled with initial values
# ...
e,f,g=function(A,N)
@jit
def function(A,N):
for t in range(T):
Lane = np.array([(A[np.where(A['y']==0)]), (A[np.where(A['y']==1)])])
Lane.sort(order='x')
B = np.array(Lane['b'])
V = np.array(Lane['v'])
for n in range(N):
# do some calculation here
# ...
A=Lane.flatten()
return #...some calculated values for e,f,g
如果没有@jit decorator,它运行得很好,到目前为止产生了所有正确的结果,但实际上比使用@jit的早期版本慢1000倍(甚至更多)。(通常编译运行需要5-6分钟,如果没有@jit,我已经让它运行了12个小时,甚至不到5%)
我可能不使用a.flatte()命令,但特别是如果我不能使用ndarray.sort(),我将不得不重新考虑我的整个(现在正在运行的)概念,几乎从头开始整个项目
目前没有回答
相关问题 更多 >
编程相关推荐