Parallelizing SIR Epidemic Spread Simulation Using Pthreads, OpenMP, and MPI
本文评估了 Pthreads、OpenMP 和 MPI 在对二维网格上的计算密集型 SIR 流行病模拟进行并行化处理方面的性能,证明了与由于同步和内存争用开销导致的 OpenMP 和 Pthreads 所观察到的中等且有限的扩展性相比,MPI 在处理大型网格时实现了更优越的加速比和近乎线性的扩展性。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一座广袤无垠、肉眼不可见的城市,数以百万计微小的市民生活在其中的网格中,每人占据一个方格。在这座城市里,疾病并非通过空气或水传播,而是通过接触邻居来传播。如果一个健康的人接触到了生病的人,他可能会染上疾病。如果他们生病了,他们最终可能会康复并获得免疫力。科学家使用计算机模型来模拟这种传播过程,帮助公共卫生官员了解疾病如何在真实人群中移动。挑战在于,这些模拟工作的计算量极其庞大。为了获得全国性疫情的清晰图景,计算机必须在数百天内,日复一日地更新网格中每个人的状态。在标准计算机上逐一执行这些步骤可能耗时过长,从而失去其实用价值。
这正是研究人员阿姆娜·阿提克(Amna Atiq)的研究领域。她致力于解决如何利用并行计算的力量来提高这些模拟运行速度的问题。她没有让一个处理器承担所有的重任,而是探索了如何将工作分配给许多处理器同时进行,就像一个庞大的工人团队将一幅巨大的壁画分成若干部分,以便每个人都能同时绘制属于自己的部分。她的研究专注于一种被称为 SIR 模型(追踪易感者、感染者和康复者这三类人群)的特定模型。其目标是观察哪种拆分工作的方法对计算机而言最为高效。
阿提克测试了三种不同的组织工人团队的方法。第一种被称为 Pthreads 的方法,将网格划分为水平条带,并将每个条带分配给单个计算机内的不同执行线程。第二种方法称为 OpenMP,它使用一套更简单的指令,自动将网格的行分配给可用的处理器。第三种方法是 MPI,它是为分布式系统设计的,在这些系统中,多个计算机或处理器通过相互发送消息来进行通信,通过传递它们所分配的网格部分的边缘信息,以确保感染能在整个地图上正确传播。
模拟结果揭示了每种方法在表现上的明显差异。当研究人员在代表一千乘以一千人的网格上运行一百个时间步长的模拟时,标准的单线程方法大约耗时 1.58 秒完成。在四核机器上使用 Pthreads 方法后,时间有所下降,但加速效果有限。工人们花费了太多时间在彼此完成各自的部分之前进行等待,以便交换工作,而且他们偶尔会干扰彼此的内存空间,从而导致速度变慢。OpenMP 方法的表现略好,在 0.7 秒内完成了任务,但当增加更多处理器时,它也遇到了瓶颈,这主要是由于每天结束时同步工人所花费的时间造成的。
最成功的方法是 MPI 方法。通过将网格视为一系列独立的碎片,并且仅在边界处进行通信,这种方法表现出了卓越的可扩展性。当研究人员将处理器数量增加到八个时,模拟运行的速度比原始单线程版本快了六倍多。这是因为在处理器之间发送消息所花费的时间,与计算每个区域内人员健康状态所需的时间相比非常小。虽然其他方法在处理单台机器上的众多工人协调问题时显得吃力,但这种消息传递法让工人能够专注于自己的任务,仅在分享其领地边缘的必要信息时进行短暂停顿。
这项研究还强调了选择方法时所涉及的权衡。消息传递法需要最复杂的代码和精心的规划,以确保网格碎片被正确地发送和接收而不会发生卡顿。自动分配法是最容易编写的,但提供的速度提升也最小。基于线程的方法则处于中间位置,但受到与计算机内存组织相关的技术问题的困扰。最终,研究表明,对于大规模流行病模拟,使用消息传递将工作拆分到多个处理器上,可以提供最显著的速度优势,使科学家能够在比旧方法快得多的时间内运行复杂的模型。这种效率对于应对未来的疫情至关重要,因为在模拟中,每一秒钟的节省都可能转化为更好的准备和应对策略。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。