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