现代化Titan2D:支持多种流变模型与可扩展性的并行AMR地球物理流代码
计算物理
2019-10-03 v1 性能
地球物理
摘要
本工作中,我们报告了Titan2D代码现代化初步方法的策略与结果。Titan2D是一个地球物理质量流模拟代码,用于模拟真实地形模型上的火山流、碎屑崩塌与滑坡。它采用并行自适应网格Godunov格式求解底层双曲型偏微分方程组。在代码重构与现代化期间完成了以下工作。为便于用户输入,开发了双层Python接口。该设计允许C++与Python底层大幅改动,同时保持对终端用户稳定的高层接口。将实现不同物质模型的多个分叉版本合并回来。数据存储布局由结构体链表改为数组结构体表示,以改善内存访问并为进一步利用向量化指令做准备。在现有MPI并行化基础上增补了OpenMP并行化。用于存储网格单元与节点引用的哈希表性能通过将溢出项链表改为动态数组得以提升,从而可实现二分查找算法。新数据布局的引入使得能够通过直接使用存储类的索引替代哈希表查找,从而减少查找次数。上述修改使串行执行性能提升8-9倍。
引用
@article{arxiv.1910.01017,
title = {Modernizing Titan2D, a Parallel AMR Geophysical Flow Code to Support Multiple Rheologies and Extendability},
author = {Nikolay A. Simakov and Renette L. Jones-Ivey and Ali Akhavan-Safaei and Hossein Aghakhani and Matthew D. Jones and Abani K. Patra},
journal= {arXiv preprint arXiv:1910.01017},
year = {2019}
}
备注
First International Workshop on Legacy Software Refactoring for Performance (REFAC'19) in conjunction with ISC'19