以下の公式に従って定積分の近似を計算するために、x のランダム値を使用できます。
この手順は、上記の公式 (r は
に対するランダム入力) を使用して 1 変数積分を効率的に計算します。
simple monte-carlo integrator
1000 データ点を使用した場合のサンプル実行で、これがどのように機能するかを示します。
| (1.1) |
Maple での計算結果は正確で、上記の近似が概算であることがわかります。ただし、アプリケーションによっては、これで十分です。
| (1.2) |
| (1.3) |
並列実装により、以下のコードが追加されます。このコードは、問題を利用可能なすべてのノード間で分割し、部分解をノード 0 に戻します。ここで、ヘッドノード 0 は計算を実行してから他ノードからの結果を累算することに注意してください。
parallelApproxint := proc( expr, lim::name=numeric..numeric, { numSamples::integer := 1000 }
N サンプルを使用して範囲 lim を積分します。ご使用のクラスタで利用可能なノードをいくつでも使用できます。
注意 : 次のコマンド内の "MyGridServer" は、ご使用のグリッドクラスタのヘッドノードの名前に置き換わります。
| (1.4) |
実行時間は次のように要約されます。計算は、6 つのクアッドコア AMD Opteron 2378/2.4GHz プロセッサと CPU ペアあたり 8GM のメモリーを持ち、Windows HPC Server 2008 を実行する 3 ブレードクラスタ上で実行されました。
計算ノード数
|
解を得るまでの実時間
|
性能
|
1 (逐次コードを使用)
|
356.25 s
|
スピードアップは、以下の尺度で判断できます。
ここで、 は逐次アルゴリズムの実行時間、 は p プロセスを使用した並列アルゴリズムの実行時間です。
|
1 (Grid を使用)
|
|
2
|
|
3
|
|
|
|
|
|
|
|
7
|
|
|
|
9
|
|
|
|
|
|
12
|
|
13
|
|
14
|
24.90
|
15
|
23.38
|
16
|
21.93
|
17
|
20.92
|
|
|
19
|
18.41
|
20
|
17.85
|
21
|
16.71
|
|
|
23
|
|
|
|
MapleGrid を使用しない場合の Maple の計算時間は、表の最初の数字 (6 分間) です。残りは、コアの数をさまざまに変えて MapleGrid を使用した場合の時間です。グラフは、コアを追加すると線形に時間が短縮されることを示しています。同じ例で 23 のコアが使用された場合、計算には 15.3 秒しかかかりません。