普段 SDPA で何気なく 64bit モードでコンパイルして実行しているが、64bit で makeして実行した方が 32bit よりも最低でも遅くはならないという感覚でやっている(実際 SDPA では速度に有意差があるとは思えない)。ただ SDPARA などではメモリの使用量が膨大なので(それでも1個の配列で 2GB 超えるものは無いが)、64bit モードが必須になる。良く雑誌なども出ていたが、32bit (IA32)と 64bit(X86_64 と IA64)で各変数のバイト数を調べると以下のようになっている。
32bit
sizeof(char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 4
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 12
sizeof(int*) = 4
64bit
sizeof(char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 8
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 16
sizeof(int*) = 8
幸か不幸か int と double は同じバイト数なので移植は大変楽だが、64bit にしても別に精度が上がるわけではない(long を付ければ別だが)。それでもポインタが 64bit になっているのは大変魅力である。
32bit
sizeof(char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 4
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 12
sizeof(int*) = 4
64bit
sizeof(char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 8
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 16
sizeof(int*) = 8
幸か不幸か int と double は同じバイト数なので移植は大変楽だが、64bit にしても別に精度が上がるわけではない(long を付ければ別だが)。それでもポインタが 64bit になっているのは大変魅力である。