3

R がインストールされている 2 つのクラスターにアクセスできます。私はこれまでずっと、自分のものをコーディングしてテストしてきました。コードを新しいクラスターに移動したところ、突然、すべての行列乗算が非常に遅くなりました。ここにいくつかの数字があります:

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 を使用します。2 番目のクラスターにない特別なライブラリはありますか? どちらを見つけるにはどうすればよいですか?ありがとう。

編集: クラスターに関する詳細を追加:

クラスター-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 に答える