Rコードで複数のプロセッサを使用するための提案はありますか?


28

さまざまなファイルから大量のcsvデータを読み取るためのRスクリプトがあり、分類のためにsvmなどの機械学習タスクを実行します。
Rのサーバー上で複数のコアを使用するためのライブラリはありますか。
それ
を実現するのに最適な方法は何ですか?


データをインポートしてSVMを実行するという事実が、どのように質問に関連するのかがわかりません。だからこそ、SOの質問だと思います。しかし、XrefsはR ...であるため、長期的なソリューションとして適切であると考えることができました。-
シェーン

3
ここでこの種のQ&Aに問題はありません。Rは、クォンタムが自然に言う「PythonやJavaのような」主流言語ではないので、「これは一般的なプログラミングの質問なので、StackOverflowなどに行ってこれを尋ねるか、解決策を探すべきです」と言っています。実際には、Rメーリングリストまたはグループサイトの質問です。Rを学びたい新進のアナリストにサービスを提供するために、ここでも答えが得られてうれしいです。
ポール

2
開いたままに投票してください。なぜなら、私たちの問題を並行ストリームに分解できる方法とできない方法は、質問に関連しているからです。
ラッセルピアス

@chl:これを増やしてくれてありがとう。実際、私はこのスレッドが登場してすぐに、このスレッドからのすべての非商用参照をチェックアウトしましたが、Win 7 x64で動作するものを見つけることができませんでした。
whuber

1
whuber、私が提示するソリューションはwin 7で機能し、非商用です(詳細についてはリンク先の記事を参照してください)。それは商用環境にバンドルされていますが、それから分離することができます(私の投稿が示すように)。そして、コード自体は... GPLです
タルGalili

回答:


16

Linuxの場合、最も簡単なのはmulticoreです。それを超えて、MPIを(特にsnowパッケージで)見ることをお勧めします。

より一般的には、以下をご覧ください。

  1. ハイパフォーマンスコンピューティングビュー CRANに。
  2. 「Rを使用した並列コンピューティングの最先端」

最後に、foreachパッケージを使用して、コード内の並列バックエンドを抽象化することをお勧めします。長期的にはより便利になります。


私は主にマルチコアを使用していますが、それでも、フォールトトレランスとクリーンなインターフェイスのために、雪とRmpiよりも降雪が好きです。

降雪のための@mbq +1-雪をさらに抽象化し、Rによる並列計算を非常に簡単にします。
シャーピー


5

シェーンは正しい。どちらもマルチコアRMPIが勝者です。

このトピックのやや広い範囲は、高性能コンピューティングのCRANタスクビューにあります。これは、JSSのRを使用したParallel Computingに関するごく最近の調査記事にもリンクしています。

最後に、いくつかの実践的な例とヒントが、Rを使用したHPC入門チュートリアルに時々あります。先週のuseRでの最新のコピーについては、プレゼンテーションページを参照してください


さて、ミューテックスが必要です。あなたの答えについてコメントしたように、私は最初の(生の)バージョンを見ただけでよく理解しました。mcとRmpiを拡張するかもしれません。そして、あなたはそうしました、そして、私は模倣のように見えます。それが人生だ。
ダークエデルブエッテル

一方、私の答えは過去にあなたの論文/プレゼンテーションを読んで得たものです。だから私もあなたをコピーしていると思います。
シェーン

5

以前の回答には、一般的なHPCの考慮事項が欠けていることに気付きました。
まず、これらのパッケージのいずれも、1つの SVMを並行して実行できません。したがって、高速化できるのはパラメーターの最適化または相互検証ですが、それでも独自の関数を作成する必要があります。または、場合によっては、異なるデータセットに対してジョブを並行して実行することもできます。
2番目の問題はメモリです。数台の物理コンピューターに計算を広げたい場合は、無料の昼食はありません。データをコピーする必要があります。ここでは、コンピューター間でデータのコピーを事前に配布して通信を節約することが理にかなっているかどうかを考慮する必要があります。一方、1台のコンピューターで複数のコアを使用する場合、すべての子プロセスが親プロセスのメモリにアクセスできるため、マルチコアが特に適切であり、時間と多くのメモリスペースを節約できます。


1
+1これが相互検証の分割に対処していないことに関する素晴らしい点。
シェーン

ちなみに、dCSE(hector.ac.uk/cse/distributedcse/reports/sprint03/…)による個々のSVMのHPCの有効化に関する最近の作業(2013)があります。sprint機能を備えたRのパッケージがありますが、psvmR 3.0の変更と新しいCRAN提出ガイドラインに遅れをとっていないため、現在のダウンロードはCRANで利用できないか、R 3.0と完全に互換性がありません。あなたのマイレージは異なる場合があります。
ブライトスター

3

シェーンとダークの両方の回答が注目されています。

それにもかかわらず、大きなデータセットを処理し、複数のコアで実行するために構築されたRevolution Rと呼ばれるRの商用バージョンを見てみたいかもしれません。このソフトウェアは学者には無料です(あなたの場合かもしれませんが、私は知りません)


5
私はいくぶん同意しません。レボリューションは、マインドシェアを獲得する上で素晴らしいセールスジョブを行います(投稿で証明されています)が、現時点では、通常のR(少なくともLinuxでは)ではまだ得られない製品はほとんどありません。確かにインテルMKLですが、Goto Blasを入手できます。Windowsでは、マルチコアをそこに構築できないので役立つdoSMPを提供します。
ダークエデルブッテル

2
しかし、もちろん、doSMPは、Windows環境で作業している場合にOPがまさに探しているものです。
ラッセルピアス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.