diff --git a/CHANGELOG.md b/CHANGELOG.md index ad35bd2d0..6d2b67fef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/CMakeLists.txt b/CMakeLists.txt index e1eb68e7e..ed9fee305 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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") diff --git a/README.md b/README.md index 02b34bbab..b334bd581 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/doc/README.md b/doc/README.md index 3a21da22c..4cea0843e 100644 --- a/doc/README.md +++ b/doc/README.md @@ -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). \ No newline at end of file +The mathematical approach, computational techniques, and parallelization strategies can be found in the +journal publications listed in the root [readme](../README.md) file. \ No newline at end of file diff --git a/doc/hiop_usermanual.pdf b/doc/hiop_usermanual.pdf index e35cf113f..5bcf103c4 100644 Binary files a/doc/hiop_usermanual.pdf and b/doc/hiop_usermanual.pdf differ diff --git a/doc/src/petra.bib b/doc/src/petra.bib index 75f3822ec..19baf39db 100755 --- a/doc/src/petra.bib +++ b/doc/src/petra.bib @@ -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}, diff --git a/doc/src/techrep_main.tex b/doc/src/techrep_main.tex index bdd853bc5..3bd068248 100755 --- a/doc/src/techrep_main.tex +++ b/doc/src/techrep_main.tex @@ -133,7 +133,7 @@ \vspace{3cm} {\huge\bfseries \Hi\ -- User Guide} \\[14pt] - {\large\bfseries version 0.7} + {\large\bfseries version 1.0} \vspace{3cm} @@ -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} @@ -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.