【发布时间】:2016-04-20 19:13:53
【问题描述】:
我知道有很多关于这个主题的信息,但我正在努力为我的具体问题找到最佳解决方案。
对于我的问题,A 非常大(~145k X 145k)并且非常稀疏(每行最多 9 个非零值)。它不是正定的,也不是对称的,并且是复值(单精度)。稀疏模式可以通过想象一个三对角矩阵来可视化,然后在其上方和下方添加两个“三对角线”,远离主三对角线 N。这在每行中给出了 3 组 3 个非零,其中 3 组由 N 分隔(对于给定矩阵 A,N 是常数),并以主对角线为中心。由于边界条件,约 5% 的行不会填充所有 9 个非零位置,因此这些行将具有主要非零模式的子集。
我需要解决多个右手边 (~1024)。我还需要在 A 中解析具有不同数值但具有相同稀疏模式的相同系统。目前,我正在使用 SuperLU(单线程)将 A 分解为 LU,然后使用 cusparse(特别是 cusparseCcsrsm_solve)求解。
使用 LU 分解的稀疏直接求解器是解决我的问题的最佳方法吗?哪个库对于 LU 分解最快?使用反向替换解决哪个最快?
【问题讨论】:
-
尝试进一步压缩问题;目前还不清楚您实际上在问什么。
标签: c++ multithreading performance linear-algebra