问题标签 [suitesparse]

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 投票
0 回答
82 浏览

c++ - 有没有办法在 Eigen 求解器中获取/设置大型稀疏矩阵的分解?

我有一个程序,其中稀疏求解器(使用 Eigen 库)中的系统矩阵通常是相同的,并且可以预先计算一次并作为文件加载。理想情况下,我想序列化整个求解器,但似乎没有办法用 Eigen 做到这一点。

我目前正在使用CholmodSupernodalLLT,所以我想一种方法可能是子类CholmodSupernodalLLT化并找到一种方法来序列化cholmod_factor,但是我也不知道如何序列化这种类型。

如果他们有这种能力,我愿意使用其他求解器(最好是 LLT)甚至其他库。

0 投票
1 回答
367 浏览

r - R中的矩阵运算:并行化、稀疏运算、GPU计算

我的问题的基本目的是如何在R使用Matrix包中实现矩阵运算的最佳性能。特别是我想并行化操作(乘法)并使用 CUDA GPU 上的计算处理稀疏矩阵。

细节

根据Matrix包中的文档R cran

矩阵类的丰富层次结构,包括三角矩阵、对称矩阵和对角矩阵,包括密集和稀疏矩阵,以及模式、逻辑和数字条目。使用“LAPACK”和“SuiteSparse”库对这些矩阵进行许多方法和操作。

看来,多亏了SuiteSparse我应该能够使用 GPU (CUDA) 对稀疏矩阵执行基本操作。特别是 SuiteSparse 的文档列出了以下内容:

SSMULT 和 SFMULT:稀疏矩阵乘法。

在我的 Gentoo 上,我已经安装suitesparse-4.2.1suitesparseconfig-4.2.1-r1. 我也lapackscalapackblas。RsessionInfo()看起来如下:

我还设置了环境变量:

我在一个论坛上找到的,可能应该允许使用 GPU。

基本上,一切看起来都准备好了,但是,当我运行一个简单的测试时:

似乎 GPU 无法正常工作,好像R忽略了这些suitesparse功能。

我知道这些问题非常广泛,但是:

  • 有谁知道是否R应该以特定、严格的方式进行编译suitesparse
  • 如何确保Matrix包使用所有共享库进行并行化和稀疏操作(使用 GPU)?
  • 谁能确认他能够使用Matrix包在 CUDA/GPU 计算上运行矩阵运算?

据我查看堆栈和其他论坛,这个问题不应该是重复的。

0 投票
1 回答
386 浏览

julia - Julia:将 CHOLMOD 因子转换为稀疏矩阵并再次转换回来

我有一个稀疏矩阵的 CHOLMOD 分解H,我想编辑上、下和块对角因子的稀疏表示。我怎样才能做到这一点?当我运行以下命令时,最后一行不起作用。

有什么方法可以从稀疏矩阵反向到CHOLMOD.factor?

0 投票
0 回答
1624 浏览

c++ - 使用 CMake 配置 ceres-solver 并找不到 SuiteSparse 配置标头

我正在尝试使用 CMake 配置 Ceres 以在我的 Windows 机器上构建。我在我的机器上构建了 Suitesparse v4.4.4,并指向了所有适当的目录和库。所以我相信我在配置中正确包含了 SuiteSparse - 但是当我在 CMake 中配置时,我不断收到一个奇怪的错误:

未找到 SUITESPARSE_CONFIG 标头(可选的 SuiteSparse 组件)。

找到 SUITESPARSE_CONFIG 库:C:/Program Files/Common Files/MSVC/SUITESPARSE/suitesparse-metis-for-windows-1.3.0/build_VS2015/install/lib64/suitesparseconfig.lib

未找到 UFCONFIG 标头(可选的 SuiteSparse 组件)。

-- 未能找到 SuiteSparse - 未能找到:SuiteSparse_config 标头和库(应存在于所有 SuiteSparse >= v4 安装中)或 UFconfig 标头(应存在于所有 SuiteSparse < v4 安装中)。

找到 METIS 库:C:/Program Files/Common Files/MSVC/SUITESPARSE/suitesparse-metis-for-windows-1.3.0/build_VS2015/install/lib64/metis.lib

找到 SuiteSparse:TRUE(找到版本“4.4.4”)

-- 找到 SuiteSparse 4.4.4,使用 SuiteSparse 构建。

由于某种原因,它说它找不到 SuiteSparse_CONFIG 标头。但是有一个名为 SuiteSparse_Config.h 的文件清楚地位于我的 SuiteSparse 文件中的包含文件夹中(我在 CMake 配置中指向该文件)。例如,我已包含条目 SUITESPARSE_INCLUDE_DIR_HINTS、SUITESPARSE_INCLUDE_DIR 和 SUITESPARSE_CONFIG_HEADER(它们指向我的 PC 上 SuiteSparse_config.h 文件所在的 PATH 和 FILEPATH):

C:/Program Files/Common Files/MSVC/SUITESPARSE/suitesparse-metis-for-windows-1.3.0/build_VS2015/install/include/suitesparse/SuiteSparse_config.h

