私は、5か国の10年間の毎日の債券価格データにわたってRでtermstrc利回り曲線分析パッケージを実行しています。これは非常に計算集約的であり、標準のラップで国ごとに3200秒かかります。2009i7macでforeachと%dopar%(doSNOWを使用)を使用し、4つのコアすべて(ハイパースレッディングを使用して8つ)を使用すると、次のようになります。 850秒。国を追加するたびに(国間のスプレッドを計算するために)この分析を再実行する必要があります。19か国があり、将来的にはさらに多くのクレジットイールドカーブがあります。かかる時間は大きな問題のように見え始めています。ちなみに、問題のtermstrc分析関数はRでアクセスされますが、Cで記述されています。
現在、私たちは12人の小さな会社です(限られた予算を読んでください)。すべて8GBのRAM、i7 PCを備えており、そのうちの少なくとも半分は、日常的なWord処理/電子メール/ブラウジングスタイルのタスクに使用されます。つまり、5%を使用します。彼らのパフォーマンスの最大。これらはすべて、ギガビット(10ギガビットではない)イーサネットを使用してネットワーク化されています。
MPIを使用してこれらの十分に活用されていないPCの一部をクラスター化し、それら全体でR分析を実行できますか?ネットワークに影響がありますか?歩留まり曲線分析関数の各反復には約1.2秒かかるため、並列処理の粒度が関数の反復全体を各クラスターノードに渡す場合、1.2秒はギガビットイーサネットラグと比較してかなり大きくなるはずです。
これはできますか?どうやって?そして、私の同僚にどのような影響がありますか。私が彼らのマシンに課税している間、彼らは彼らの電子メールを読み続けることができますか?
Open MPIはWindowsをサポートしなくなったようですが、MPICHはサポートしているようです。もしあれば、どちらを使用しますか?
おそらく、各PCでUbuntu仮想マシンを実行しますか?
はい、できます。いくつかの方法があります。最も簡単な方法の1つは、バックエンドとして redis を使用することです(UbuntuマシンでSudo apt-get install redis-server
を呼び出すのと同じくらい簡単です。Windowsマシンでもredisバックエンドを使用できるという噂があります)。
doRedis パッケージを使用することで、非常に簡単にredisのタスクキューにジョブをエンキューしてから、1つを使用できます。 、2、...キューを照会するアイドルワーカー。何よりも、オペレーティングシステムを簡単に組み合わせることができるので、そうです、同僚のWindowsマシンが適格です。さらに、必要に応じて1つ、2つ、3つ、...のクライアントを使用し、スケールアップまたはスケールダウンすることができます。キューは認識も気にもせず、単にジョブを提供します。
何よりも、 doRedis のビネットには、ブートストラップの例を高速化するためにLinuxクライアントとWindowsクライアントを組み合わせた実用的な例があります。
おそらくあなたが探していた答えではないかもしれませんが、これは、代替案が非常に優れているために無視するのが難しい状況の1つです。
AWSクラスターのコストは、まさにこれらのタイプのコンピューティングの問題に対して途方もなく低い(私の強調)です。使用した分だけお支払いいただきます。 12台のWindowsマシンをクラスターに変換することに時間を費やさないことで、(少なくとも機会費用を)節約できることを保証できます。あなたの目的のために、あなたはおそらくこれを無料で行うことさえできます。 (IIRC、それらはまだクラスター上で無料の計算時間を提供します)
参照:
これらのインスタンスのいくつかは非常に強力なので、クラスター上で作業をセットアップする方法を理解する必要さえないでしょう(現在の説明があれば)。参考文献からわかるように、コストは途方もなく低く、計算時間の1時間あたり1〜4ドルの範囲です。
OpenCLはどうですか?
これにはCコードを書き直す必要がありますが、大幅な高速化が可能になる可能性があります。 GPUには莫大な計算能力があります。