密集与稀疏矩阵代数的速度

拉里·汉西克(Larry Hunsicker)

我将在R中使用非常大(7 e6 x 4.5 e3)但非常稀疏的矩阵进行工作。因此,我试图了解如何有效地处理稀疏矩阵。我有两个相关的问题。

首先:我被理解为该Matrix软件包会自动链接到LAPACK和SuiteSparse编译的dll。(我在Windows中工作。)给我的印象是,与使用LAPACK套件使用密集矩阵相比,使用SuiteSparse例程将缩短执行时间。但低于运行测试表明,在运行时为稀疏的版本矩阵的是较密的版本慢。

> library(Matrix)
> sparse <- sparseMatrix(1:4, 1:4, x=rnorm(4))
> dense <- as.matrix(sparse)
> x <- 1:4
> system.time(for (i in 1:10000) sparse %*% x)
   user  system elapsed 
   0.23    0.00    0.23 
> system.time(for (i in 1:10000) dense %*% x)
   user  system elapsed 
      0       0       0 
> system.time(for (i in 1:1000) solve(sparse))
   user  system elapsed 
   3.94    0.00    3.94 
> system.time(for (i in 1:1000) solve(dense))
   user  system elapsed 
   0.05    0.00    0.05

a)我可以正确Matrix连接上述两个已编译的库吗?如果没有,如何链接到这些DLL?b)稀疏矩阵代数的使用实际上真的比密集矩阵代数的使用慢了很多吗?

第二:我已经安装了RcppEigenRcppArmadillo软件包。我已经能够使用RcppArmadillo(使用Dirk Eddelbuettel和Conrad Sanderson的论文)来编译测试程序但是对于我的一生,我还没有找到类似的介绍来RcppEigen为我提供一些可以用来入门的模型代码。你们中有人可以指向类似于Eddelbuettel和Sanderson的论文可以帮助我入门的文档RcppEigen吗?

本·博克(Ben Bolker)

(发表评论的时间太长了。)我将首先对更大的矩阵进行概要分析。我可以想象,当矩阵较小且不是非常稀疏时(例如,在这种情况下,有25%的单元格为非零),稀疏算法处于不利地位在下面的示例(1000x1000矩阵)中,稀疏求解器的速度是密集求解器的26倍。您可能会发现这些Matrix例程足够快地满足您的目的,而无需承担学习(Rcpp)Eigen/学习的额外认知开销(Rcpp)Armadillo

library(rbenchmark)
library(Matrix)
set.seed(101)
sparse <- sparseMatrix(1:1000,1:1000,x=rnorm(1000))
dense <- as.matrix(sparse)
benchmark(solve(sparse),solve(dense),replications=20,
          columns = c(
       "test", "replications", "elapsed", "relative", "user.self"))
##            test replications elapsed relative user.self
## 2  solve(dense)           20   6.932   26.868     6.692
## 1 solve(sparse)           20   0.258    1.000     0.256

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

稀疏矩阵的矩阵乘法速度是否比密集矩阵快?

来自分类Dev

稀疏矩阵乘以密集矩形矩阵

来自分类Dev

从python中的矩阵的稀疏到密集表示

来自分类Dev

在稀疏矩阵中找到最密集的n * n子矩阵

来自分类Dev

使用cuSPARSE将密集矩阵转换为稀疏CSR格式

来自分类Dev

将稀疏矩阵行转换为密集泄漏存储

来自分类Dev

使用cuSPARSE进行稀疏加密集矩阵运算

来自分类Dev

具有稀疏三角矩阵的线性代数

来自分类Dev

将稀疏矩阵转换为密集矩阵时出现MemoryError错误?(numpy,scikit)

来自分类Dev

如何将稀疏矩阵转换为密集邻接矩阵?

来自分类Dev

tensorflow:使用 tf.matmul 将稀疏矩阵与密集矩阵相乘时出错

来自分类Dev

如何将多个稀疏矩阵和密集矩阵组合在一起

来自分类Dev

