1

R の並列処理に慣れ始めたばかりです。

プロジェクトにMicrosoft Azure Machine Learning Studioを使用することを計画しているため、 Microsoft R Openが並列処理に提供するものを調査し始めました。 Rコードを変更せずに、利用可能なすべてのコア。この記事では、いくつかのパフォーマンス ベンチマークも示していますが、それらのほとんどは、数学演算を実行する際のパフォーマンスの利点を示しています。

ここまでは良かったです。*applyさらに、内部の機能を並列化するかどうかも知りたいです。*applyまた、関数を一般的に並列化する方法を説明している次の 2 つの記事も見つけました。

  1. 並列 R のクイック ガイド with snowsnow :パッケージ、par*apply関数ファミリ、およびを使用して並列処理を促進する方法について説明しますclusterExport
  2. R での並列計算の穏やかな紹介:parallelパッケージ、par*apply関数ファミリ、および環境への値のバインドの使用。

私の質問は、いつ*applyMicrosoft Azure Machine Learning Studio の関数を使用するのか、それは既定で内部で並列化されるのか、それとも などのパッケージを利用する必要があるのか​​ということparallelですsnow

4

1 に答える 1

5

個人的には、並列処理やマルチスレッドについて大したことをしなくても、MRO のマーケティングを少し違った方法で行うことができたと思います。まぁ。

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

この種の高速化を実現する方法は MRO だけではありません。同様に最適化された他の BLAS 実装をコンパイル/ダウンロードすることもできます。ワンステップで簡単にダウンロードできるようにしています。

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

一方で、それらを劣化させることもありません。並列、SNOW などのパッケージを使用して、コンピューティング クラスターを作成し、コードを複数のプロセスに分散させることができます。この点で、MRO は通常の CRAN R と同じように機能します。(ただし、1 台のマシン上にノードのクラスターを作成する場合は、MKL スレッドの数を減らすことをお勧めします。そうしないと、ノード間で CPU コアの競合が発生し、パフォーマンスが低下する可能性があります。)

開示:私はマイクロソフトで働いています。

于 2016-10-09T14:51:38.777 に答える