Distillation of Best Practices from Refactoring FLASH for Exascale

Distillation of Best Practices from Refactoring FLASH for Exascale
复制标题

从百兆级重构 FLASH 中提炼出最佳实践

DOI:
--
复制
发表时间:
2020
期刊:
SN Computer Science
影响因子:
--
通讯作者:
S. Chawdhary
S. Chawdhary
中科院分区:
--
文献类型:
--
作者:
A. Dubey;J. O'Neal;K. Weide;S. Chawdhary

文献摘要

被引文献

相似文献

FLASH是一个多物理场软件包,于1998年通过合并三个先前存在的软件包创建,并经历了三次重大修订。软件设计和工程实践在FLASH的开发和维护过程中很早就被整合在一起,这些过程在每次修订中都有很大的发展。随着高性能计算进入亿亿级时代,节点级硬件的正交轴和求解器异构性的沿着挑战迫使复杂多物理场软件的开发人员考虑软件架构大修。由于必要变更的性质和范围,已将重构和扩展FLASH代码架构的工作作为一个单独的软件项目启动。为了使该项目取得成功,其开发团队必须评估、改进和现代化软件流程和策略,以应对艾级时代带来的独特挑战。我们在这里描述我们的经验,我们学到的教训,以及我们已经制定的方法,作为这个正在进行的项目的一部分。在exascale所带来的挑战的背景下,我们审查闪存设计方法,以及一些主要的软件工程过程和工具,已实施或更新的整个生命周期的闪存。现代化适用于这些过程和工具也详细介绍。回顾和重新评估建立和更新软件设计和工程实践的FLASH经验,有助于理解项目向亿级过渡的需求,并有助于规划过渡。我们发现,我们的历史设计方法仍然是重要的和相关的。我们还相信,混合使用基于计划的方法和敏捷方法仍然是我们项目的最佳选择,并且与文献中的指导雅阁。我们提出了一个关于与软件设计和工程实践相关的推理和经验教训的部分。
FLASH is a multiphysics software package that was created in 1998 by combining three preexisting packages and has undergone three major revisions. Software design and engineering practices were integrated early in the development and maintenance processes of FLASH, and these processes have evolved strongly at each of the revisions. As high-performance computing enters the age of exascale, challenges along the orthogonal axes of node-level hardware and solver heterogeneity force developers of complex multiphysics software to consider a software architecture overhaul. Because of the nature and scope of necessary changes, an effort to refactor and grow the architecture of the FLASH code has been launched as a separate software project. For this project to succeed, its development team must evaluate, improve, and modernize software processes and policies to meet the unique challenges posed by the exascale era. We describe here our experiences, lessons we have learned, and the methods that we have developed as part of this ongoing project. Within the context of the challenges posed by exascale, we review the FLASH design approach as well as some of the main software engineering processes and tools that have been implemented or updated throughout the lifetime of FLASH. Modernization applied to these processes and tools is also detailed. Reviewing and reevaluating the FLASH experience of establishing and updating software design and engineering practices have been helpful in understanding the needs of the project as it transitions to exascale and in planning the transition. We find that our historical design methodology is still important and relevant. We also believe that using a mixture of plan-based and agile methods is still the best for our project and is in accord with the guidance found in the literature. We present a section on inferences and lessons learned related to software design and engineering practices.