2012-04-13 20 views
3

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

私はスパース行列を使用していません。

クラスタ1はRバージョン2.12.1を使用し、クラスタ2はRバージョン2.15.0を使用します。 2番目のクラスタには特別なライブラリがありますか?どのように見つけるのですか?ありがとう。

EDIT:クラスターの詳細を追加

クラスタ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 

答えて

2

あなたは最適化されていない使用してもよいですBLAS。例についてはこちらをご覧ください: http://www.cybaea.net/Blogs/Data/Faster-R-through-better-BLAS.html

もしそうなら、簡単に修正できます。

また、コンパイルや他のトリックを試すことができます。 Speed up the loop operation in R

+0

私は操作も通常のRBLASと遅い狂気であることのために他の何かが起こって、13secがあることを考えているだろう。クラスタ上で何か他のものが動作している可能性がありますか? – Hansi

+0

@Hansi、私のマシン(数年前)で、 'c < - a%*%b'は12秒かかります。しかし、おそらく両方のクラスタから 'sessionInfo()'の結果を投稿する@isEmptyは役に立ちます。 – BenBarnes

+0

私はクラスタへのルートアクセス権を持っていません。だから私はレポから何もインストールすることはできません。また、フォーラムのどこかで、Atlasをコンパイルするのは単純な作業ではないことがわかりました。私はシステム管理者と話し、それについて何ができるかを見てください。 – isEmpty

関連する問題