在一个python文件A中import另一个python文件B,B中写了很多由用户自定义的taichi函数,这些函数在A中被调用。请问在import B的时候就已经针对B中的taichi函数进行了编译吗?还是等到A中调用B中的kernel函数时临时编译调用的函数呢?
具体问题是这样的我写了两个python文件time_iter.py和 user_defined_functions.py,后一个python文件是作为插件使用的,在程序运行时需要频繁更改模型,因而自定义的taichi函数被import 进入time_iter中再运行。这些kernel函数中,都使用了ti.types.ndarray()类型的形参,相当于从python域传递了numpy数组进去,这个数组的长度不是固定的,需要在运行时确定,直到调用这些kernel函数的时候,这些数组才确定下来。
然后运行程序的时候一直报错,调用函数的时候taichi无法找到函数的代码。后来我不使用import方法,而是直接把user_defined_functions.py中的函数在time_iter中定义了,在当前文件中调用,就不会报错了。我个人猜测错误的原因是import的时候运行到@ti.kernel时就把函数编译了,然而当时函数所需要的数组类型的形参还没有python值,无法确定其长度,可能编译中出现了某些问题,等到time_iter调用的时候形参不匹配就找不到函数了。(taichi函数支持同名不同参数的重载吗)
我是新人,不太清楚怎么把代码贴进来,还望大佬们多多指教!