论文部分内容阅读
光化学反应模拟是指用计算机模拟激光与各种物质间发生的化学反应。由于其模拟结果与真实实验极为接近,可以通过调控模拟过程中不同的激光参数反复研究激光光子对物质的具体影响,解决了实体反应中仪器与材料的损耗问题,因此光化学反应得到了广泛的应用,为深入研究激光与物质间的化学反应提供了现实的可能。但目前光化学反应模拟也存在一个问题:模拟中的计算量通常都非常大。在模拟体系较大时,模拟速度特别缓慢,严重影响了科研进度,需要采取必要的措施来加快模拟计算。
在光化学反应模拟中,矩阵的相乘运算占了总计算量的80%以上。且这些矩阵的阶数都比较高,数据呈带状分布。针对矩阵乘中乘矩阵数据分布特性采用分解优化方法,将乘矩阵拆分为多个子矩阵,子矩阵相乘后再累加,减少了零矩阵元的相乘运算来加快计算模拟。为了进一步加速计算,将优秀的串行算法(Winograd算法),在线程级上实现并行。本文通过OpenMP并行技术实现了Winograd算法的线程级并行,然后从动静态调度、任务块划分等方面进行进一步优化,以获得更好的模拟效果。
矩阵分解优化前后的计算时间测试表明,优化后矩阵乘的计算时间降低了近一个数量级。进一步测试表明基于OpenMP的Winograd算法比普通的OpenMP矩阵乘并行算法有明显的优越性,在相同的实验环境下,基于OpenMP的Winograd算法具有更高的加速比,在分子体系比较大时亦表现出更好的可扩展性。在16核服务器上其加速比能达到6.53,并行效率为40.83%。表明基于OpenMP的Winograd并行矩阵乘算法是一种优秀的改进算法,且具有较强的普适性,为加快矩阵乘的计算提供了新的方法。