MA57 vs HSL_MA57:对称不定解算器
HSL_MA77 与 MA57 的精彩总结取自此处(第 45 页),但请注意它与原始 Q 不同:
HSL MA77 [里德和斯科特 2008;2009b]也是一个多前沿求解器,旨在解决正定和不定稀疏对称系统。在每种情况下都使用不同的内核来实现最佳性能。MA57 和 HSL MA77 的根本区别在于后者是一个核外求解器,能够将所有数据保存在核外,从而能够解决更大的问题。此外,已注意允许使用 64 位整数对前沿进行寻址。这是必不可少的,因为某些问题需要对包含这么多元素的密集矩阵进行因式分解。
它利用 Reid 和 Scott [2009a] 的虚拟内存系统来最小化由于核外方法导致的开销,同时保持稳健。在内核中工作的能力也是可用的,尽管内核外设计的一些开销仍然存在。尽管如此,在 MA57 能够解决的问题上,HSL MA77 的性能在分解阶段是有利的,尽管解决阶段可能相对较慢。
虽然仍然可以完全控制分解,但 MA57 附带的大量支持例程不存在。用户应提供自己的排序和缩放。这反映了能够以核外方式执行这些例程以解决大型问题的子例程的有限可用性。
正如评论中正确指出的那样,HSL_MA57 只是 MA57 的接口扩展包装器版本。
它是其原始版本 (Fortran 77) 的 Fortran 95 封装,并提供比原始 MA57 更丰富的接口(除了 Fortran 95 语法)。此信息可在HSL_MA57 的用户文档中找到。另请注意,MA57 列在 HSL_MA57 的“调用: ”部分下。
至少在编写此答案时,最新的 MA57 版本(版本 3.11.0 - 2019 年 5 月 21 日)的日期之前是最新的 HSL_MA57 版本(版本 5.2.0 - 2013 年 8 月 2 日)之一。我不确定这是否真的表明 MA57 是“更新的”。
对我来说,HSL_MA57 变体最知名的用户是 Ipopt(也在下面引用的论文中使用),而 MA57 用于 MATLAB。
添加到您自己的答案中 - 可以在此处找到许多 HSL 例程和更多(如 MUMPS 和 WSMP ...)的一个很好的比较 + 描述。