Scikit-Learn的管道:通过了稀疏矩阵,但是需要密集数据

来自分类Dev

向scipy中的稀疏矩阵添加密集矢量(通过广播)

来自分类Dev

密集和稀疏矩阵的高效(时间和空间复杂性)数据结构

来自分类Dev

如何将.txt的稀疏表示形式转换为scipy中的密集矩阵?

来自分类Dev

当稀疏矩阵变得过于密集时,CHOLMOD超节点分解失败

来自分类Dev

向scipy中的稀疏矩阵添加一个密集矢量(通过广播)

来自分类Dev

当我们在稀疏矩阵上执行apply()时,它会自动将其转换为密集矩阵吗?

来自分类Dev

当我们在稀疏矩阵上执行apply()时,它会自动将其转换为密集矩阵吗?

来自分类Dev

使用cuSPARSE的密集到稀疏和稀疏到密集转换

来自分类Dev

密集和稀疏向量的求和

来自分类Dev

稀疏矩阵矩阵乘法

来自分类Dev

稀疏矩阵-矩阵乘法

来自分类Dev

确定稀疏矩阵(Lil矩阵)的稀疏性

来自分类Dev

Theano:在密集 -> 稀疏 -> 密集转换后恢复可广播设置

来自分类Dev

犰狳稀疏密集乘法的CSCMM

来自分类Dev

密集向量列到稀疏向量列

来自分类Dev

Numpy 矩阵乘积 - 稀疏矩阵

Related 相关文章

  1. 1

    稀疏矩阵的矩阵乘法速度是否比密集矩阵快?

  2. 2

    稀疏矩阵乘以密集矩形矩阵

  3. 3

    从python中的矩阵的稀疏到密集表示

  4. 4

    在稀疏矩阵中找到最密集的n * n子矩阵

  5. 5

    使用cuSPARSE将密集矩阵转换为稀疏CSR格式

  6. 6

    将稀疏矩阵行转换为密集泄漏存储

  7. 7

    使用cuSPARSE进行稀疏加密集矩阵运算

  8. 8

    具有稀疏三角矩阵的线性代数

  9. 9

    将稀疏矩阵转换为密集矩阵时出现MemoryError错误?(numpy,scikit)

  10. 10

    如何将稀疏矩阵转换为密集邻接矩阵?

  11. 11

    tensorflow:使用 tf.matmul 将稀疏矩阵与密集矩阵相乘时出错

  12. 12

    如何将多个稀疏矩阵和密集矩阵组合在一起

  13. 13

    Scikit-Learn的管道:通过了稀疏矩阵,但是需要密集数据

  14. 14

    向scipy中的稀疏矩阵添加密集矢量(通过广播)

  15. 15

    密集和稀疏矩阵的高效(时间和空间复杂性)数据结构

  16. 16

    如何将.txt的稀疏表示形式转换为scipy中的密集矩阵?

  17. 17

    当稀疏矩阵变得过于密集时,CHOLMOD超节点分解失败

  18. 18

    向scipy中的稀疏矩阵添加一个密集矢量(通过广播)

  19. 19

    当我们在稀疏矩阵上执行apply()时,它会自动将其转换为密集矩阵吗?

  20. 20

    当我们在稀疏矩阵上执行apply()时,它会自动将其转换为密集矩阵吗?

  21. 21

    使用cuSPARSE的密集到稀疏和稀疏到密集转换

  22. 22

    密集和稀疏向量的求和

  23. 23

    稀疏矩阵矩阵乘法

  24. 24

    稀疏矩阵-矩阵乘法

  25. 25

    确定稀疏矩阵(Lil矩阵)的稀疏性

  26. 26

    Theano:在密集 -> 稀疏 -> 密集转换后恢复可广播设置

  27. 27

    犰狳稀疏密集乘法的CSCMM

  28. 28

    密集向量列到稀疏向量列

  29. 29

    Numpy 矩阵乘积 - 稀疏矩阵

热门标签

归档