【问题标题】:Sparse Cholesky factorization algorithm for GPU [closed]GPU的稀疏Cholesky分解算法[关闭]
【发布时间】:2023-03-28 17:50:01
【问题描述】:

谁能为我提供计算稀疏 Cholesky 分解的并行算法?它必须适合在 GPU 上执行。 CUDA、OpenCL 甚至伪代码中的任何答案都将不胜感激。

【问题讨论】:

  • 发布一些在常规单处理器上执行此操作的伪代码,我很乐意讨论将其移植到 GPU 上。另外,这可能是已经存在的东西......让我快速搜索一下。啊哈。请参阅下面的答案。
  • 必须是 Cholessky 分解吗?一般来说,可以利用高性能 spMV 实现的稀疏迭代方法更适合指导求解器的 GPU。
  • @talonmies - 啊!我不应该那么具体。我真正需要的是一种解决稀疏对称线性方程组的算法。 Cholesky 分解是目前用于解决此问题的方法。但是,在 GPU 的情况下,如果其他算法更合适,我对此持开放态度。
  • @Jonathan, talonmies:迭代方法是否比直接因式分解更快是一个不平凡的问题。这在很大程度上取决于矩阵的“硬”程度(条件、结构等)以及迭代方法的复杂程度(预处理的类型等)。您需要发布有关矩阵的更多详细信息,以便任何人都能够猜测这种事情......
  • 这可能适用于 scicomp.stackexchange.com

标签: algorithm math cuda opencl gpgpu


【解决方案1】:

一般来说,直接稀疏方法不太适合 GPU。虽然最好的直接求解器(这里考虑 CHOLMOD、SuperLU、MUMPS 等软件包)使用策略来生成可以使用 L3 BLAS 处理的密集子块,但块的大小和形状往往不会从使用 GPU BLAS 中获利为加速。这并不意味着它不能完成,只是性能改进可能不值得付出努力。

当您询问稀疏 Cholesky 分解时,我假设矩阵是对称正定矩阵。在这种情况下,您可能会考虑使用迭代求解器——共轭梯度和其他 Krylov 子空间方法有许多很好的实现,它们带有简单的预处理器,可能会有一些用处。如果您的问题适合迭代方法,那么 CUDA 的 Cusp 库可能值得研究。如果您正在寻找 OpenCL,ViennaCL 库提供了类似的功能。

【讨论】:

  • 我将首先尝试共轭梯度法。谢谢!
【解决方案2】:

multi-frontal 算法似乎是并行稀疏分解的流行选择。查看MUMPS 包,here

据我了解,该代码广泛使用级别 3 BLAS 调用(DGEMM 等)来实现高性能。如果您热衷于使用GPU 而不是FPU,我会调查是否可以链接到基于GPUBLAS 实现,例如CUDA BLAS 等。

与密集分解相反,稀疏方法除了完成的浮点工作外,总是包含不可忽略的整数工作量(尽管浮点仍然占主导地位)。我不是GPU's 方面的专家,但CPU 会比GPU 更适合整数工作吗?这可能是反对为GPU 实现整个算法的论据...

希望这会有所帮助。

【讨论】:

  • 整数本身并不是反对 GPU 的论据。话虽如此,不规则的内存访问模式/数据结构(例如使用指针)和/或分支/发散控制流是反对使用 GPU 的有力论据。我不是稀疏 Cholesky 分解方面的专家,但是做稀疏 Cholesky 几乎是不规则内存访问和发散控制流的典型代表,对吧?
  • @Patrick87 - 好点。正如我上面评论的那样,我的问题不应该如此具体。任何求解稀疏对称线性方程组的算法都可以。
  • @Pat:好的算法(即多前、超节点等)使用“阻塞”更新,至少对于浮点工作,其中准密集子结构允许使用密集内核(即BLAS 例程)。据我了解,最初的“符号”整数阶段通常涉及不规则访问。
【解决方案3】:

查看这些文章,由 ACM 提供(SC'08 和 PPoPP '09 是优秀的会议)。

V。沃尔科夫,J.W.德梅尔。对 GPU 进行基准测试以调整密集线性代数。 SC'08.

Jung, J.H., O'Leary, D.P. Cholesky 分解和 GPU上的线性规划。学术论文,大学 马里兰州,2006 年。

G. Quintana-Orti、F. D. Igual、E. S. Quintana-Orti、R. A. van de Geijn。在具有多个硬件加速器的平台上解决密集线性系统。 PPPoPP '09.

如果您无法通过 ACM 门户/DL 访问这些内容,则它们可能在某处在线。否则...我可能会引用一些最相关的部分,并附上引文,并合理使用。

编辑:

看看这个可以吗?

http://www.google.com/url?sa=t&source=web&cd=2&ved=0CB0QFjAB&url=http%3A%2F%2Fwww.netlib.org%2Flapack%2Flawnspdf%2Flawn223.pdf&rct=j&q=linpack%20gpu%20cholesky&ei=5nZOTtzCOYHAtgesmdSzBw&usg=AFQjCNGfQECpU6YJQhMRQYktlxpFKLFPjQ&cad=rja

EDIT2:错过了关于“稀疏”的部分。

在网上和 ACM/IEEE 上环顾四周,我没有看到很多让我大吃一惊的东西。我所看到的听起来并不乐观......这可能不是一个让您看到使用 GPU 有很多好处的计算。

【讨论】:

  • 这些参考文献似乎都用于密集矩阵分解。稀疏分解的算法有点不同...
  • 哦,完全错过了这个问题。我再看看……
【解决方案4】:

GPU 上的稀疏 Cholesky 分解是一个悬而未决的问题。即使是前面提到的Linear Programmingpaper 也使用了密集算法,而大多数问题都是稀疏的。商业 LP 求解器市场竞争非常激烈,但目前还没有一款产品能充分利用 GPU。

【讨论】:

    【解决方案5】:

    请参阅UHM - 未组装的超矩阵求解器。它可以在一台主机上使用多个 GPU 计算稀疏 Cholesky 分解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 2015-06-18
      • 2012-06-04
      相关资源
      最近更新 更多