首页 理论教育 算法优化与程序提速技巧

算法优化与程序提速技巧

时间:2023-06-29 理论教育 版权反馈
【摘要】:相比较而言,刚度矩阵每行中却只有最多81个非零元,半带宽显得很大,这导致在按变带宽算法进行计算时存储需求与计算量都十分大。对这里所述的示例问题,存储需求达到了648590404约648.6M个浮点单元,计算量达到了3307975482668约3.3T个浮点操作。在原程序中,没有考虑这些子程序的性能优化问题。下面将详细介绍针对原程序在刚度矩阵装配与相应的稀疏线性方程组求解、以及程序优化方面所存在的缺陷,所采取的算法改进与程序优化措施。

算法优化与程序提速技巧

在求解三维问题时,所得到的整体刚度矩阵的半带宽十分大,例如,对在13.3.4节中将要介绍的例题,其模型具有44117个结点、53200个单元,整体刚度矩阵中大部分行的半带宽都达到了5170,只有少量几行的半带宽比较小。相比较而言,刚度矩阵每行中却只有最多81个非零元,半带宽显得很大,这导致在按变带宽算法进行计算时存储需求与计算量都十分大。如果假设整体刚度矩阵第k行的半带宽为bk,在按变带宽算法进行计算时,存储需求为∑bk浮点单元,计算量为∑(bk2-n次浮点操作,其中n为整体刚度矩阵的阶数。对这里所述的示例问题,存储需求达到了648590404约648.6M个浮点单元,计算量达到了3307975482668约3.3T个浮点操作。更为严峻的是,随着有限元个数的增加,有限元结点数相应增加,而存储需求与计算需求的增长速度都将比线性增长速度快很多。例如,如果试件在长、宽、高三个方向上的结点数都增加一倍,总的结点数虽然只增加8倍,但存储需求将增加32倍,计算量将增加128倍。同时,在内存不足时,由于采用分块技术进行计算,每计算完一个矩阵块,就将对应的分解因子存储到硬盘上,在求解三角线性方程组时,又相应地从硬盘上读取这些分解因子,而对硬盘的访问速度远远慢于对内存的访问速度,更远远慢于对Cache(高速缓冲存储器)中数据的访问速度,所以这种对硬盘的反复读写操作将花费大量时间。

此外,虽然其他子程序所占的计算时间很少,但总还是需要用一些时间,例如sdtk的计算时间与一些需要反复调用的子程序。在原程序中,没有考虑这些子程序的性能优化问题。(www.xing528.com)

下面将详细介绍针对原程序在刚度矩阵装配与相应的稀疏线性方程组求解、以及程序优化方面所存在的缺陷,所采取的算法改进与程序优化措施(朱星明、吴建平等,2007;马怀发等,2008)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