我可以访问已安装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
答案 0 :(得分:2)
您可能正在使用未经优化的BLAS。请看这里的例子: http://www.cybaea.net/Blogs/Data/Faster-R-through-better-BLAS.html
如果是这样,这很容易解决。
你也可以尝试编译和其他技巧: Speed up the loop operation in R