Skip to content

Commit

Permalink
Merge pull request #240 from davidsd/docs-3.0.0
Browse files Browse the repository at this point in the history
Update docs to 3.0.0
  • Loading branch information
vasdommes authored May 7, 2024
2 parents 803a93c + 9877651 commit 0dc600b
Show file tree
Hide file tree
Showing 12 changed files with 57 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ workflows:
- deploy-tag:
filters:
tags:
only: /^\d+\.\d+\.\d+$/ # only release tags, e.g 2.7.0
only: /^\d+\.\d+\.\d+$/ # only release tags, e.g 3.0.0
# See https://discuss.circleci.com/t/tag-not-triggered-by-circleci-not-filter-in-workflow/32036
branches:
ignore: /.*/ # Ignore all branches, otherwise the job is triggered by any git push
Expand Down
33 changes: 33 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
# Version 3.0.0

### Optimizations:

Implemented new distributed matrix multiplication algorithm for calculating Q matrix.
It employs MPI shared windows, Chinese Remainder Theorem, [FLINT](https://flintlib.org/) and BLAS libraries.

Our benchmarks for large SDPB problems demonstrated more than **~2.5x** overall program speedup and much better performance scaling with increasing number of CPUs and nodes, as compared to the 2.7.0 release.
In addition, improved RAM usage in the new algorithm now allows to solve even larger problems where Q matrix does not fit into single node memory.

See [#142](https://github.com/davidsd/sdpb/pull/142), [#212](https://github.com/davidsd/sdpb/pull/212).

### New features:

- New option `--maxSharedMemory` allowing to reduce memory usage in the new matrix multiplication algorithm. If the limit is not set, it is calculated automatically. See [#209](https://github.com/davidsd/sdpb/pull/209), [#229](https://github.com/davidsd/sdpb/pull/229).
- Added new `--verbosity trace` level. See [#230](https://github.com/davidsd/sdpb/pull/230).

### Other improvements:

- Print iterations data and condition numbers to `iterations.json` in the output folder. See [#228](https://github.com/davidsd/sdpb/pull/228), [#231](https://github.com/davidsd/sdpb/pull/231), [#232](https://github.com/davidsd/sdpb/pull/232).
- In debug mode, write profiling data for both timing run and actual run, see [#215](https://github.com/davidsd/sdpb/pull/215).
- In debug mode, print maximal memory usage [#231](https://github.com/davidsd/sdpb/pull/231).
- Graceful exit on SIGTERM, see [#208](https://github.com/davidsd/sdpb/pull/208).
- Build multiplatform Docker image (AMD64+ARM64) on CircleCI, see [#225](https://github.com/davidsd/sdpb/pull/225).


### New dependencies:

- [FLINT](https://flintlib.org/) library
- CBLAS implementation, e.g. [OpenBLAS](https://www.openblas.net/)

See https://github.com/davidsd/sdpb/releases/tag/3.0.0 for the full changelog.

# Version 2.7.0

### Breaking changes:
Expand Down
4 changes: 2 additions & 2 deletions docs/Docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ can be downloaded from [Docker Hub](https://hub.docker.com/r/bootstrapcollaborat

docker pull bootstrapcollaboration/sdpb:master

You can also download image for a specific release, e.g., 2.7.0:
You can also download image for a specific release, e.g., 3.0.0:

docker pull bootstrapcollaboration/sdpb:2.7.0
docker pull bootstrapcollaboration/sdpb:3.0.0

The list of all available tags can be found in
[bootstrapcollaboration/sdpb](https://hub.docker.com/r/bootstrapcollaboration/sdpb/tags) repo on Docker Hub.
Expand Down
Binary file modified docs/SDPB_Manual/SDPB-Manual.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/SDPB_Manual/SDPB-Manual.tex
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
{\Large
\begin{center}
{\bf SDPB 2.7.0 \\\vspace{.1in}}
{\bf SDPB 3.0.0 \\\vspace{.1in}}
\end{center}
}
\begin{center}
Expand Down
8 changes: 4 additions & 4 deletions docs/Singularity.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,21 @@ and push it to [local registry](https://docs.docker.com/registry/):

## Run Singularity image
Singularity should automatically mount your home directory. If your
Singularity image is named `sdpb-2.7.0.sif`, you can invoke the SDPB
Singularity image is named `sdpb-3.0.0.sif`, you can invoke the SDPB
programs by prepending the command with

singularity exec sdpb-2.7.0.sif
singularity exec sdpb-3.0.0.sif

So to convert the JSON input file at `/home/user/input.json`, run the command

singularity exec sdpb-2.7.0.sif mpirun -n 4 pmp2sdp --precision 1024 -i /home/user/input.json -o /home/user/input
singularity exec sdpb-3.0.0.sif mpirun -n 4 pmp2sdp --precision 1024 -i /home/user/input.json -o /home/user/input

This uses 4 cores when running pmp2sdp. You can change that number to
match your own machine.

To find a primal-dual solution,

singularity exec sdpb-2.7.0.sif mpirun -n 4 sdpb --precision=1024 -s /home/user/input
singularity exec sdpb-3.0.0.sif mpirun -n 4 sdpb --precision=1024 -s /home/user/input

In theory, Singularity can be used to run jobs across multiple nodes.
We have not been able to make that work yet. So for large, multi-node
Expand Down
6 changes: 3 additions & 3 deletions docs/site_installs/Boston.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ You may list all available versions via

Fo example, `sdpb-master` is built from the latest [master](https://github.com/davidsd/sdpb/tree/master) branch (
run `sdpb --version` to see commit hash, e.g. `SDPB 2.5.1-130-g88b1c9ae`),
and `sdpb-2.7.0` is a stable [2.7.0](https://github.com/davidsd/sdpb/releases/tag/2.7.0) release.
and `sdpb-3.0.0` is a stable [3.0.0](https://github.com/davidsd/sdpb/releases/tag/3.0.0) release.

Examples below are for `sdpb-master`.
You may replace it with another version, e.g. `sdpb-2.7.0`.
You may replace it with another version, e.g. `sdpb-3.0.0`.
In that case, please refer
to [2.7.0 documentation](https://github.com/davidsd/sdpb/blob/2.7.0/docs/site_installs/Boston.md).
to [3.0.0 documentation](https://github.com/davidsd/sdpb/blob/3.0.0/docs/site_installs/Boston.md).

## Run SDPB

Expand Down
6 changes: 3 additions & 3 deletions docs/site_installs/Caltech.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ You may list all available versions via

Fo example, `sdpb-master` is built from the latest [master](https://github.com/davidsd/sdpb/tree/master) branch (
run `sdpb --version` to see commit hash, e.g. `SDPB 2.5.1-130-g88b1c9ae`),
and `sdpb-2.7.0` is a stable [2.7.0](https://github.com/davidsd/sdpb/releases/tag/2.7.0) release.
and `sdpb-3.0.0` is a stable [3.0.0](https://github.com/davidsd/sdpb/releases/tag/3.0.0) release.

Examples below are for `sdpb-master`.
You may replace it with another version, e.g. `sdpb-2.7.0`.
You may replace it with another version, e.g. `sdpb-3.0.0`.
In that case, please refer
to [2.7.0 documentation](https://github.com/davidsd/sdpb/blob/2.7.0/docs/site_installs/Caltech.md).
to [3.0.0 documentation](https://github.com/davidsd/sdpb/blob/3.0.0/docs/site_installs/Caltech.md).

## Run SDPB

Expand Down
6 changes: 3 additions & 3 deletions docs/site_installs/Expanse.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ You may list all available versions via

Fo example, `sdpb-master` is built from the latest [master](https://github.com/davidsd/sdpb/tree/master) branch (
run `sdpb --version` to see commit hash, e.g. `SDPB 2.5.1-130-g88b1c9ae`),
and `sdpb-2.7.0` is a stable [2.7.0](https://github.com/davidsd/sdpb/releases/tag/2.7.0) release.
and `sdpb-3.0.0` is a stable [3.0.0](https://github.com/davidsd/sdpb/releases/tag/3.0.0) release.

Examples below are for `sdpb-master`.
You may replace it with another version, e.g. `sdpb-2.7.0`.
You may replace it with another version, e.g. `sdpb-3.0.0`.
In that case, please refer
to [2.7.0 documentation](https://github.com/davidsd/sdpb/blob/2.7.0/docs/site_installs/Expanse.md).
to [3.0.0 documentation](https://github.com/davidsd/sdpb/blob/3.0.0/docs/site_installs/Expanse.md).

## Run SDPB

Expand Down
6 changes: 3 additions & 3 deletions docs/site_installs/Harvard.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ You may list all available versions via

Fo example, `sdpb-master` is built from the latest [master](https://github.com/davidsd/sdpb/tree/master) branch (
run `sdpb --version` to see commit hash, e.g. `SDPB 2.5.1-130-g88b1c9ae`),
and `sdpb-2.7.0` is a stable [2.7.0](https://github.com/davidsd/sdpb/releases/tag/2.7.0) release.
and `sdpb-3.0.0` is a stable [3.0.0](https://github.com/davidsd/sdpb/releases/tag/3.0.0) release.

Examples below are for `sdpb-master`.
You may replace it with another version, e.g. `sdpb-2.7.0`.
You may replace it with another version, e.g. `sdpb-3.0.0`.
In that case, please refer
to [2.7.0 documentation](https://github.com/davidsd/sdpb/blob/2.7.0/docs/site_installs/Harvard.md).
to [3.0.0 documentation](https://github.com/davidsd/sdpb/blob/3.0.0/docs/site_installs/Harvard.md).

## Run SDPB

Expand Down
6 changes: 3 additions & 3 deletions docs/site_installs/Imperial.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ You may list all available versions via

Fo example, `sdpb-master` is built from the latest [master](https://github.com/davidsd/sdpb/tree/master) branch (
run `sdpb --version` to see commit hash, e.g. `SDPB 2.5.1-130-g88b1c9ae`),
and `sdpb-2.7.0` is a stable [2.7.0](https://github.com/davidsd/sdpb/releases/tag/2.7.0) release.
and `sdpb-3.0.0` is a stable [3.0.0](https://github.com/davidsd/sdpb/releases/tag/3.0.0) release.

Examples below are for `sdpb-master`.
You may replace it with another version, e.g. `sdpb-2.7.0`.
You may replace it with another version, e.g. `sdpb-3.0.0`.
In that case, please refer
to [2.7.0 documentation](https://github.com/davidsd/sdpb/blob/2.7.0/docs/site_installs/Imperial.md).
to [3.0.0 documentation](https://github.com/davidsd/sdpb/blob/3.0.0/docs/site_installs/Imperial.md).

## Run SDPB

Expand Down
2 changes: 1 addition & 1 deletion src/sdp_solve/SDP_Solver/run/bigint_syrk/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ In turn, Q is `DistMatrix<BigFloat>` distributed over all cores.

In the old SDPB algorithm, each core (or group of cores) was calculating a contribution to Q (
called `Q_group`) from its blocks. Adding up all Q_groups, one got the resulting Q
(see [synchronize_Q.cxx](https://github.com/davidsd/sdpb/blob/2.7.0/src/sdp_solve/SDP_Solver/run/step/initialize_schur_complement_solver/synchronize_Q.cxx)).
(see [synchronize_Q.cxx](https://github.com/davidsd/sdpb/blob/3.0.0/src/sdp_solve/SDP_Solver/run/step/initialize_schur_complement_solver/synchronize_Q.cxx)).

This is inefficient in terms of memory, since we allocate memory for `Q_group` for each group of cores.

Expand Down

0 comments on commit 0dc600b

Please sign in to comment.