並列コードでより適切に機能するクロック()のようなものはありますか?
-
20-09-2019 - |
質問
したがって、クロック()はクロックサイクルを測定するため、時間の測定にはあまり適していないことは知っています。また、ウォールタイムを取得するためのomp_get_wtime()のような関数があることは知っていますが、ウォールタイムが変動するのはイライラしますそこで、個別のクロック サイクル (複数のスレッドが実行されている場合でも 1 サイクルのみ) を測定する何らかの方法はないかと考えていました。比較的シンプル/ネイティブなものでなければなりません。ありがとう
解決
に対する FreeMemory の回答を参照してください。 この質問 RDTSC の場合、x86 を使用している場合、テストしたところ、私のシステム (Mac) では正常に動作するようですが、への私の回答を参照してください。 この質問. 。RDTSC への批判も参照 ここ.
ただし、通常、あまり詳細なレベルまで下げることは価値がありません。コンピューターが実行する必要がある他のビットや作業によってクロック サイクルが消費されるため、負荷に応じて変化します。見つけました omp_get_wtime()
ただし、実行ごとに一貫した結果を保証するには、コードを追加のループに入れて、約 1 秒かかるようにする必要があります。
他のヒント
あなたは時間の測定を行うことはあなたのために動作していないと確信していますか?あなたが唯一のOSによっては、非常に多くのミリ秒に測定することができます覚えておいてください。
所属していません StackOverflow