気づいた
MPI関数のMPI_Wtimeは単位が秒で、かつ返り値はdoubleとのことなので、何を勘違いしたのかdouble型だけれども整数値が返ってくるものだと思っていた。それとの兼ね合いで、以下のようなコードを書いていた。
int i; int sum; for(i = 0; i < 10; i++){ int start = MPI_Wtime(); somefunction(); int end = MPI_Wtime(); sum += end - start; }
これがナンセンスなのはどうでもいいとして、ちょっとJavaで以下のようなコードを書いてみた。
class T{ public static void main(String [] argv){ int i = 0; i = i + 0.1; System.out.println(i); } }
コンパイルするとエラーメッセージが。
T.java:4: 精度が落ちている可能性 検出値 : double 期待値 : int i = i + 0.1; ^ エラー 1 個
ところが、以下のコードだとちゃんと実行できる。値は0。
class T{ public static void main(String [] argv){ int i = 0; i += 0.1; System.out.println(i); } }
これって誰か指摘してたっけか。どっかで見たような記憶があるんだが、誰が言っていたのか忘れた。
あと、Cでもこのあたりのチェックは入れて欲しいと思った。