12 我正在使用隐式数值方案解决物理问题。这导致我用三对角矩阵求解线性方程。我已经从Wikipedia 编写了此算法。我想知道是否有一个有效的库可以优化方式解决这类方程。一个重要的注意事项是,矩阵本身仅在系统参数发生变化时才会发生变化,因此我有机会对一些算法步骤进行了预先计算,以获得了不错的性能表现。我正在使用C ++。 linear-algebra libraries c++ — gmk source 它有多大,需要并行吗? — aterrel 2011年 1 大小取决于所需的精度(从十万到几万个值)。现在,我正在单核计算机上进行编码,但是可以访问具有许多cpus的大学超级计算机,因此并行性支持会很好。 — gmk
15 您可能应该从LAPACK实现开始,例如?gtsv,例如dgtsv。如果需要分布式内存版本,则可能要从ScaLAPACK的p?gtsv开始。 编辑:由于矩阵的变化不是非常频繁,因此可以通过将LAPACK例程?gtsv分解为分解步骤?gttrf和求解阶段?gttrs来避免多余地分解三对角矩阵。ScaLAPACK中存在类似名称的例程,它们具有相同的用途。 — 杰克·波尔森 source 谢谢,看起来像我需要的。我现在将尝试从我的代码中运行该例程。 — gmk 1 由于您是从C ++调用的,因此请确保在extern“ C” {}块内声明原型。根据您的系统,您可能需要在例程名称后加上下划线。 — Jack Poulson
2 对于分布式并行系统:我还没有尝试过ScaLAPACK,它具有一个并行三对角线求解器,有关在线示例,请参见。我已经成功地尝试了David Moulton在LANL出版物中提出的方法。对此进行编码可能比您想做的要多,但是通过使用LAPACK可以解决问题。 — 亚恩 source
1 我发现一个有趣的递归算法这里在975它看起来很有希望页,我想知道更多的有经验的人说些什么。 — am source 数字食谱中有一些错误。就使用的代码源而言,它不是最好的,尽管有人认为它是经典的。如果ScaLAPACK没有实现至少与递归循环约简一样有效的算法,我会感到惊讶。 — Geoff Oxberry 2012年