Subject | : Re: SAD Update. V1.0.10.4.17a30 Bug in TrackParticles with RAD and NPARA >1 |
Article No | : 946 |
Date | : 2011/08/04(Thu) 11:21:02 |
Contributor | : Akio Morita |
> Dear Users, > > 1. An almost stupid bug was found to forget to change the seed of random numbers in tracking for each thread. This causes degenerated random numbers in TrackParticles and DynamicPaertureSurvey when NPARA > 1 && RAD. It is temporarily tweaked by adding 2, 4, 6, .. for the seed of each thread, but a more rigorous solution is expected. > src/trackd.f, src/tftrack.f内で疑似乱数系列の調整に使っている tfaddseed()関数が、特定の疑似乱数生成器プラグインの実装に依存しています
例えば、SFMT PRNGプラグインだと SeedRandom[]の返すリストの第2要素は、乱数系列の固有識別子になっています また、数列にシリアル化される PRNGプラグインの内部状態は、実装依存で Checksumや識別用の Magic Numberが 埋め込まれていることも有ります。
個人的には、NPARAが変わると TrackParticles[]の出力の同一性が損なわれるという点は、 計算の再現性という意味で evilだと思います。
例えば、疑似乱数発生を Master Process側で処理して、Shared Memory経由で Worker Processが自分の担当範囲に 対応する疑似乱数を拾うとか… (Worker Process内で、粒子の並べ替えを行う場合、乱数を拾う場所も並べ替える必要が有りますが)
|