This PR modifies hypre_ParCSRMatrixGenerateFFFC to act as a wrapper between the host and device implementations. Consequently, hypre_ParCSRMatrixGenerateFFFCHost has been added.
This PR adds HIP support to MGR. Additionally:
* Add sanity checks at Setup and Solve functions
* Fix a bug in the computation of P_FF on MGR when using GPUs.
* Enable AMG level profiling with HIP
* Enable ROCTX regions in the IJ driver
* Fixing the FEI interface to SuperLU_Dist. This uses the same structs
as src/parcsr_ls/dsuperlu.c.
* Updates to the CMake build system and other spots to support SuperLU_Dist, SuperLU, and the FEI.
Some Windows build bits.
* Reverting this change, it's just in the comments.
* Changes from Tim Dunn's FEI branch (feature/dunn13/tad220914-fei).
This prevents the solver from exiting out with a failure even though
the initial guess is the solution. There is also a fix to prevent a
floating point exception.
* Removing this #ifndef, as it is no longer necessary for our Windows build.
* Only enable CXX if building the FEI.
This PR updates hypre_device_allocator to use hypre's abstract memory model. This means that:
hypre configured with unified memory support: those allocations will be on managed memory.
hypre configured without unified memory support: those allocations will be on device memory.
This PR enables 2-stage GS relaxation to work properly with multi-component vectors.
* some optimizations to get 2-stage GS working faster
* Update loop unrolling at DiagScaleVector2
* computeY is a template argument now
Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
This PR adds a new variable in `HYPRE_config.h` for naming the hypre's branch currently in use. Internal drivers have been updated to use this variable
* Add HYPRE_BRANCH_NAME to Makefile and cmake builds
* Run config/update.sh
* Ignore files generated by cmake in the cmbuild folder
* Update drivers
* Update regression tests
This PR enables the use of Krylov methods for solving linear systems with multi-component vectors. Regression tests have been added on src/test/TEST_ij/vector.sh. Additionally, hypre_ParCSRDiagScaleVector and hypreDevice_DiagScaleVector have been extended to work with multi-component vectors.
* Small changes to support multi-component Krylov algorithms. This seems to work with GMRES.
* Extend hypre_ParCSRDiagScaleVector to multicomponent vectors
* Extend hypreDevice_DiagScaleVector to multicomponent vectors
* Test Krylov solvers support for multi-component vectors
* Update result for the final residual norm (Tux)
* Add hypreGPUKernel_CSRMatvecShuffleGT8 and update hypreDevice_CSRMatrixMatvec with new kernel dispatching strategy
* Add number of matvecs as a command line option for the IJ driver
* Add vector.saved.lassen and vector.saved.arcticus files
* Run astyle
Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
This PR adds "runtime switch" feature to the solvers in hypre.
Co-authored-by: Victor A. P. Magri <paludettomag1@llnl.gov>
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
This avoid an #include issue with newer C++ compilers.
Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
Co-authored-by: Rob Falgout <rfalgout@llnl.gov>
* Add device functions to perform strided copy
* Extend BoomerAMG with L1-Jac to vectors with multiple components
* Add ParVectorSetLocalSize calls to MGR
* Extend hypre_ParCSRCommPkg with a new member (num_components) that allows communicating several vector components at once.
* Add hypre_ParCSRCommPkgCreateAndFill for allocating and filling a communication package with its data.
* Improve parallel SpMV performance for vectors with multiple components
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
This is part of a series of PRs for enabling BoomerAMG to be applied to vectors with multiple components.
* Extend hypre's SpMV on CUDA to multivectors and add calls to cusparse's SpMM.
* Add loop unrolling to hypre's SpMV on CPUs when using multivectors with less than 5 components.
* Add HYPRE_SPMV_FILL variables to hypre's SpMV on GPUs
* Add SYCL changes to SpMV
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
* This commit adds the public and internal APIs for doing jacobi approximation to iterative triangular solve. At the moment, this code simply sets parameters for the ILU classes.
* Fixing defaults, docs, and comments.
Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
* Add new device functions needed by multivectors (`hypreDevice_IntStridedCopy` and `hypreDevice_IVAMXPMY`)
* Extend `hypre_SeqVectorElmdivpy` to work with multivectors.
Ports some missing routines to allow the IJ driver to run without unified memory with the sycl backend:
IJ vector set/add values and assembly
Routines in par_coarse_parms_device.c
hypre_ParCSRComputeL1Norms()
This PR enables Set/AddTo/GetValues for multivectors through the IJ interface. It also adds regression tests for the new functionalities (TEST_ij/vector) and the HYPRE_IJVectorInnerProd function