如何在字符串定义的函数中缓存numba函数

时间:2019-05-27 09:23:02

标签: caching numba

我正在建立一个框架来求解由方程组成的模型-很多。这是通过使用计算函数的高斯-塞德尔方法完成的。

在字符串中定义了一个返回计算函数的工厂函数。执行并返回工厂功能。

工厂功能返回计算功能。

计算函数用于求解方程。

使用@jit可以正常工作。但是,对于长型号,numba需要相当长的时间。因此,使用cache = True可能会很有用。

但是返回错误:

RuntimeError: cannot cache function 'make_los.<locals>.los0': no locator available for file '<string>'

我尝试设置NUMBA_CACHE_DIR

但这无济于事

显示问题的代码示例。

# -*- coding: utf-8 -*-
"""
 Test of Numba cache 

"""
import os
from numba import jit

os.environ["NUMBA_CACHE_DIR"] = "."
make = '''\
def make_los():
    print('compile')
    @jit("f8(f8)",cache=True)
    def los0(a):
         return   42.
    return los0
'''
exec(make,globals())  # creates the los function
solve_funk = make_los()
print(solve_funk(2.))

0 个答案:

没有答案