メイン QualNet General/Miscellaneous <experiment-name> や -np <x> が変わると結果が変わる | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
uzushio | 投稿日時: 2010/6/17 18:10 |
新米 登録日: 2007/9/1 居住地: 投稿: 5 |
<experiment-name> や -np <x> が変わると結果が変わる QualNet Developer Command-Line 上で
$ qualnet hogehoge.config <experiment-name> -np <x> に従って実行した場合, <experiment-name> や -np <x> (コア数) の入力が異なると, .statファイルに出力されるシミュレーション結果が異なる場合があり,困っています. その他のシミュレーション条件は全て同じです. 私はソフトウェアにはあまり詳しくないですが, シミュレーション条件と(-seed で指定する)乱数の種が同じであれば シミュレーション結果は常に同じになるのではないかと考えていたのですが, この考え自体がおかしいのか,上記の現象は起こってもおかしくないものなのか, また起こる原因などがお分かりの方がいらっしゃればご教授いただければ幸いです. なお,OSはWindows XP SP3,コンパイラはMS Visual Studio 2005,QualNetはバージョン4.5.1を使っています. -np <x> が異なると結果が変わる現象は,ソースコードに改良を加えた場合でも改良を加えない場合でも発生します. <experiment-name> が異なると結果が異なる現象は,現時点ではソースコードに改良を加えた場合のみに発生を確認しています. 何卒よろしくお願い申し上げます. |
hed | 投稿日時: 2010/6/17 18:56 |
一人前 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: <experiment-name> や -np <x> が変わると結果が変わる こんにちは
試しに4.5.1のデフォルトシナリオを実行してみました。 なにをもって「結果が異なる」とおっしゃっているかわからないので、イベント数と、statファイルの結果を見てみました。 実行したqualnetは全く改造を加えていないものです。
(1), (2) は-np <x>を1,2と変えただけです。statファイルの比較はしておりませんが、イベント数は447292で一致しました。 (3), (4) は <experiment-name>を変更しましたが、イベント数は先ほどと同様、447292で一致しました。 (3), (4)のstatファイルのdiffをとってみましたが、以下のように差は無いようです。
コードを変更した場合、私は良く意図していない実行ファイルを使って計算してしまうことがあります。そのため、上記のように相対パスや絶対パスを使って明示的に実行するqualnet.exeを指定するようにしております。 間違っているというわけではないのですが、uzushioさんの認識の通り、seedが同じであれば、結果は同じになると思います。もし結果が変わるのであれば、全く同じ引数でも(experiment-name等を変更しなくても)結果が変わるのではないのかと思いました。 余談ですが、おかしくなった時にリビルドをすることで元に戻ったということもありました。 お役にたてれば幸いです。 |
mast | 投稿日時: 2010/6/17 19:05 |
一人前 登録日: 2005/4/7 居住地: 投稿: 93 |
Re: <experiment-name> や -np <x> が変わると結果が変わる <expreiment-name>のほうは分かりませんが、
-np <x>が変わると結果が変わるというのは、以前私も経験しました。 SNTに問い合わせたところ、同時刻に起こるイベントが複数あった場合に、パラレル実行数が変わるとそれらのイベントの実行される順番が変わることがあり得る、ということでした。 その順番の狂いがきっかけとなってそれ以降の挙動が変わり、結果も異なるということになっているのだと思います。 が、いずれも間違った動作ではなく、評価結果の傾向が一転してしまうようなことは起こり得ないだろうと思います。 ちなみに、SNTからの回答によると、QualNet3.9.5でもこれは起こり、QualNet4.0では起こらないそうです。 4.0のイベントスケジューラは再現性を重視したためだそうです。 4.5でまた起こるようになったのは、10〜15%の高速化を図った代償として異なるパラレル実行数間での再現性を捨てたため、とのことです。 ただし、configファイルでSCHEDULER-QUEUE-TYPEというパラメータの値を変えることでイベントスケジューラを変えることができるので、 これでこの辺の調整はできるらしいです。 以下の3つが設定可能だそうです。 SCHEDULER-QUEUE-TYPE SPLAYTREE SCHEDULER-QUEUE-TYPE STDLIB SCHEDULER-QUEUE-TYPE CALENDAR STDLIBが4.0のデフォルトスケジューラ、CALENDARが4.5のデフォルトスケジューラだそうなので、STDLIBにすれば同じ結果が得られるかもしれません。 よければ一度試してみてください。 なお、<experiment-name>のほうは、uzushioさんが埋め込んだバグの可能性が高いように思えます。 Bp では。 |
uzushio | 投稿日時: 2010/6/18 10:15 |
新米 登録日: 2007/9/1 居住地: 投稿: 5 |
Re: <experiment-name> や -np <x> が変わると結果が変わる hed様,mast様,早速のお返事ありがとうございます.
私の説明にあいまいな部分がありましたので,補足説明を加えつつ返信させていただきます. 引用:
「結果が異なる」とは,statファイルの結果(1, , [0], Physical, 802.11,Signals transmittedなど)が異なるということです. 「結果が異なる」場合,statファイルのdiffを取ると,膨大な差分情報がコマンドラインに出力されます. なお,-np 数が異なるとstatファイルに出力されるノードの順序が異なる場合があり(-np 1 ならノード1, 2, 3の順に結果が出力され,-np 2 ならノード1, 3, 5の順に出力されるなど),この場合もdiffを取ると膨大な差分情報が出力されますが,各ノードの結果が同じなら当然「結果が同じ」とみなしています. 引用:
起こっている現象としては,<experiment-name>が同じ場合は必ず結果は同じになり, <experiment-name>が違う場合に結果が異なることがあります. また,このような現象が起こるシミュレーション条件はかなり限られており,大半のシミュレーション条件では どんな<experiment-name> や -np <x> の値でも結果は同じになります. mastさんがご指摘のように,<experiment-name>に関しましては私が埋め込んだバグの可能性を探ってみたいと思います. ただ,そもそも<experiment-name>の値というのはシミュレーション終了時にstatファイル等を 生成する時ぐらいしか使われない気もするので,そこが引っ掛かります. -np <x> に関しましても詳細なご説明ありがとうございます. 間違った動作でないことが理解できましたので,安心しました. 今後,SCHEDULER-QUEUE-TYPEの値を変えて試してみたいと思います. |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |