Fortran プログラムの移植における問題点 (egcs 版)
English version is here.
これらの RPM のインストールは
で終わりです。
real*4 a, b, c a = 1. b = 2. c = a + b print *, ' a, b, c = ', a, b, c end
さて、この簡単なテストにパスした場合には (DR3 がちゃんと入っていればうまく行くはずです)、もっと複雑なプログラムに 挑戦できるわけです。 すると、私の場合そうであったように、色々問題もでてくると 思われます。
の断面積を計算するプログラムで、 トップクォークのボトムクォークと他のフェルミオン対への 崩壊までを含めて計算します。
これは、スピンや終状態の選択、始状態の輻射、 ビームストラールング等を含む21次元積分です。 散乱振幅は HELAS(HElicity Amplitude Subroutines) で、また、モンテカルロ積分は BASES/SPRING で行っております。
BASES の部分では、荷重サンプリング法で 断面積のモンテカルロ積分を行い、 SPRING の部分は、その結果に基づいて 重み1のイベントを発生させます。 モンテカルロ積分は2ステップで行われます。 グリッドの最適化のステップと 統計を稼ぐための accumulation ステップです。 グリッド最適化のステップでは、 アイテレーション毎に 積分空間の中のハイパーキューブと そのサブメッシュ(グリッド)の大きさが 積分誤差を最小にするように 調整されます。 accumulation ステップではグリッドは固定で ひたすら統計をため積分精度を上げます。
この例では、各アイテレーションは 積分空間内での 20000 サンプルからなり、 グリッドの最適化に5回、統計を稼ぐのに 50回のアイテレーションをしています。
SPRING のステップでは、 JLCの 簡易測定器シミュレーターも含めており、 荷電粒子の飛跡検出や、カロリメータの信号生成 なども行っております。
各アイテレーションはやはり 20000 サンプルからなり、 グリッド最適化に5回、統計稼ぎに 10回のアイテレーションをしています (TT_GEN と比べて積分精度が必要でなかったので こうなっています)。
プログラムは、終状態に応じて、 8ジェット(8J)終状態用と 1レプトン+6ジェット(L+6J)終状態用の 2つの別々のプログラムからなっています。
C100 (HP-UX) | 8115/100 (MkLinux) | |
TTH_GEN:BASES |
140.73 sec (2.94834 +/- 0.00927 fb) |
850.05 sec (2.94811 +/- 0.00927 fb) |
TTH_GEN:SPRING |
402.19 sec (output data: 35MB) |
813.35 sec (output data: 35MB) |
TTH_ANL: 8J | 218.53 sec | 435.08 sec |
TTH_ANL: L+6J | 166.2 sec | 306.2 sec |
TT_GEN:BASES |
410.27 sec (0.40153 +/- 0.00061 fb) |
2485.85 sec (0.40153 +/- 0.00061 fb) |
TT_GEN:SPRING |
103.62 sec (output data: 5.6MB) |
244.45 sec (output data: 5.6MB) |
ここで、重心系のエネルギーは TTH(TT) に対して 700(340)GeVで、トップクォークの質量は 170GeVにしてあります。 SPRING のステップでは1000(200)イベント生成しました。 TT 生成は、しきい値補正の入った計算なので、しきい値でも 有限の断面積がある点に注意して下さい。