我如何编译numba python代码并存储它?

up9lanfz  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(162)

我一直在使用numba来加速一些for循环,得到了相当好的结果。与其让代码及时编译(这需要一些时间),我该如何预编译代码呢?
下面是一个例子:

import numba as nb
import numpy as np
import time.time()

Nk = 5
Nl = 6
Nx = 7
Ny = 8
A = np.random.rand(Nk, Nl, Nx, Ny)

@nb.jit(nopython=True)
def Loop( A, X, Y ):
    Nk = A.shape[0]
    Nl = A.shape[1]
    Nx = A.shape[2]
    Ny = A.shape[3]
    for ik in range(Nk):
        for il in range(Nl):
            for ix in range(Nx):
                for iy in range(Ny):
                    Y[ik, il] += A[ik, il, ix, iy]*X[ix,iy]
    return Y

Y = np.zeros([Nk, Nl])
X = np.random.rand(Nx, Ny)
Y = Loop( A, X , Y )

我想要的是以某种方式保存编译后的函数,这样我就不需要每次都编译它了。

plicqrtu

plicqrtu1#

原则上,您可以使用pycc,但从今天起(numba 0.17)the API is not stable
用于提前编译的API还不稳定。喜欢冒险的用户仍然可以尝试作为Numba的一部分安装的pycc实用程序。
然而,熟练的读者可以提取一些信息。

w46czmvw

w46czmvw2#

提前编译(AOT)对于这个目的来说可能太重了(我不需要每次都编译它),只要使用@jit(cache=True)就足够了。

相关问题