GPU的稀疏Cholesky分解算法

时间:2011-08-19 14:31:42

标签: algorithm math cuda opencl gpgpu

有人能为我提供一个用于计算稀疏Cholesky分解的并行算法吗?它必须适合在GPU上执行。我们非常感谢CUDA,OpenCL甚至伪代码中的任何答案。

5 个答案:

答案 0 :(得分:9)

一般来说,直接稀疏方法不适合GPU。虽然最好的直接求解器(考虑像CHOLMOD,SuperLU,MUMPS这样的包)使用策略来生成可以使用L3 BLAS处理的密集子块,但块的大小和形状不会因使用GPU BLAS而受益加速。这并不意味着它无法完成,只是性能改进可能不值得努力。

当你在询问稀疏的Cholesky分解时,我假设矩阵是对称的正定。在这种情况下,您可以考虑使用迭代求解器 - 有许多良好的Conjugate Gradient和其他Krylov子空间方法的实现,这些方法可以使用简单的预处理器。如果您的问题适合迭代方法,那么CUDA的Cusp库可能值得研究。如果您正在寻找OpenCL,ViennaCL库提供类似的东西。

答案 1 :(得分:4)

多正面算法似乎是并行稀疏因子分解的流行选择。查看MUMPShere

据我了解,代码广泛使用3级BLAS调用(DGEMM等)来实现高性能。我会调查是否可以链接到基于GPU的{​​{1}}实施,例如BLAS等,如果您热衷于使用CUDA BLAS而非{{{} 1}}。

与密集因子分解相反,除了浮点工作之外,稀疏方法总是包括不可忽略的整数工作量(尽管浮点仍占主导地位)。我不是GPU的专家,但是FPU是否比GPU's更适合整数工作?这可能是反对为CPU ...

实现整个算法的论据

希望这有帮助。

答案 2 :(得分:2)

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

诉Volkov,J。W. Demmel。对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。在具有多个硬件加速器的平台上解决密集线性系统。 PPoPP '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带来很多好处。

答案 3 :(得分:1)

GPU上的稀疏Cholesky因子分解是一个悬而未决的问题。即使前面提到的Linear Programming paper使用密集算法,而大多数问题都很稀疏。商业LP解决方案市场非常具有竞争力,但没有人拥有可以充分利用GPU的产品。

答案 4 :(得分:0)

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