使用 LAPACK 的易于访问的科学代码

计算科学 拉帕克
2021-11-27 03:43:11

我想分析一些大量使用 LAPACK 的科学代码。即,我正在寻找既在 LAPACK 函数中花费大量时间又不平凡地使用 LAPACK 的代码(即,不仅仅是调用 DGEMM)。我会对使用顺序 LAPACK 或 ScaLAPACK 或公开相同接口的任何其他实现的应用程序感兴趣。

有哪些容易获得的好例子?理想情况下,它们将是开源的或按需提供的。

4个回答

很难知道从哪里开始,因为有很多代码使用 LAPACK,而且您的标准有点……主观(“非平凡地使用 LAPACK”)。我会提出一些建议:

  • 你可以在这里找到一份关于 LAPACK 用户的旧调查,其中提供了一些关于谁使用它的信息,以及他们使用它的目的
  • 大多数量子化学代码都使用 LAPACK 作为线性代数(CPMDCP2Koctopus,仅引用少数开源代码)
  • 你也可以去你最喜欢的 Linux 发行版的包列表,查看哪些包依赖于 lapack

ATLAS 在 LAPACK 和 BLAS 上做了一组相当残酷的研磨指标。您可能可以从中获取一些满足您需求的代码。

我可能还建议检查 Numpy 和 Scipy,因为它们都有非常大的单元测试,可能跨越该相空间的大部分。此外,如果您想直接在您创建的数组上调用 LAPACK 函数,它们还提供挂钩。

另一个解决问题的方法可能是在Github 上搜索感兴趣的 LAPACK 调用,然后查看出现的代码!

我编写了一个电磁仿真代码S4,它完全受限于解决密集非对称特征值问题 (ZGEEV) 的能力。代码是开源的,用 C++ 编写。

看看 E. Hairer 的 RADAU IIA 求解器 ( http://www.unige.ch/~hairer/software.html )。它使用 LAPACK 作为 ODE 的隐式 Runge-Kutta 方法的主干。