確率分布から10億のランダムな点を生成し、これらの点を使ってモンテカルロ積分を計算する関数を評価したいと思います。問題は、MATLABを使用していて、他のプログラミング言語に関する知識がほとんどないことです。 MATLABはもちろん非常に遅く、10個の異なるプロセスで1億のポイントの値を計算することによって、統合を並列化する可能性について議論しました。これは可能なアプローチですか?もしそうなら、それを実装する最良の方法は何ですか?私の場合モンテカルロ積分の並列化
:N
が機能 を評価分布
から乱数を生成するNにより一時変数
最後に
分割一時変数を関数の評価を追加し、次のように
現在のアプローチがあります従って積分は近似されている。
次のように評価される関数である:
0発生点は数B未満である場合
発生ポイントが使用してB.
以上である場合に点とBとの間の差@ Arpiのアプローチでは、代わりにparforループが使用されます。
「Matlabはもちろん非常に遅いです。よく、それは主にユーザーによって異なります。とにかく、並列化は可能ですが、['parfor'](http://www.mathworks.com/help/distcomp/parfor.html?refresh=true)を見てください。また、積分を計算するあなたのアプローチを再考するだろう、計算上の負担を減らすための多くのテクニックがあります。重要度サンプリング。しかし、「最良の」アプローチは問題に依存します。 – Arpi
それは本当であり、ユーザーとしては私は間違いなく遅いです;)parforと私のアプローチ@Arpiを再考してくれてありがとう! – rickri
関数の説明/方程式/擬似コード/図を提供することができます。アルゴリズムをパネル化するには多くのアプローチがあり、適切なものを見つけることはアルゴリズムの性質に依存します。例えば、あなたの関数が基本的な算術演算を行うだけであれば、ボトルネックはCPU時間ではなくメモリーアクセスである可能性があります。つまり、複数のコア/ハイパースレッドを使用する点はほとんどありません。 –