sentaurus提供三个求解器,Super、ParDiSo、ILS。
其中,Super和ParDiSo是直接求解器,ILS是迭代式求解器。
一般情况,仿真中计算量最大的是解线性方程组,如下所示:
矩阵A的阶数与仿真中的网格点相关,网格点越多,阶数越高。
所谓直接求解器,是基于方程组的直接消项的算法,直接消项的原理是将方程的系数矩阵简化为下三角矩阵,再对方程进行求解。不需迭代,直接得到方程组的解,对于非病态问题,速度最快、稳定性最好,对于病态问题,还能尝试求解。
Super和ParDiSo都是直接求解器,其中,Super求解速度最快,不支持并行计算,ParDiSo求解速度稍慢,支持并行计算。因此,对于网格点较少(一般小于10k)的器件,优选Super求解器;对于网格点介于10k-50k的器件,优选ParDiSo求解器,并通过并行计算加速仿真。
直接求解器求解过程明确,按部就班的求解,所以鲁棒性较好。直接求解器的缺点是内存占用大,随着网格点数量增多,一方面内存占用增加,甚至超过硬件内存大小导致仿真失败,另一方面数据读取的载入时间成了仿真瓶颈。
迭代求解器是通过迭代的方法求解方程组,先从一个初始值的x出发,通过梯度下降的方式迭代求解,直到收敛到一定容差范围内。该方法对内存占用小,对于大规模仿真,比直接求解器更节约时间,而且求解规模越大,节省的时间越多。一般情况,对于大于50k节点以上的仿真,就可以尝试使用ILS了。迭代求解器的求解有点“随缘”的感觉,所以收敛性和鲁棒性稍差。
math语句
Method= Super|ParDiSo|ILS (三选一)
Number_of_Threads= 并行线程数量 | maximum
A矩阵A的阶数与仿真中的网格点相关,网格点越多,阶数越高。所谓直接求解器,是基于方程组的直接消项的算法,直接消项的原理是将方程的系数矩阵简化为下三角矩阵,再对方程进行求解。不需迭代,直接得到方程组的解,对于非病态问题,速度最快、稳定性最好,对于病态问题,还能尝试求解。
Super和ParDiSo都是直接求解器,其中,Super求解速度最快,不支持并行计算,ParDiSo求解速度稍慢,支持并行计算。因此,对于网格点较少(一般小于10k)的器件,优选Super求解器;对于网格点介于10k-50k的器件,优选ParDiSo求解器,并通过并行计算加速仿真。
直接求解器求解过程明确,按部就班的求解,所以鲁棒性较好。直接求解器的缺点是内存占用大,随着网格点数量增多,一方面内存占用增加,甚至超过硬件内存大小导致仿真失败,另一方面数据读取的载入时间成了仿真瓶颈迭代求解器是通过迭代的方法求解方程组,先从一个初始值的x出发,通过梯度下降的方式迭代求解,直到收敛到一定容差范围内。
该方法对内存占用小,对于大规模仿真,比直接求解器更节约时间,而且求解规模越大,节省的时间越多。一般情况,对于大于50k节点以上的仿真,就可以尝试使用ILS了。迭代求解器的求解有点“随缘”的感觉,所以收敛性和鲁棒性稍差。
仿真速度
4. 简单总结一下
Super求解器不支持并行计算,鲁棒性好,速度快,内存占用较大,适合规模较小的仿真(10k以下)。虽不支持并行计算,但可通过设置“装配”的线程数,加速仿真;
ParDiSo求解器支持并行计算,适合网格规模适中的器件仿真(10k-50k),鲁棒性好,速度稍快,内存占用较大;
ILS求解器为迭代性求解器。对于小规模网格的器件,鲁棒性稍差、速度最慢、但是内存占用少。对于网格规模巨大的器件(在50k以上),ILS无论在速度还是在内存占用上,均有非常大的优势适合网格规模更大的器件仿真,而且规模越大,优势越大;
限制仿真速度的不仅是线程数量、还有线程之间的数据转移等,盲目的增加线程数量可能造成算力浪费,那些动不动就maxmium的同学请三思~
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !