5

最新のUbuntuリリース(karmic koala)以来、内部RパッケージがREvolutionパッケージの起動時にアドバタイズすることに気づきました。高性能行列計算用のライブラリコレクションのようです。そして、どうやら、それは本当に機能しているようです。たとえば、REvolutionを使用した行列転置の場合:

> system.time(t(matrix(rnorm(10000000),ncol=1000)))
   user  system elapsed 
  1.280   0.150   1.556 

そして革命なしで:

> system.time(t(matrix(rnorm(10000000),ncol=1000)))
   user  system elapsed 
  1.320   0.170   1.725 

誰か使っていますか?本当に機能していますか?どの特定の種類の計算が改善され、どのように改善されていますか?何か欠点はありますか?

ありがとう :-)

4

3 に答える 3

10

はい、マルチコアマシンでは、BLASを実装し、パッケージによって提供され、パッケージによってrevolution-mklオンにされるIntel MKLライブラリr-revolution-revobaseは、線形代数の問題に対して並行して機能します。 libblas*パッケージ。

ただし、上記の例はそれほど重要ではありません。私はよく次のようなことをします。

 mean(replicate(N, system.time( someStuffHere() )["elapsed"]), trim=0.05)

多数の反復にわたってトリム平均を計算します。

さらに重要なことに、この例には、i)高価で、ii)使用する方法に不変であるため、の外で生成する必要があるタイミングでのRNG描画が含まれていることに注意してくださいsystem.time()

MKLに加えて、revolution-r並列実行に使用できるCRANからのREvolutionによって作成されたパッケージのいくつかも持ち込みます。

(免責事項:Ubuntu 9.10でこれをまとめるのにREvoを支援しました)

于 2009-11-17T13:37:41.253 に答える
4

詳細については、REvolutionのこのブログ投稿を参照してください。REvolution R 3.0は、CRANのR-2.9.2と100%互換性がある必要があります。基本的に、それらはマルチスレッドの高性能線形代数ライブラリと最適化コンパイラを使用します。革命の機能強化には次のものが含まれます。

REvolutionのWebページには、REvolutionRのパフォーマンスシンプルなベンチマークというベンチマークがいくつかあります。

彼らはOSSライセンス( foreachiteratorsdoSNOWdoMC )の下でRコミュニティにいくつかの興味深い拡張機能を提供してきましたが、MKL拡張機能は独自のものです。

個人的には、(CRAN)R 2.10.0に切り替えて、最新のR機能を使用しています。

于 2009-11-17T13:33:59.280 に答える
4

タイミングについてDirkが述べたことを繰り返しますが、あなたの場合、マトリックスの構築にはほとんどの時間がかかります。タイミング関数の外でヤンクすると(私のシステムでは、REvolutionがない場合)何が起こるかを見てください。

> system.time(t(matrix(rnorm(10000000),ncol=1000)))
   user  system elapsed 
  2.256   0.317   2.576 

> mt <- matrix(rnorm(10000000),ncol=1000)
> system.time(t(mt))
   user  system elapsed 
  0.137   0.070   0.204 

言い換えれば、時間の90%以上がマトリックスの構築に費やされ、10%未満がマトリックスの転置に費やされます。

于 2009-11-18T20:42:11.853 に答える