代码之家  ›  专栏  ›  技术社区  ›  Graviton

高效的特征值实现

  •  1
  • Graviton  · 技术社区  · 15 年前

    我正在寻找一种高效的Eigensolver(语言不重要,尽管我将用C语言编程),它利用了现代CPU中的多核功能。能够直接与 pardiso solver 是一个主要的优点。我的矩阵主要是 sparse matrix 因此,理想的解决方案应该能够利用这一事实,并大大提高内存使用率和性能。

    到目前为止我只找到 LAPACK ARPACK .拉帕克, as implemented in Intel MKL ,是一个很好的候选者,因为它提供多核优化。但似乎 drivers 在lapack中,不能直接使用pardiso解算器,而且,它们似乎没有利用稀疏矩阵(但我不确定这一点)。

    另一方面,arpack在Windows环境中似乎很难设置,而并行版本, PARPACK , doesn't work so well . 另外一点是它可以与 pardiso solver .

    最好是多核加速的Intelmkl+arpack。不确定是否有任何现有的实现已经做了我想做的事情?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Ned Moore    15 年前

    我正在解决一个与你所说的需求非常相似的问题。我在考虑宴会: http://www.ecs.umass.edu/~polizzi/feast/index.htm 我正在努力使它现在起作用,但它看起来很完美。如果你使用它,我有兴趣听听你对它有什么经验。 干杯 内德

        2
  •  0
  •   Gregory Pakosz    15 年前

    看看 Eigen2 图书馆。

        3
  •  0
  •   Graviton    15 年前

    我已经用C语言实现了它。

    其思想是必须将矩阵格式转换为CSR格式。然后,可以使用mkl来计算线性方程求解算法(使用pardiso解算器),矩阵向量操作。