Skip to content

2.7.0

Compare
Choose a tag to compare
@vasdommes vasdommes released this 21 Feb 01:39
· 269 commits to master since this release
a837094

What's new

Breaking changes:

  • New executable pmp2sdp instead of separate sdp2input and pvm2sdp. Reads Polynomial Matrix Programs in JSON, Mathematica, or XML formats. We recommend using JSON since it is more compact, efficient and universal than Mathematica or XML.
    See #181, #184.
    Example:
pmp2sdp --precision 768 --input in/pmp.json --output out/sdp --verbosity regular

By default, pmp2sdp writes sdp to plain directory (as in 2.4.0 and earlier). Run it with --zip flag to write to zip archive instead (as in 2.5.0 - 2.6.1).
Note that writing to zip can be slow for large problems, see plots in #176.

sdp2input and pvm2sdp are deprecated and will be removed in future versions.

  • sdpb option --procsPerNode is deprecated and will be removed in future versions. Now MPI configuration is determined automatically. See #169.
  • Mathematica script SDPB.m now writes PMP in JSON format instead of XML. Use WritePmpJson (or its alias WriteBootstrapSDP) function. WritePmpXml is left for backward compatibility.
    NB: you should also change PMP file extension from .xml to .json in your Mathematica scripts.
    Using JSON instead of XML results in ~x2 speedup when running Bootstrap2dExample.m script. See #199.

New features:

  • Added sdpb option --writeSolution=z. Restores the vector z (see SDPB Manual, eq. 3.1) from the vector y (eq. 2.2) and sdp/normalization.json, and writes it to out/z.txt.
    See #191.
  • Added new field "block_path" to spectrum JSON output. For each block, "block_path" contains its path from the PMP input. See #190.
  • Added optional fields to pmp.json format: "samplePoints", "sampleScalings" and "bilinearBasis", same as in the old XML format.
    See #199.

Other improvements:

  • Optimized IO and RAM usage when reading big SDP blocks, see #167.
  • Optimized reading and writing for pmp2sdp, got order-of-magnitude speedup.
    See #176 and #181.
  • Fix undefined behaviour (sometimes leading to SEGFAULT) when reading PMP with a prefactor containing duplicate poles. See #195.
  • Fix incorrect block mapping for cyclic MPI job distribution across nodes, see #170.
  • Print number of MPI processes and nodes, print SDP dimensions and number of blocks. See #169.
  • Print source code location and stacktrace for exceptions, see #180 and #198.
  • Rewrote Section 3 of SDPB Manual, see #199.
  • Internal improvements: new macros RUNTIME_ERROR, ASSERT, ASSERT_EQUAL and DEBUG_STRING, new JSON parser, better GMP<->MPFR conversion, fix compiler warnings, refactor integration tests.
    See #180, #189, #196, #197.

List of merged PRs

  • Fix #164 Excessive IO and RAM usage when reading big SDP blocks by @vasdommes in #167
  • Fix #141 Determine --procsPerNode automatically, reuse shared memory communicator, improve output by @vasdommes in #169
  • Fix #166 Incorrect block mapping for cyclic MPI job distribution across nodes by @vasdommes in #170
  • EPIC sdp2input/pvm2sdp refactoring + parallel reading optimization by @vasdommes in #176
  • Print file and line number in exception, add ASSERT() and RUNTIME_ERROR() macros by @vasdommes in #180
  • New pmp2sdp executable instead of separate sdp2input and pvm2sdp by @vasdommes in #181
  • Fix #183 pmp2sdp options: --zip flag instead of --zip=(false|true) option by @vasdommes in #184
  • Internal improvements: ASSERT_EQUAL/DEBUG_STRING macros, new JSON parser, better GMP<->MPFR conversion by @vasdommes in #189
  • Fix #187 spectrum: write input file path for each block in the output JSON file by @vasdommes in #190
  • Fix #185 Add --writeSolution=z option to SDPB, write to output z.txt by @vasdommes in #191
  • Fix #194 [pmp2sdp with duplicate poles] ERROR: AddressSanitizer: stack-buffer-overflow in operator_plus_set_Derivative_Term.cxx by @vasdommes in #195
  • Fix compilation for gcc 9.2.0 + different warnings by @vasdommes in #196
  • Refactor integration tests by @vasdommes in #197
  • Universal JSON format for Polynomial Matrix Program + write JSON from SDPB.m + update SDPB Manual by @vasdommes in #199
  • Fix #115 Print exception stacktrace when SDPB fails by @vasdommes in #198
  • Update docs for 2.7.0 + fix compilation on Imperial HPC by @vasdommes in #200

Full Changelog: 2.6.1...2.7.0