基于SPICE
(如ngspice
)的电路仿真软件使用Newton-Raphson方法求解非线性方程组,该方程组对包含非线性元件(如二极管或MOSFET晶体管)的电路进行建模。在牛顿法的每次迭代中,大部分时间都花在了以下两部分上:
- 设备模型评估:加载稀疏矩阵和 rhs的根据电路的当前工作点具有适当的值。
- 矩阵求解:求解
如文献所示,为了加快模拟速度,已努力将上述两个部分并行化。
几天前,我想到了一个以粗粒度方式加速模拟的想法,但我不确定这是否是一个可行的想法,或者是否已经有研究/实施。让我在下面解释一下我的想法,并请提供建议或指示。非常感谢!
这个想法很简单(基于许多计算资源可用的假设):在每次迭代中,我们尝试多个 () 并行候选解,即版本并行加载/求解;如果没有收敛,我们从下一次迭代的解决方案(不知何故,例如,简单地使用候选和解决方案之间的欧几里得距离作为标准)。再次,下一次迭代生成基于从前一次迭代中选择的候选解决方案(例如,只需在方向上选择不同的步长),并继续该过程,直到它收敛或达到最大迭代次数。
希望是:
- 当我们尝试每次迭代候选,达到收敛的迭代次数最有可能减少,从而加快仿真速度。
- 随着我们尝试更多的候选者,解决方案可能比从牛顿方法获得的局部解决方案更“全局”。
下面简单描述一下上面的思路: