想请教一下大家,我在使用taichi的自动微分ti.ad.Tape的过程中,发现它求解梯度的时间很长,一般有什么方法可以缩减呢?
代码比较复杂,其中在并行的for循环中有需要串行的for循环,里面还有许多if的条件判断。比如
for i in range(N):
...
ti.loop_config(serialize=True)
for j in range(10):
if ...
if ...
elif ...
if ...
还需要运行一些数值计算的函数。
在去掉内部的串行for之后求解速度非常快,但在逐步加入if条件的内容,求解梯度的时间会呈线性增长,最终导致整个代码运行时间非常长,迭代时间很久。