12

R で termstrc 利回り曲線分析パッケージを実行して、5 か国の 10 年間の毎日の債券価格データを調べています。これは非常に計算集約的で、標準的なラップリーで国ごとに 3200 秒かかります。2009 i7 mac で foreach と %dopar% (doSNOW を使用) を使用すると、4 つのコア (8 つはハイパースレッディングを使用) をすべて使用すると、次のようになります。 850 秒。国を追加するたびに (国間のスプレッドを計算するために) この分析を再実行する必要があり、今後さらに多くのクレジット イールド カーブが追加される予定の 19 か国が残っています。かかる時間は大きな問題のように見え始めています。ちなみに、問題のtermstrc解析関数はRでアクセスしているのにCで書いています。

現在、私たちは 12 人の小さな会社です (予算は限られています)。全員が 8 GB の RAM、i7 PC を備えており、そのうちの少なくとも半分は日常的なワープロ/電子メール/ブラウジング スタイルのタスクに使用されています。つまり、5% を使用しています。彼らのパフォーマンスを最大限に。それらはすべて、ギガビット (ただし 10 ギガビットではない) イーサネットを使用してネットワーク化されています。

これらのあまり使用されていない PC の一部を MPI を使用してクラスター化し、それら全体で R 分析を実行できますか? ネットワークは影響を受けますか? 利回り曲線分析関数の各反復には約 1.2 秒かかるため、並列処理の粒度が関数の反復全体を各クラスター ノードに渡すことである場合、1.2 秒はギガビット イーサネットの遅延と比較してかなり大きくなるはずだと思います。

これはできますか?どのように?そして、その影響は私の同僚にどのような影響を与えるでしょうか。私が彼らのマシンに負荷をかけている間、彼らはメールを読み続けることができますか?

Open MPI は Windows をサポートしていないようですが、MPICH はサポートしているようです。もしあれば、どれを使いますか?

おそらく、各 PC で Ubuntu 仮想マシンを実行しますか?

4

3 に答える 3

11

はい、できます。いくつかの方法があります。最も簡単な方法の 1 つは、redisをバックエンドとして使用することです (Ubuntu マシンで呼び出すsudo apt-get install redis-serverのと同じくらい簡単です。Windows マシンでも redis バックエンドを使用できるという噂があります)。

doRedisパッケージを使用すると、redis のタスク キューにジョブを非常に簡単にエンキューし、1 つ、2 つ、... のアイドル状態のワーカーを使用してキューにクエリを実行できます。何よりも、オペレーティング システムを簡単に混在させることができるので、同僚の Windows マシンが対象となります。さらに、必要に応じて 1 つ、2 つ、3 つ、... のクライアントを使用し、スケールアップまたはスケールダウンすることができます。キューは認識も気にもせず、ジョブを提供するだけです。

何よりも、 doRedisのビネットには、ブートストラップの例を高速化するために、Linux と Windows のクライアントを組み合わせた動作例があります。

于 2013-02-23T19:40:58.730 に答える
6

おそらくあなたが探していた答えではないかもしれませんが、これは代替案が非常に優れているため、無視するのが難しい状況の 1 つです。

AWS クラスターのコストは、まさにこれらの種類のコンピューティングの問題に対して、とてつもなく低い(私の強調)。使用した分だけお支払いいただきます。12 台の Windows マシンをクラスターに変換するのに時間を費やさないことで、(少なくとも機会費用で) お金を節約できることを保証できます。あなたの目的のために、おそらく無料でこれを行うことさえできます. (IIRC、彼らはまだクラスターで無料のコンピューティング時間を提供しています)

参考文献:

これらのインスタンスのいくつかは非常に強力であるため、クラスターで作業をセットアップする方法を理解する必要さえないでしょう (現在の説明を考えると)。参照からわかるように、コストは途方もなく低く、1 時間の計算時間あたり 1 ~ 4 ドルです。

于 2013-02-23T10:38:48.270 に答える