t-sakashita / rokko

Integrated Interface for libraries of eigenvalue decomposition
Boost Software License 1.0
10 stars 2 forks source link

helmertのテストのエラー #255

Open t-sakashita opened 8 years ago

t-sakashita commented 8 years ago

eigen_exaeigen_sxを使用した場合にだけエラーが起こる。

rokko/test/diagonalize/helmert_mpi.cpp(57): error in "test_solver": difference{1.921%} between w.sum(){4952.9896907139155} and diag.sum(){5050} exceeds 0.0001
t-sakashita commented 8 years ago

考えられる原因:

t-sakashita commented 8 years ago

exampleの出力でも、微妙に許容できない誤差やnanが出ている。

mpirun -np 1 ./helmert_mpi eigen_exa:penta 9
largest eigenvalues: nan nan nan nan nan nan nan nan nan

上記は、-npが2の時もnan, -npが4だとうまくいく。

mpirun -np 1 ./helmert_mpi eigen_exa:penta 100
largest eigenvalues: 100 99 97.989691 96 95 94 93 92 91 90
mpirun -np 1 ./helmert_mpi eigen_exa:penta 20
largest eigenvalues: 20 19 17.94118 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 -7.041049e-15
t-sakashita commented 8 years ago

原因の切り分け: 生成した行列値を書き出し、生成関数を定義し、generateする。 この方法では、pdgemm, scatter等の並列処理を用いずに行列生成ができたことになる。 24602df56b282ce26a7ff836a46654fb138a6994 このような行列生成法でも、eigen_sxで上記の問題が起こる。

結論:

t-sakashita commented 8 years ago

作者に報告する。

Rokkoを使わない場合、EigenExa単体でも発現することを確認。 ソルバのバグと判明。

wistaria commented 5 years ago

EigenExa バージョン 2.4b でもまだ治っていない test/diagonalize/helmert_mpi が fail する

wistaria commented 5 years ago

とりあえず eigenexa のテストをスキップ c26c082e38e67df11c312ea9e2e50ebfc2e08573