3

我可以访问已安装 R 的两个集群。一直以来,我一直在对我的东西进行编码和测试。当我将代码移动到新集群时,突然所有矩阵乘法都变得非常慢。以下是一些数字:

Cluster-1:
> a <- matrix(0, nrow=2000, ncol=2000)
> b <- matrix(0, nrow=2000, ncol=2000)
> system.time(c <- a %*% b)
   user  system elapsed 
   0.07    0.03    0.10

Cluster-2:
> a <- matrix(0, nrow=2000, ncol=2000)
> b <- matrix(0, nrow=2000, ncol=2000)
> system.time(c <- a%*% b)
   user  system elapsed 
 13.682   0.014  13.695

请注意,我没有使用任何稀疏矩阵。

Cluster-1 使用 R 版本 2.12.1,Cluster-2 使用 R 版本 2.15.0。第二个集群是否缺少任何特殊库?我如何找到哪一个?谢谢。

编辑: 添加有关集群的更多详细信息:

集群 1:

> sessionInfo()
R version 2.12.1 (2010-12-16)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=C              LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

集群 2:

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.iso885915       LC_NUMERIC=C                  
 [3] LC_TIME=en_US.iso885915        LC_COLLATE=en_US.iso885915    
 [5] LC_MONETARY=en_US.iso885915    LC_MESSAGES=en_US.iso885915   
 [7] LC_PAPER=C                     LC_NAME=C                     
 [9] LC_ADDRESS=C                   LC_TELEPHONE=C                
[11] LC_MEASUREMENT=en_US.iso885915 LC_IDENTIFICATION=C           

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
4

1 回答 1

2

您可能正在使用未优化的 BLAS。见这里的例子: http ://www.cybaea.net/Blogs/Data/Faster-R-through-better-BLAS.html

如果是这样,这很容易解决。

您还可以尝试编译和其他技巧: 加快 R 中的循环操作

于 2012-04-13T11:57:57.580 回答