数値演算ライブラリとして ATLAS を用いているが、ATLAS だけが原因に絞られてきた。
クラスタ A (CPU 64bit Xeon 2.8GHz, OS は Fedora Core 3 for x86_64)
クラスタ B (CPU 64bit Opteron 2.0GHz, OS は Fedora Core 4 for x86_64)
クラスタ A で ATLAS 3.7.11 を make する。両方とのクラスタとも SSE3 対応だが、SSE3 は切ってしまう。
Make.Linux_HAMMER64SSE3_4 のファイルの中だが、以下のようにオプションを変更する。
ARCHDEFS = -DATL_OS_Linux -DATL_ARCH_HAMMER64 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664 -m64
F77FLAGS = -O2 -msse2 -mfpmath=sse -m64
CCFLAG0 = -O2 -msse2 -mfpmath=sse -m64
要するに SSE2 を使用させるようにしている。クラスタ B では ATLAS の make に失敗するので、クラスタ A でATLAS を make して クラスタ B に持ってくる。
とりあえずこのクラスタ環境では、これで一応精度の問題は解決。
クラスタ A (CPU 64bit Xeon 2.8GHz, OS は Fedora Core 3 for x86_64)
クラスタ B (CPU 64bit Opteron 2.0GHz, OS は Fedora Core 4 for x86_64)
クラスタ A で ATLAS 3.7.11 を make する。両方とのクラスタとも SSE3 対応だが、SSE3 は切ってしまう。
Make.Linux_HAMMER64SSE3_4 のファイルの中だが、以下のようにオプションを変更する。
ARCHDEFS = -DATL_OS_Linux -DATL_ARCH_HAMMER64 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664 -m64
F77FLAGS = -O2 -msse2 -mfpmath=sse -m64
CCFLAG0 = -O2 -msse2 -mfpmath=sse -m64
要するに SSE2 を使用させるようにしている。クラスタ B では ATLAS の make に失敗するので、クラスタ A でATLAS を make して クラスタ B に持ってくる。
とりあえずこのクラスタ環境では、これで一応精度の問題は解決。