6

簡単な質問。私のコードのMPI実装については、両方で大きな違いがあります。MPI_Wtime は各プロセッサが実際に経過した時間であり、 clock() は予想される時間の大まかなアイデアを提供します。アサーションを追加したい人はいますか?

4

2 に答える 2

5

機能はclockまったく役に立たない。リアルタイム/壁時間ではなく、CPU時間を測定します。さらに、次の深刻な問題があります。

  1. ほとんどの実装では、解像度は非常に悪く、たとえば 1/100 秒です。CLOCKS_PER_SECOND解像度ではなく、スケールです。

  2. 典型的な値CLOCKS_PER_SECOND(たとえば、Unix 標準では 100 万である必要があります) を使用clockすると、32 ビット システムでは数分でオーバーフローします。オーバーフロー後、-1 を返します。

  3. ほとんどの歴史的な実装は、C 標準が要求するように、実際にはオーバーフロー時に -1 を返しませんが、代わりにラップします。通常は符号付きの型であるためclock_t、ラップされた値で算術を実行しようとすると、意味のない結果または未定義の動作が発生します。

  4. Windows では、まったく間違ったことを行い、CPU 時間ではなく経過したリアルタイムを測定します。

于 2013-06-27T17:54:59.367 に答える