C++中高效的大型稀疏块压缩线性方程
Efficient large sparse block compressed linear equation in C++
每个人。我对线性代数方程求解器没有什么经验。但现在,我需要求解大型稀疏块压缩线性方程。即CCD_ 1。
矩阵CCD_ 2由大小为CCD_。并且CCD_ 4的大小是CCD_。则矩阵A
的实际大小为(nb*N,nb*N)
。
只存在几个子块。CCD_ 8为对角优势。
我试过艾根内置的slovers。即SimpliciaLLT和BiCGSTAB,第一个是慢的,而第二个不能收敛。
然后,我尝试了使用英特尔MKL的Eigen第三方解算器,即PardisoLLT、PardisoLDLT和PardisoLU。他们也很慢。
最后,我尝试了使用SuiteParse的Eigen第三方求解器,即CHOLMOD和SPQR。第一个是缓慢的,而第二个给出了相同的输入值,似乎不起作用。
我想也许是因为我用错了解算器,所以我没有利用"块压缩"功能,从而引发了很多无用的计算。
有人能给我一些建议吗?
只要矩阵大小不超过5000行/列,使用稀疏解算器就不会带来任何合理的好处;对于这样的矩阵,普通的密集求解器也很好,因为它不包含与存储和操作稀疏结构(如链表或邻接结构(相关的"开销"。另一方面,如果矩阵非常大(比如说,大约一百万行/列(,迭代求解器只能工作。我建议您访问以下网页,其中包含与您正在处理的问题非常相似的问题和解决方案的描述(包括具有块结构的稀疏矩阵的系统的解决方案以及图像处理(:http://members.ozemail.com.au/~comecau/CMA_LS_Parse.htm
相关文章:
- C++中高效的大型稀疏块压缩线性方程
- 嵌入方指针压缩已禁用
- C++使用整数的压缩数组初始化对象
- 在C++中将函数压缩为两种方式
- 在C++中使用LZ4压缩目录
- 使用C++进行运行长度解压缩
- 为什么大多数 pair 实现默认不使用压缩(空基优化)?
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- C++ 如何将数组值解压缩为函数参数
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 浏览压缩文件与游览解压缩它们
- 直接 2D 呈现到命令列表和打印:图片压缩
- 如何在 OpenCV c++ 中压缩 TIFF 格式的图像?
- 如何在C++向量中解压缩多个值
- 解压缩 C 样式数组以及C++中的参数包
- 用于 progmem 的C++和头文件压缩的 Web 文件字节数组
- 如何在 cpp 中解压缩数字,如果它们是使用 struct.pack(fmt, v1, v2, ..) 打包在 pyth
- 连接和压缩标准::vector<std::字符串的最佳方法>
- 如何使用 Poco::ZIP 压缩/解压缩 zip 文件