在 Epetra 及其他 Trilinos 软件包中支持 64 位全局索引:所用技术与经验教训
数学软件
2013-07-26 v1 分布式、并行与集群计算
软件工程
摘要
Trilinos 项目旨在促进面向对象框架内数学软件库的设计、开发、集成和持续支持。它专为大规模、复杂的多物理场工程和科学应用而设计。Epetra 是其基础软件包之一,提供串行和并行线性代数功能。在 2012 年发布的 Trilinos 11.0 版本之前,Epetra 使用 C++ int 数据类型来存储自由度 (DOFs) 的全局和局部索引。由于 int 通常为 32 位,这将最大问题规模限制在约二十亿个 DOFs 以下。即使分布式内存机器能够处理更大的问题,这一限制依然存在。我们增加了对至少 64 位宽的 C++ long long 数据类型的可选支持,用于全局索引。为了节省内存、保持内存受限操作的速度并减少对代码的进一步更改,局部索引仍保持为 32 位。我们记录了实现此功能所需的更改以及如何使用新功能。我们还从设计目标、向后兼容性、工程决策、C++ 语言特性、对现有用户和其他软件包的影响以及构建集成等多个角度,报告了修改一个成熟且流行的软件包所获得的经验教训。
引用
@article{arxiv.1307.6638,
title = {Supporting 64-bit global indices in Epetra and other Trilinos packages -- Techniques used and lessons learned},
author = {Chetan Jhurani and Travis M. Austin and Michael A. Heroux and James M. Willenbring},
journal= {arXiv preprint arXiv:1307.6638},
year = {2013}
}