矩阵乘法的性能在不同的R安装中变化

时间:2012-04-13 11:15:03

标签: r

我可以访问已安装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。是否有任何特殊的库缺少第二个集群?我如何找到哪一个?感谢。

修改 添加有关群集的更多详细信息:

的Cluster-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

Cluster-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

1 个答案:

答案 0 :(得分:2)

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

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

你也可以尝试编译和其他技巧: Speed up the loop operation in R