2016-09-06 5 views
0

Fortranの組み込み関数system_clockを使用して、壁掛け時間を測定できます(並列計算に役立ちます)。私がherehereを読んだら、system_clockcpu_timeは、その機能が利用できない場合は、負の値を返します。または "基本的なシステムのタイマによって提供される範囲が不十分なためです。Fortranタイマーのラップアラウンドを克服するための対策

数週間にわたって実行されるシミュレーションでこの問題が発生していて、突然、負の値が報告されます。

私の質問は、これらの不十分な範囲/負の戻り値を回避または克服するためにどのような措置を講じることができますか?私はこの問題を克服するための最初の試みを示すだろうが、私はどこから始めるべきかも知らない。

+1

少なくとも8ビットの整数を使用していますか? –

+0

f2003の大きな整数引数がsystem_clockでサポートされているため。 – tim18

+0

@VladimirF私は実際にはデフォルトのselected_int_kindを指定していないので、8ビット整数(デフォルト)が使用されていたと思います。この問題を解決するためには、大きな整数を使用するのが有効な解決法ですか? – Charlie

答えて

0

あなたは数週間の期間にわたって経過したウォールクロック時間の後にある場合には、固有のDATE_AND_TIMEは、一般的に十分な解像度で値を提供します。

(SYSTEM_CLOCKが突然負の値を報告し始めるべきではありません - 。。どちらかの画像は時計を持っているか、それがどのようなSYSTEM_CLOCKによって返されたカウントが行う可能性がありますがゼロに戻るCOUNT_MAXによって与えられた値から、ラップされていません)

+0

私が考えていなかったこの解決策は、確かに私のレーダー上にあります。しかし、Vladimirのコメントによると、system_clockはまだ適切な使い方で動作している可能性があります。この組み込み関数はタイミングを考慮して設計されているため、解決策であると判明すればこのアプローチを使用します。それにかかわらず、私はあなたの提案に感謝し、それに戻ってくるかもしれません。 – Charlie

関連する問題