Skip to content

Commit

Permalink
release 1.0 (#660)
Browse files Browse the repository at this point in the history
* docs version upped and refs updated

* change log and upped version
  • Loading branch information
cnpetra authored Sep 7, 2023
1 parent bad29cd commit 10b7d3e
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 15 deletions.
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,33 @@
# Change Log
All notable changes to HiOp are documented in this file.

## Version 1.0.0: Mature solvers interfaces and execution backends
### Notable new features
Interfaces of various solvers reached an equilibrium point after HiOp was interfaced with multiple optimization front-ends (e.g., power grid ACOPF and SC-ACOPF problems and topology optimization) both on CPUs and GPUs. The PriDec solver reached exascale on Frontier after minor communication optimizations. The quasi-Newton interior-point solver received a couple of updates that increase robustness. The Newton interior-point solver can fully operate on GPUs with select GPU linear solvers (CUSOLVER-LU and Gingko).

* Instrumentation of RAJA sparse matrix class with execution spaces by @cnpetra in https://github.com/LLNL/hiop/pull/589
* Fix Assignment Typo in hiopMatrixSparseCsrCuda.cpp by @pate7 in https://github.com/LLNL/hiop/pull/612
* Use failure not failed in PNNL commit status posting by @cameronrutherford in https://github.com/LLNL/hiop/pull/609
* rebuild modules on quartz by @nychiang in https://github.com/LLNL/hiop/pull/619
* Use constraint violation in checkTermination by @nychiang in https://github.com/LLNL/hiop/pull/617
* MPI communication optimization by @rothpc in https://github.com/LLNL/hiop/pull/613
* fix memory leaks in inertia-free alg and condensed linsys by @nychiang in https://github.com/LLNL/hiop/pull/622
* Update IPM algorithm for the dense solver by @nychiang in https://github.com/LLNL/hiop/pull/616
* Use integer preprocessor macros for version information by @tepperly in https://github.com/LLNL/hiop/pull/627
* use compound vec in bicg IR by @nychiang in https://github.com/LLNL/hiop/pull/621
* Use bicg ir in the quasi-Newton solver by @nychiang in https://github.com/LLNL/hiop/pull/620
* Add support to MPI in C/Fortran examples by @nychiang in https://github.com/LLNL/hiop/pull/633
* Refactor CUSOLVER-LU module and interface by @pelesh in https://github.com/LLNL/hiop/pull/634
* Add MPI unit test for DenseEx4 by @nychiang in https://github.com/LLNL/hiop/pull/644
* Add more options to control NLP scaling by @nychiang in https://github.com/LLNL/hiop/pull/649
* Development of the feasibility restoration in the quasi-Newton solver by @nychiang in https://github.com/LLNL/hiop/pull/647
* GPU linear solver interface by @pelesh in https://github.com/LLNL/hiop/pull/650


### New Contributors
* @pate7 made their first contribution in https://github.com/LLNL/hiop/pull/612
* @rothpc made their first contribution in https://github.com/LLNL/hiop/pull/613

## Version 0.7.2: Execution spaces abstractions and misc fixes
This release hosts a series of comprehensive internal developments and software re-engineering to improve the portability and performance on accelerators/GPU platforms. No changes to the user interface permeated under this release.

Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if (POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif ()

project (hiop VERSION "0.7.2")
project (hiop VERSION "1.0.0")

string(TIMESTAMP HIOP_RELEASE_DATE "%Y-%m-%d")

Expand Down
20 changes: 11 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,27 @@ author = {Cosmin G. Petra},
```
and when using the the PriDec solver please cite:
```
@article{wang2022,
@article{wang2023,
archivePrefix = {arXiv},
eprint = {arXiv:2204.09631},
author = {J. Wang and C. G. Petra},
title = {An optimization algorithm for nonsmooth nonconvex problems with upper-$C^2$ objective},
publisher = {arXiv},
year = {2022},
journal={ (submitted) },
title = {A Sequential Quadratic Programming Algorithm for Nonsmooth Problems with Upper-$\mathcal{C}^2$ Objective},
journal = {SIAM Journal on Optimization},
volume = {33},
number = {3},
pages = {2379-2405},
year = {2023},
doi = {10.1137/22M1490995}
}
@INPROCEEDINGS{wang2021,
author={Wang, Jingyi and Chiang, Nai-Yuan and Petra, Cosmin G.},
author={J. Wang and N. Chiang and C. G. Petra},
booktitle={2021 20th International Symposium on Parallel and Distributed Computing (ISPDC)},
title={An asynchronous distributed-memory optimization solver for two-stage stochastic programming problems},
year={2021},
volume={},
number={},
pages={33-40},
doi={10.1109/ISPDC52870.2021.9521613}
}
doi={10.1109/ISPDC52870.2021.9521613}}
}
```

## Build/install instructions
Expand Down
4 changes: 2 additions & 2 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ HiOp's [user manual](hiop_usermanual.pdf) provides instructions on how to obtain
its interface, user options, and use as an optimization library. Guidelines on how is best to use
the solver for parallel computations are also provided.

The mathematical approach, computational technique, and parallelization strategy and efficiency are described in the
accompanying [technical report](hiop_implpaper.pdf) (publication pending).
The mathematical approach, computational techniques, and parallelization strategies can be found in the
journal publications listed in the root [readme](../README.md) file.
Binary file modified doc/hiop_usermanual.pdf
Binary file not shown.
21 changes: 21 additions & 0 deletions doc/src/petra.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2545,6 +2545,27 @@ @TECHREPORT{pridec_impl
year = {2021}
}

@article{wang2023,
archivePrefix = {arXiv},
author = {J. Wang and C. G. Petra},
title = {A Sequential Quadratic Programming Algorithm for Nonsmooth Problems with Upper-$\mathcal{C}^2$ Objective},
journal = {SIAM Journal on Optimization},
volume = {33},
number = {3},
pages = {2379-2405},
year = {2023},
doi = {10.1137/22M1490995}
}
@INPROCEEDINGS{wang2021,
author={J. Wang and N. Chiang and C. G. Petra},
booktitle={2021 20th International Symposium on Parallel and Distributed Computing (ISPDC)},
title={An asynchronous distributed-memory optimization solver for two-stage stochastic programming problems},
year={2021},
volume={},
number={},
pages={33-40},
doi={10.1109/ISPDC52870.2021.9521613}}
}
@TECHREPORT{idas,
author = {Radu Serban and Cosmin G. Petra and Alan C. Hindmarsh},
title = {User Documentation for {IDAS} v1.2.2},
Expand Down
6 changes: 3 additions & 3 deletions doc/src/techrep_main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
\vspace{3cm}

{\huge\bfseries \Hi\ -- User Guide} \\[14pt]
{\large\bfseries version 0.7}
{\large\bfseries version 1.0}

\vspace{3cm}

Expand All @@ -155,7 +155,7 @@
\vspace{4.75cm}

\textcolor{violet}{{\large\bfseries Oct 15, 2017} \\
{\large\bfseries Updated Sep 30, 2022}}
{\large\bfseries Updated Sep 7, 2023}}

\vspace{0.75cm}

Expand Down Expand Up @@ -752,7 +752,7 @@ \subsection{Structured NLPs suitable to primal decomposition (PriDec) schemes}\l
&&[z_u]&&& \hspace{0.5cm} x_l \leq x \leq x_u. & [z_u] &&&\label{pridebounds}
\end{align}
Mathematically, the above problem is identical (and has the same specification) to the NLP~\eqref{obj}-\eqref{bounds}, with the exception of the so-called ``recourse'' terms $r_i(x)$ appearing in the objective. Each of these functions are real-valued, $r_i:\mathbb{R}^n\rightarrow \mathbb{R}$, for all $i\in\{1,2,\ldots, K\}$, and can be of various order of differentiability. As of now, the recourse functions $r_i(x)$ need to be Lipschitz continuous and continuously differentiable.
It is also possible for $r_i(x)$ to be Lipschitz and only weakly concave (with convergence guarantees). The users are encouraged to contact \Hi developers for the latest developements in this area. A compact description of the algorithm implemented by PriDec can be found in~\cite{pridec_impl} (the technical report version is available \texttt{doc/} directory).
It is also possible for $r_i(x)$ to be Lipschitz and only weakly concave (with convergence guarantees). The users are encouraged to contact \Hi developers for the latest developements in this area. A compact description of the mathematical algorithm implemented by PriDec can be found in~\cite{wang2023}, while the parallelization strategy can be found in~\cite{wang2021}.

The input in which \Hi expects for this class of problems is a bit different than for NLPs of the form~\eqref{obj}-\eqref{bounds} and MDS NLPs introduced in the previous sections. This is mainly caused by the specifics of the primal decomposition algorithm/solver that was purposedly developed to solve~\eqref{prideobj}-\eqref{pridebounds} for large $K$ (\textit{e.g.}, $K=O(10^6)$) efficiently on a massively parallel computing platform. Nevertheless, for smaller $K$, problems of form~\eqref{prideobj}-\eqref{pridebounds} can be solved with \Hi using the sparse and MDS input interfaces.

Expand Down

0 comments on commit 10b7d3e

Please sign in to comment.