Releases: LLNL/hiop
NLP Moving limits and misc fixes
v1.0.2
C++17 compatible and misc fixes
What's Changed
Default C++ standard remains C++14
- Fix LLNL CI by @nychiang in #663
- C++17 support: compile -Wall/-Werror proof by @tepperly in #653
- Fix a bug in copying an empty matrix into a bigger matrix by @nychiang in #666
- Fix the approach used to update mu by @nychiang in #664
Full Changelog: v1.0.0...v1.0.1
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 #589
- Fix Assignment Typo in hiopMatrixSparseCsrCuda.cpp by @pate7 in #612
- Use failure not failed in PNNL commit status posting by @cameronrutherford in #609
- rebuild modules on quartz by @nychiang in #619
- Use constraint violation in checkTermination by @nychiang in #617
- MPI communication optimization by @rothpc in #613
- fix memory leaks in inertia-free alg and condensed linsys by @nychiang in #622
- Update IPM algorithm for the dense solver by @nychiang in #616
- Use integer preprocessor macros for version information by @tepperly in #627
- use compound vec in bicg IR by @nychiang in #621
- Use bicg ir in the quasi-Newton solver by @nychiang in #620
- Add support to MPI in C/Fortran examples by @nychiang in #633
- Refactor CUSOLVER-LU module and interface by @pelesh in #634
- Add MPI unit test for DenseEx4 by @nychiang in #644
- Add more options to control NLP scaling by @nychiang in #649
- Development of the feasibility restoration in the quasi-Newton solver by @nychiang in #647
- GPU linear solver interface by @pelesh in #650
New Contributors
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.
Notable new features
A new execution space abstraction is introduced to allow multiple hardware backends to run concurrently. The proposed design differentiates between "memory backend" and "execution policies" to allow using RAJA with Umpire-managed memory, RAJA with Cuda- or Hip-managed memory, RAJA with std memory, Cuda/Hip kernels with Cuda-/Hip- or Umpire-managed memory, etc.
- Execution spaces: support for memory backends and execution policies by @cnpetra in #543
- Build: Cuda without raja by @cnpetra in #579
- Update of RAJA-based dense matrix to support runtime execution spaces by @cnpetra in #580
- Reorganization of device namespace by @cnpetra in #582
- RAJA Vector int with ExecSpace by @cnpetra in #583
- Instrumentation of host vectors with execution spaces by @cnpetra in #584
- Remove copy from/to device methods in vector classes by @cnpetra in #587
- Add support for Raja with OpenMP into LLNL CI by @nychiang in #566
New vector classes using vendor-provided API were introduced and documentation was updated/improved
- Development of
hiopVectorCuda
by @nychiang in #572 - Implementation of
hiopVectorHip
by @nychiang in #590 - Update user manual by @nychiang in #591
- Update the code comments in
hiopVector
classes by @nychiang in #592
Refinement of triangular solver implementation for Ginkgo by @fritzgoebel in #585
Bug fixes
- Refine the computation in normal equation system by @nychiang in #530
- Fix static culibos issue #567 by @nychiang in #568
- Fix segfault, remove nonsymmetric ginkgo solver by @fritzgoebel in #548
- Calculate the inverse objective scale correctly. by @tepperly in #570
- Fix
hiopVectorRajaPar::copyToStartingAt_w_pattern
by @nychiang in #569 - Gitlab pipeline refactor by @cameronrutherford in #597
New Contributors
Misc build system fixes
This minor release fixes a couple of issues found in the build system after the major release 0.7 of HiOp.
What's Changed
- fixing memory leaks in cuSolver by @kswirydo in #554
- moves pnnl_cleanup to .pre stage and removes files based on age by @jdmacam in #555
- Condensed/normaleqn linear system without CUDA/RAJA by @nychiang in #557
- Fix mds raja example for raja without GPU by @nychiang in #558
- git submodule fixes by @cnpetra in #561
- Misc build system fixes related to HIOP_SPARSE by @cnpetra in #560
- Disable openmp when raja is not used by @nychiang in #562
- Pre stage pipeline fix by @ryandanehy in #564
- New tag release - 0.7.1 by @cnpetra in #565
New Contributors
- @jdmacam made their first contribution in #555
- @ryandanehy made their first contribution in #564
Full Changelog: v0.7.0...v0.7.1
Fortran interface and misc fixes and improvements
- Fortran interface and examples
- Bug fixing for sparse device linear solvers
- Implementation of CUDA CSR matrices
- Iterative refinement within CUSOLVER linear solver class
- Improved robustness and performance of mixed dense-sparse solver for AMD/HIP
ginko integration and misc fixes
This tag provides an initial integration with ginko, fixes a couple of issues, and add options for (outer) iterative refinement.
HIP linear algebra workaround and update for RAJA > v0.14
This version/tag provides a workaround for an issue in the HIP BLAS and updates the RAJA code to better operate with the newer versions of RAJA.
Release of the PriDec optimization solver
The salient features of v0.6.0 are
- the release of the primal decomposition (PriDec) solver for structured two-stage problems
- improved support for (NVIDIA) GPUs for solving sparse optimization problems via NVIDIA's cuSOLVER API and newly developed condensed optimization kernels.
Other notable capabilities include
- improved accuracy in the computations of the search directions via Krylov-based iterative refinement
- design of a matrix interface for sparse matrices in compressed sparse row format and (capable) CPU reference implementation