Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #175 Debug mode: write profiling for actual run + misc improvements #215

Merged
merged 9 commits into from
Mar 22, 2024

Conversation

vasdommes
Copy link
Collaborator

@vasdommes vasdommes commented Mar 22, 2024

  • Fix Debug mode: write profiling for actual run #175
    After actual run, we write profiling data to ck.profiling/ and block timings (for the last step) to ck/block_timings.
    Old data is moved to ck.profiling.0/ (or ck.profiling.1/ etc., if .0 exists) and block_timings.0
    Previously, we wrote data only for the timing run, and it was hard to check actual run and see if it improved.
    NB: we do not write ck/block_timings if solver exits before completing two iterations.
  • Remove extra warnings in tests if FLINT is compiled without BLAS, see bigint-syrk-blas: Unit tests fail if FLINT library compiled without BLAS #202
  • Fix mpfr2mpf tests for Boost 1.66 (BU cluster). In this version, precision for Boost_Float expression a*b was set to default_precision instead of actual precision of a and b.
  • Added Q.syrk timer, measuring the whole syrk_Q() function (normalize + bigint_syrk_blas() + restore)
  • Introduce Environment::set_precision() function which sets both El::gmp::Precision() and Boost_Float::default_precision().
  • Fix Mark --procGranularity option as obsolete #210
    Print warning if --procGranularity is used.
  • Fix Add FLINT and BLAS to installation instructions #213
    Updated Install.md and instructions for MacBook as well as BU, Harvard and Imperial HPC.
  • Print stacktrace and block index if Cholesky decomposition fails (usually with A was not numerically HPD due to low precision).

… WARN

WARN is written multiple times, polluting the output

See also #202 bigint-syrk-blas: Unit tests fail if FLINT library compiled without BLAS
If we set low default_precision, then test for (a_2 * b_2) fails on Boost 1.66 + MPFR 4.2.1 (passes on Boost 1.74 + MPFR 4.1.0).
This happened on BU cluster.
After actual run, we write profiling data to ck.profiling/ and block_timings (for the last step) to ck/block_timings
TODO: do not write block_timings if number of iterations == 1?

Old data is moved to ck.profiling.0/ (or ck.profiling.1/ etc., if .0 exists) and block_timings.0

Previously, we wrote data only for the timing run.
@vasdommes
Copy link
Collaborator Author

vasdommes commented Mar 22, 2024

Example: timing run vs actual run for a large SDP problem (nmax=18, stress-tensors-3d), the same as in #211
(current master branch is labeled as 3.0.0)

image

Typical use case is "A was not numerically HPD" error for some of the blocks due to low precision.
@vasdommes vasdommes merged commit d3d0c96 into master Mar 22, 2024
2 checks passed
@vasdommes vasdommes deleted the misc branch March 22, 2024 22:18
vasdommes added a commit that referenced this pull request Apr 1, 2024
The bug was introduced in #215, see commit 522dc98

Now we revert these changes and do not update ck/block_timings after actual run. It is written only after a timing run.

end-to-end.test.cxx: run SDPB twice for SingletScalar_cT_test_nmax6/primal_dual_optimal to test this bug
vasdommes added a commit that referenced this pull request Apr 1, 2024
The bug was introduced in #215, see commit 522dc98

Now we revert these changes and do not update ck/block_timings after actual run. It is written only after a timing run.

end-to-end.test.cxx: run SDPB twice for SingletScalar_cT_test_nmax6/primal_dual_optimal to test this bug
vasdommes added a commit that referenced this pull request Apr 1, 2024
The bug was introduced in #215, see commit 522dc98

Now we revert these changes and do not update ck/block_timings after actual run. It is written only after a timing run.

end-to-end.test.cxx: run SDPB twice for SingletScalar_cT_test_nmax6/primal_dual_optimal to test this bug
vasdommes added a commit that referenced this pull request Apr 1, 2024
The bug was introduced in #215, see commit 522dc98

Now we revert these changes and do not update ck/block_timings after actual run. It is written only after a timing run.

end-to-end.test.cxx: run SDPB twice for SingletScalar_cT_test_nmax6/primal_dual_optimal to test this bug
vasdommes added a commit that referenced this pull request Apr 1, 2024
The bug was introduced in #215, see commit 522dc98

Now we revert these changes and do not update ck/block_timings after actual run. It is written only after a timing run.

end-to-end.test.cxx: run SDPB twice for SingletScalar_cT_test_nmax6/primal_dual_optimal to test this bug
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant