1
私はちょうど私が私のプロジェクトのため Microsoft Azure Machine Learning Studioを使用することを計画していたよう

パラレルは* Azureの機械学習メーカーに適用

Rに並列性を持つ自分が知り合いになり始めている

、私は並列処理のために何Microsoft R Openオファーを調査し始めた、としていますしたがって、私はthisを見つけました。このコードでは、Rコードを変更することなく、すべての使用可能なコアの利点を活用するフードの下で並列処理が行われると言われています。この記事では、いくつかのパフォーマンスベンチマークも示していますが、そのほとんどは数学的操作を行う上でパフォーマンス上のメリットを示しています。

これまでのところ良好でした。さらに、私はまた、それがフードの下で*apply関数を並列化するかどうかを知ることにも興味があります。

  1. Quick guide to parallel R with snow::私はまた、一般的に*apply機能を並列化する方法について説明し、これらの2件の記事を見つけましたsnowパッケージ、par*apply機能ファミリ、およびclusterExportを使用して並列処理を容易と説明しています。
  2. A gentle introduction to parallel computing in Rparallelパッケージ、par*applyファンクションファミリ、および値を環境にバインドします。

だから私の質問は、私は、マイクロソフトのAzure機械学習Studioで*applyの機能を使用するときで、それはデフォルトではボンネットの下に並列化されます、または私はparallelsnowなどのようなパッケージを利用するために必要ですか?

答えて

4

個人的には、並列化/マルチスレッディングについて大したことはしませんが、私たちは少し異なってMROを市販することができたと思います。まぁ。

Rには、線形代数計算に使用されるルーチンを実装するRblas.dll/.soが付属しています。これらのルーチンはさまざまな場所で使用されますが、1つの一般的な使用例は、回帰モデルの適合です。 MROを使用して標準のRblasをIntel Math Kernel Libraryを使用するものに置き換えます。 lmglmのような関数を呼び出すと、MROは複数のスレッドを使用し、CPUの命令をモデルに合わせて最適化します。これにより、標準実装よりも大幅な高速化が可能になります。

この種のスピードアップを得るには、MROだけではありません。同様に最適化された他のBLAS実装をコンパイル/ダウンロードすることもできます。簡単なワンステップダウンロードだけです。

MKLは、線形代数を含むコードにのみ影響することに注意してください。汎用的なスピードアップツールではありません。行列計算を行わないRコードでは、パフォーマンスの向上は見られません。特に、明示的なのパラレル化を含むコード(パラレルパッケージ、SNOW、または他のクラスタコンピューティングツールを使用するコードなど)を高速化することはありません。

一方、のいずれかになりません。並列、SNOWなどのパッケージを使用して、計算クラスタを作成し、コードを複数のプロセスに分散することができます。この点でMROは通常のCRAN Rと同じように機能します。ただし、1台のマシンにノードのクラスタを作成する場合は、MKLスレッドの数を減らす必要があります。そうしないと、CPUコアのノード間の競合が発生し、パフォーマンスが低下します。

開示:私はMicrosoftの仕事をしています。