问题标签 [umfpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2953 浏览

scipy - scipy中稀疏正定线性系统的推荐直接求解器?

如果在 scipy.sparse 文档中对此进行了清楚的解释,我很抱歉。

使用 scipy 时,您建议使用什么函数来求解稀疏的正定线性方程组?我想使用直接方法,并且我希望对列进行重新排序,以便在系数矩阵的 Cholesky 分解中尽可能地保持稀疏性。理想情况下,我可以尝试各种重新排序选项。

scipy.sparse 中是否存在稀疏正定系统的直接求解器?scikit.sparse 是要走的路吗?

0 投票
2 回答
1127 浏览

c++ - 改进稀疏线性系统的解

我在 Linux 系统上用 C++ 编写了一个代码,它解决了线性系统A x = b,其中A是使用以下两种方法的稀疏对称矩阵:

  1. 用于UMFPACK顺序分解并进行向后前向替换。
  2. 使用UMFPACK顺序分解,然后使用cuSPARSE库进行向后前向替换。

我的系统配置是:CUDA 5.0UMFPACK版本,5.6.2版本,Linux内核版本Debian 3.2.46-1,使用的显卡:GeForce GTX Titan。

从理论上讲,第二种方法应该比第一种方法执行得更好,并且错误最少或没有错误。但是,我观察到以下问题:

  1. 使用UMFPACK函数umfpack_di_solve的向后/向前替换几乎2x比 CUDA 变体快。
  2. 对于某些矩阵,使用 CUDA 得到的结果之间的误差UMFPACK非常大,最大误差为3.2537,而对于其他矩阵,则为1e-16.

附件是我的 tar 文件,其中包含以下组件:

  • 一个文件夹 factorize_copy,其中包含我用来求解线性系统的主文件fc.cu。它从同样存在于同一目录中的grid_*_CSC.m文件中读取稀疏矩阵。为方便起见,提供的三个稀疏矩阵的结果也在文本文件中给出。
  • 一个包含用于编译和运行的所有依赖项的文件夹UMFPACK(我们也将其用于计算)。

tar 文件的链接是 https://www.dropbox.com/s/9qfs5awclshyk3b/code.tar.gz

如果您希望运行代码,我在 factorize_copy 目录中提供了我在系统中使用的MAKEFILE 。您可能需要重新编译UMFPACK库。

下面还显示了我们的稀疏矩阵程序的示例输出586 x 586(请注意,与我们检查的其他稀疏矩阵相比,这种情况下的错误非常高)。

如果有人能指出在这种情况下可能出现的错误,我将不胜感激。如果我错过了使用 CUDA 解决稀疏线性系统的更好方法,请告诉我。

编辑:我弄清楚为什么它在某些情况下会出错,而在某些情况下不会。在代码中调用内核函数时,每个块的线程数有误。但是,我仍然有获得加速的问题。

0 投票
0 回答
344 浏览

scipy - 在 Linux 上使用 Intel 编译器编译 SciPy 和 UMFPACK

我们的目标是使用英特尔编译器编译 SciPy(和 UMFPACK),以使用英特尔的(多线程)MKL BLAS,已经为 NumPy 成功完成了这项工作。在各种网站的帮助下,我们已经为 UMFPACK 和 SciPy 实现了这一目标,而没有任何明显的错误消息。然而,我们怀疑生成的 SciPy 没有找到我们的 UMFPACK,而是默默地使用了慢得多的替代函数 (SuperLU)。

谁能帮助我们(a)如何确定 SciPy 是否正在找到我们的 UMFPACK,以及(b)如何在编译或执行阶段将 SciPy 指向我们的 UMFPACK 库?

0 投票
1 回答
306 浏览

python - FEniCS:UMFPACK 报告正在求解的矩阵是奇异的

我用第一个子域中的斯托克斯方程和第二个子域中的混合泊松方程(达西)创建了一个划分域。我使用 UnitSquare,子域 1 应该是从 0 到 0,5 的区间,子域 2 应该是从 0,5 到 1 的区间。

但现在我收到以下错误:

解决线性变分问题。与调用 numeric 相关的 UMFPACK 问题 * 警告:UMFPACK 报告正在求解的矩阵是奇异的。与调用求解有关的 UMFPACK 问题 *警告:UMFPACK 报告正在求解的矩阵是奇异的。断言 vmax>=vmin, "空范围,请指定 vmin 和/或 vmax" 断言错误:空范围,请指定 vmin 和/或 vmax

任何人都可以帮忙吗?谢谢!

这是代码:


我忘记了这个术语中的 dx(0)。但这不是问题所在。

在代码的第一部分(Stokes)中,我尝试用以下方式编写无滑移条件:

但现在我收到以下错误:

任何人都可以帮忙吗?谢谢!

0 投票
0 回答
1578 浏览

macos - 'umfpack.h' 未找到,但它位于 /opt/local/include/

我正在尝试在 OSX 10.8 上编译一个名为 hiQlab 的程序

但我刚刚通过包含 umfpack 的 macports 安装了 SuiteSparse umfpack.h,实际上它存在于默认目录中/opt/local/include/

我需要添加路径还是什么?


好的,经过更多搜索后,我找到了答案——我没有将 macports 路径添加到我的搜索路径中

多么愚蠢 =p,因为我 8 小时都无法回答我自己的问题,所以我将在这里进行编辑

0 投票
0 回答
203 浏览

matlab - Dynare 安装问题:umfpack

我正在尝试在我的 rosa linux r3 (64bit) 上为 matlab R2013a 编译 dynare 4.4.2。配置步骤是

但我得到了错误

我一直在尝试

,但错误仍然存​​在。安装了umfpack(lib64umfpack-devel、lib64umfpack5.6.1 包),所以我不知道该怎么办。有任何想法吗?提前致谢!

0 投票
0 回答
264 浏览

c++ - NaN 在 C++ 增强绑定中使用 Umfpack 解线性方程组。

我正在通过Boost bindings使用Umfpack。在大多数情况下,它在求解大尺寸线性方程时工作得非常快。但在某些情况下,我发现结果是 NaN。一开始我认为矩阵是奇异的。但后来我意识到事实并非如此,方程可以通过 Matlab mldivide(反斜杠)函数求解。那么 NaN 结果的原因是什么?C++

0 投票
1 回答
936 浏览

python-2.7 - 没有名为 scipy.linalg.dsolve.umfpack 的模块

我试图使用python setup_win_32.py install.

在安装过程中,我收到以下错误:

没有名为 scipy.linalg.dsolve.umfpack 的模块

有谁知道我该如何解决这个问题?

我在 Windows 7(32 位)上运行并安装了以下所有必需的库:

  • 蟒蛇2.7
  • PyQt4
  • 麻木的
  • scipy
  • pyFAI
  • 法比奥
  • pyqtgraph
  • scikit 图像
  • pyopencl
  • fftw3
0 投票
1 回答
577 浏览

matlab - 是否可以使用预先计算的分解来加速具有稀疏矩阵的反斜杠\mldivide

我执行求解线性方程组的多次迭代:Mx=b使用大而稀疏的 M。M 在迭代之间不会改变,但 b 会改变。我尝试了几种方法,到目前为止发现反斜杠\mldivide 是最有效和最准确的。

以下代码与我正在做的非常相似:

现在我想通过利用 M 是固定的事实来进一步加速计算。

设置标志spparms('spumoni',2)允​​许求解器算法的详细信息。

我运行了以下代码:

输出(监控):

观察线条:

这表明 M 的因式分解花费了求解方程所需总时间的 2.59546e+007/2.77385e+007 = 93.6%。

我想在我的迭代之外提前计算分解,然后只运行最后一个阶段,这需要大约 6.5% 的 CPU 时间。

我知道如何计算分解 ( [L,U,P,Q,R] = lu(M);),但我不知道如何将其输出用作求解器的输入。

我想本着以下精神经营一些事情:

有没有办法在 Matlab 中做到这一点?

0 投票
0 回答
1661 浏览

c++ - 在 Linux 上使用 Openblas 编译 Suitesparse 4.4.4

我下载并编译了 Openblas,现在我正在尝试编译并将 openblas 链接到 Suitesparse 4.4.4。编译所有 lib 文件后,当编译器尝试编译umfpack_di_demo.c时出现以下错误:

我的意思是链接不正确。但是,按照 SuiteSparse_config.mk 中的指示,我给出了 libopenblas.a 在我的系统上的绝对位置。此外,我还使用 gcc-nm 查看符号 dtrsv_ 是否在 libopenblas.a 中定义,我得到以下输出,表明该符号是在库中定义的:

我不确定这里出了什么问题。我应该在 suitesparse_config.mk 文件中包含带有 openblas 的 lapack 吗?任何帮助表示赞赏。谢谢。

注意:如果有帮助,我使用gcc 4.4.7进行所有编译,我的系统详细信息是:

== 编辑1:我遵循的步骤==

对于 Openblas:

  1. 从 http://github.com/xianyi/OpenBLAS/zipball/v0.2.14 下载 openblas。
  2. 使用 gcc-4.4.7 和以下命令在我的系统上解压缩并编译它 make FC=/usr/bin/lgfortran-4.4 我必须提供 'FC' 因为我的系统没有 libgfortran.* 存在于 /usr/lib /。
  3. 编译完成后,我键入 make install 以安装到我的主文件夹中的自定义目录。

对于套件稀疏:

  1. 从 http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.4.tar.gz 下载suitesparse
  2. 解压它,并编辑 suitsparse_config.mk 文件以进行以下修改:A) 启用 CHOLMOD 和 SPQR 的 GPU 配置,B) 不使用 metis,因此注释“METIS_PATH = ../../metis-4.0”和“METIS = ../../metis-4.0/libmetis.a”。此外,未提交的“CHOLMOD_CONFIG = -DNPARTITION”。C)给出了openblas的自定义安装路径:BLAS = -L//OpenBLAS/local/lib/libopenblas.a -lpthread -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/libgfortran.so
  3. 在 srcdir 中键入 make。