2011-12-28 8 views
0

"包括的"メソッドを使用してleapsパッケージからregsubsetsを実行するRstudioサーバーでマルチコアを実装できるようにコードを書き直すにはどうすればよいですか?コードはここに短縮されているので、データは1200個の変数と9000台のOBSを持っていますRstudioサーバーでregsubset網羅的メソッドを使用するときにマルチコアプロセッサを実装する方法

model<-regsubsets(price~x + y + z + a + b + ...., data=sample, 
        nvmax=500, method=c("exhaustive")) 

当社のサーバーは、クアッドコア7.5ギガバイトのRAMであり、このような方程式のための十分なことはありますか?ちょうどそれを試してみると参照してください。私が言うあなたの2番目の質問に関しては

答えて

0

。一般的に、1200倍の9000データセットは特に大きいわけではありませんが、動作するかどうかは、regsubsetsがフードの下で何をするかにも依存します。

一般的には、ここでのアプローチは、あなたのケース4つのコアで、バラバラに問題をカットし、コア上の部分のそれぞれを実行することです。パラレル化は、コアで実行するプロセスに時間がかかる場合(たとえば10分)に最も効果的です。時間が非常に短い場合、並列化のオーバーヘッドは、全体の分析にかかる時間を増加させるだけに役立ちます。あなたのサーバ上にクラスタを作成することは非常に簡単です。 SNOW(CRANで利用可能)。私がよく使用するアプローチは、doSNOWパッケージを使用してクラスタを作成してから、plyrパッケージの機能を使用する方法です。 A blog post私は最近、いくつかのバックグラウンドとサンプルコードを提供しています。あなたの特定のケースで

regsubsetsは、箱から出して並列化をサポートしていない場合、あなたは、いくつかのコーディングを自分で行う必要があるでしょう。私はregsubsetsのような可変選択メソッドは、データセット全体を使用する必要があると考えています。したがって、いくつかのregsubsetsを並行して実行することによって並列化を解決することは実現不可能です。ですから、あなたは並列化を含めるために関数を適合させなければならないと思います。関数の中のどこかで、さまざまな変数の選択が評価されます。そこでは、それらの評価を異なるコアに送ることができます。このような評価にわずかな時間しかかからない場合、並列化のオーバーヘッドは解析の速度を遅くすることに注意してください。その場合、各ノードで費やされる時間を増やし、並列化によるオーバーヘッドの量を減らすために、各コアに評価のグループを送信する必要があります。

+0

クランチングはFORTRANに渡されるため、その直前に並列化を実装するか、またはFORTRANコード自体で並列化を実装する必要があります。 –

+0

典型的な問題については、どのくらいの時間がかかりますか?変数に対するループは、FORTRANまたはRで行われますか? FORTRANでの並列化は、Rで行うよりもさらに大きな課題になるかもしれません。 –

+0

パッケージのソースコードから何を収集できるのですか?RはFORTRANコードのラッパーです。私はFORTRANに精通した人がFORTRANのソースを見て、そのコードがどのように並列化可能であるかについてコメントするのを待つでしょう。興味深い問題だ。 –

関連する問題