2

我一直在使用 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 )

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

4

2 回答 2

1

原则上你有pycc,但截至今天(numba 0.17),API 不稳定

提前编译的 API 不稳定。喜欢冒险的用户仍然可以尝试pycc作为 Numba 的一部分安装的实用程序。

但是,熟练的读者可以从源本身中提取一些信息。

于 2015-03-23T12:41:10.790 回答
0

为此目的,提前编译(AOT)可能很繁重(我不需要每次都编译它)。只需使用 @jit(cache=True) 就足够了。

于 2022-02-26T14:48:20.190 回答