2.7.0
What's new
Breaking changes:
- New executable
pmp2sdp
instead of separatesdp2input
andpvm2sdp
. 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 aliasWriteBootstrapSDP
) 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 vectorz
(see SDPB Manual, eq. 3.1) from the vectory
(eq. 2.2) andsdp/normalization.json
, and writes it toout/z.txt
.
See #191. - Added new field
"block_path"
tospectrum
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
andDEBUG_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