Algorithm GPU中的稀疏Cholesky分解算法

Algorithm GPU中的稀疏Cholesky分解算法,algorithm,math,cuda,opencl,gpgpu,Algorithm,Math,Cuda,Opencl,Gpgpu,有人能给我一个并行算法来计算稀疏的Cholesky分解吗?它必须适合在GPU上执行。任何关于CUDA、OpenCL甚至伪代码的答案都将不胜感激。请查看这些文章,由ACM提供(SC'08和PPoPP'09是优秀的会议) 沃尔科夫,J·W·德梅尔。基准测试GPU以调整密集线性代数。SC'08 Jung,J.H.,O'Leary,D.p.Cholesky分解和 GPU上的线性规划。大学学术论文 马里兰大学,2006年 G.昆塔纳·奥尔蒂,F.D.鬣蜥,E.S.昆塔纳·奥尔蒂,R.A.范德·盖恩。在具有

有人能给我一个并行算法来计算稀疏的Cholesky分解吗?它必须适合在GPU上执行。任何关于CUDA、OpenCL甚至伪代码的答案都将不胜感激。

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

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

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

G.昆塔纳·奥尔蒂,F.D.鬣蜥,E.S.昆塔纳·奥尔蒂,R.A.范德·盖恩。在具有多个硬件加速器的平台上求解稠密线性系统。PPoPP'09

如果您无法通过ACM门户/DL访问这些,它们可能在某个地方联机。否则。。。我可能会引用一些最相关的章节,加上引文,让它合理使用

编辑:

也许看看这个

编辑2:错过了关于“稀疏”的部分


环顾一下网络和ACM/IEEE,我没有看到太多让我吃惊的东西。我所看到的听起来并不乐观。。。这可能不是一个使用GPU可以带来很多好处的计算。

多前沿算法似乎是并行稀疏因子分解的流行选择。查看
腮腺炎
套餐

据我所知,该代码广泛使用3级
BLAS
调用(
DGEMM
等)来实现高性能。我会调查是否有可能链接到基于
GPU
BLAS
实现,例如
CUDA BLAS
或类似的,如果您热衷于使用
GPU
而不是
FPU

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


希望这能有所帮助。

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


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

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

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

在常规单处理器上发布一些伪代码,我很乐意讨论将其移植到GPU。而且,这可能是已经存在的东西。。。让我快速搜索一下。啊哈。请看下面我的答案。它必须是Cholessky分解吗?一般来说,可以利用高性能spMV实现的稀疏迭代方法更适合指导求解器的GPU。@Talonmes-Ah!我不应该那么具体。我真正需要的是一个求解稀疏对称线性方程组的算法。Cholesky分解就是目前用来解决这个问题的方法。然而,在GPU的情况下,如果其他算法更合适,我对此持开放态度。@Jonathan,Talonmes:迭代方法是否比直接因子分解更快是一个非常重要的问题。这在很大程度上取决于矩阵的“硬”程度(条件、结构等)和迭代方法的复杂程度(条件的类型等)。您需要发布更多关于矩阵的详细信息,以便任何人都能猜到这类事情……这可能适用于scicomp.stackexchange.com这些参考资料似乎都适用于密集矩阵分解。稀疏分解的算法有点不同…哦,在问题中完全忽略了这一点。我再看一看……整数本身并不是反对GPU的理由。也就是说,不规则的内存访问模式/数据结构(例如带有指针)和/或分支/发散控制流是反对使用GPU的有力论据。我不是稀疏Cholesky分解的专家,但稀疏Cholesky几乎是不规则内存访问和发散控制流的典型代表,对吗?@Patrick87-很好。正如我在上文所评论的,我不应该在我的问题上如此具体。任何求解稀疏对称线性方程组的算法都可以。@Pat:好的算法(如多前沿、超节点等)使用“阻塞”更新,至少在浮点运算中是这样,其中准密集子结构允许使用密集内核(即
BLAS
例程)。据我所知,初始的“符号”整数相位通常涉及不规则访问。首先,我将尝试共轭梯度法。谢谢