如上面第一个引用所示,我可以在 CMake 中“生成”ceres-solver 并在 Visual Studio 中打开项目。但是,当我去构建项目时,由于无法找到 SuiteSparse 配置头,它们中的许多都无法构建。

为什么 CMake 一直说找不到 SUITESPARSE_CONFIG 标头?我觉得问题与如何在 CMakeLists.txt 文件之一中识别此配置文件有关(我认为,在 SuiteSparse 源文件夹中)。但是,实际的头文件通常不会在 CMake 源文件中指定。我需要对 CMakeLists.txt 文件进行某种编辑以使其找到并使用 SuiteSparse_config.h 标头(和源)文件吗?

0 投票
1 回答
158 浏览

visual-studio-2015 - 错误 LNK2001:未解析的外部符号 Visaul C++ SuiteSparse lib

我使用 Visual C++ 2015。当我尝试构建我的 g2o 示例代码时收到以下错误。

大约 172 个错误与 LNK2001 和 LNK2019 相关。当我检查文件时,它显示大多数错误都与 SuiteSparse 中的库有关。我已经检查了库目录和其他库目录。但它仍然弹出这些错误。我是g2o领域的新手。如果有人能给我你的好意,我将不胜感激。

0 投票
1 回答
214 浏览

c++ - 是否可以将 CHOLMOD 与设备内存中已有的矩阵一起使用?

我想使用 CHOLMOD 的 GPU 加速,并找到了几个关于如何使用库进行 Cholesky 分解的简单示例。然而,所有示例都在主机内存中向 CHOLMOD 提供了矩阵,并允许它将它们复制到设备中。我正在处理的项目已经将这些矩阵驻留在设备内存中,因为它们是并行构建的,并且在执行 Cholesky 分解后将在 GPU 上执行更多处理。

我的问题是:是否可以将 CHOLMOD 直接与设备内存接口?为了避免复制到主机内存,只是让 CHOLMOD 将其复制回设备?

抱歉,如果这不是问这个问题的正确地方,如果有人可以将我指向一个用户论坛,那也很棒。

0 投票
1 回答
126 浏览

c++ - CHOLMOD 稀疏密集乘法问题

我正在测试 cholmod 以解决稀疏矩阵系统。作为 Ax=b 等式的 b,我想使用会导致已知结果的东西,所以我选择将一个向量声明为 xe,并且 b=A*xe。

我尝试了一些不同的方法来进行稀疏矩阵密集向量乘法,但没有成功。作为第一个测试,我使用来自SuitSparse 矩阵集合的 ex15 矩阵

我希望 b 是 A*xe 操作的结果,所以类似于

(从matlab检查)但显示的代码将打印一个零向量,我对sdmult所做的事情有问题。

0 投票
1 回答
94 浏览

c++ - 如何从 SuiteSparseQR_factorization 对象中找到 (Q, R )?

在 SuiteSparse 的 C++ 接口中,我可以使用

计算矩阵 A 的 QR 分解,以便我可以重用 QR 进行进一步计算。但我想知道我可以直接从这个 QR 对象中获得真正的 Q、R 吗?

0 投票
0 回答
192 浏览

python - 在 cython 包装器中使用 scikit-sparse 的 cholmod?

我正在尝试编写一个 Cython 包装器来从 Python 接口 C 代码。

C 库使用 Suitesparse 的 CHOLMOD,所以我认为安装scikit-sparse(它使用cholmod.pyx包含我需要的所有内容的)将是一种简洁的方式。但是,我没有成功地寻找包含 CHOLMOD 的这些定义的解决方案,并且我想避免cholmod.pxd使用我需要的结构的 typedef 来编写“我自己的”。

作为一个最小的例子,假设我有一个foo.h头文件,它定义了一个结构,该结构又包含一些 CHOLMOD 结构,以及一些虚拟函数。我的 Cython 定义文件如下所示:

实施可以是:

显然这将失败,因为cholmod_common等。在定义文件中是未知的(错误读取'cholmod_common' is not a type identifier)。我试过类似的东西from sksparse.cholmod cimport *,但无济于事......

有没有办法以某种方式导入这些类型标识符(来自scikit-sparse或其他来源)以按照我的定义文件中描述的方式使用它们?

0 投票
1 回答
926 浏览

c++ - 在 Ubuntu 中编译 SuiteSparse,安装 CHOLMOD 时中断

我已经从以下GitHub下载了 SuiteSparse 的 .zip 。我正在尝试在 Ubuntu 中安装/编译 C/C++ 库。我正在使用适用于 Linux 的 Windows 子系统并从 Microsoft Store 安装了 Ubuntu。

SuiteSparse 指令说要 cd 到 SuiteSparse-5.5.0 目录,然后输入make. 生成文件在这里。自述文件建议我需要 make、g++、gcc 和 cmake,所以我使用sudo apt install <package name>. 这是我收到的错误消息make 2>error

我已经关闭了我的防病毒软件,它一直在阻止 makefile 写入某些文件夹。可能出了什么问题?似乎 makefile 试图安装一堆以 CHOLMOD 开头的库,并在这样做时停滞不前。我已经阅读了一些相关的 问题。第一个似乎不适用于这里,因为我没有更改 PATH,第二个建议使用我已经在做的 Metis。