Open wistaria opened 3 years ago
solver=scalapack
163: /home/runner/work/rokko/rokko/test/diagonalize/helmert_mpi.cpp:57: Failure
163: The difference between rokko::norm_diff(u.transpose().col(i), locZ.col(i)) and 0 is 1, which exceeds eps, where
163: rokko::norm_diff(u.transpose().col(i), locZ.col(i)) evaluates to 1,
163: 0 evaluates to 0, and
163: eps evaluates to 1.0000000000000001e-05.
163: /home/runner/work/rokko/rokko/test/diagonalize/helmert_mpi.cpp:57: Failure
163: The difference between rokko::norm_diff(u.transpose().col(i), locZ.col(i)) and 0 is 1, which exceeds eps, where
163: rokko::norm_diff(u.transpose().col(i), locZ.col(i)) evaluates to 1,
163: 0 evaluates to 0, and
163: eps evaluates to 1.0000000000000001e-05.
163: /home/runner/work/rokko/rokko/test/diagonalize/helmert_mpi.cpp:57: Failure
163: The difference between rokko::norm_diff(u.transpose().col(i), locZ.col(i)) and 0 is 1, which exceeds eps, where
163: rokko::norm_diff(u.transpose().col(i), locZ.col(i)) evaluates to 1,
163: 0 evaluates to 0, and
163: eps evaluates to 1.0000000000000001e-05.
163: /home/runner/work/rokko/rokko/test/diagonalize/helmert_mpi.cpp:57: Failure
163: The difference between rokko::norm_diff(u.transpose().col(i), locZ.col(i)) and 0 is 0.99999999999999989, which exceeds eps, where
163: rokko::norm_diff(u.transpose().col(i), locZ.col(i)) evaluates to 0.99999999999999989,
163: 0 evaluates to 0, and
163: eps evaluates to 1.0000000000000001e-05.
https://github.com/t-sakashita/rokko/runs/2868623006?check_suite_focus=true
成功
失敗
坂下のMacでは、test/diagonalizeのctestは、全て成功している。 コンパイラは、mpicxx-mpich-clang90。
macOS 11.4 + homebrew + gcc 11.1 + openmpi でも成功
Untutu18のvirtualboxで実行してみた。 test/diagonalize/helmert_mpiは、正常終了した。
mpirun -np 4 --oversubscribe ./helmert_mpi
ただし、scalapackのみ。
test/diagonalize/helmert_mpi.cpp
の実行エラーとなっているのは、Elementalを使った場合。
Macでも再現できた。
example/cxx/dense/helmert_mpi.cppでも、Elementalを用いた場合、固有ベクトルの残差が誤っている。
largest eigenvalues: 9.999999999999989342 8.999999999999992895 8.000000000000001776 6.999999999999997335 6.000000000000002665 4.999999999999997335 4.000000000000000888 3.000000000000001776 1.999999999999998668 1.000000000000000888
residual of the largest eigenvalue/vector: |x A x - lambda| = 9.999999999999989342
そもそも、ElementalのPMRRRは、ブロックサイクリック行列ではなく、列方向のみ分割している。 Elementalの使用時は、固有ベクトルのチェックを行わないようにした。 ac6436d5a9b4fb93009f5f3c5b80cacb39495d6b
test/diagonalize/frank, minij, laplacian, tridiagonal_toeplitz, helmert lapack & row-major が fail