This PR ports the Neumann version of AIR to the GPU. New features include:
1. Construction of Neumann AIR restriction operator R on the GPU
2. Construction of one-point interpolation on the GPU
3. Construction of an absolute value version of the strength of connection matrix on the GPU
4. CF relaxation for Jacobi (relax7) and L1 Jacobi (relax18) on the GPU - note that this does redundant computation since a full matvec is called when only relaxing either C- or F-points
5. Regression tests for AIR
6. Filtering for ParCSR matrices based on tol*row_norm for 1-, 2-, and infinity-norm on the GPU
This PR addresses #404. Includes the typo fixes, and changes to .saved due to inclusion of -ns 2. Also, fixed the memory issues after fixing the .jobs
Co-authored-by: Ruipeng Li <li50@llnl.gov>
Co-authored-by: li50@llnl.gov <liruipengblue@gmail.com>
This PR reimplements hypre_ParCSRMaxEigEstimate using Gershgorin discs, which ensures that max_eig and min_eig are both allreduced across all ranks so that the return value of the function is the same for all ranks.
Co-authored-by: Ruipeng Li <li50@llnl.gov>
Co-authored-by: li50@llnl.gov <liruipengblue@gmail.com>
This PR (#440) fixes portability issue of ffs on MinGW.
Co-authored-by: Pierre Jolivet <pierre@joliv.et>
Co-authored-by: Ruipeng Li <li50@euler.llnl.gov>
This PR improves the IJ interface with new functions, performs code reorganization, and simplifies coding by removing ownership info related to the partitioning data members from ParCSRMatrix and ParVector objects. A more comprehensive list of changes is given below:
* Add HYPRE_IJMatrixAdd, HYPRE_IJMatrixNorm and HYPRE_IJMatrixTranspose functions
* Add ParCSRMatrixInfNorm and ParCSRMatrixReorder functions
* Add transpose, add and norm functions to IJMatrix
* Add more caliper annotation to BoomerAMG and ParCSR functions
* Fix typo in assumed partition function and add caliper annotation
* The output matrix from ParTMatmul owns row/col starts.
* Build communication package for A at ParTMatmul if it does not exist.
* Move hypre_Log2 to utilities
* Add HYPRE_ANNOTATE_REGION_[BEGIN,END] to caliper annotation
* Phase out [row,col]_starts ownership info in ParCSR matrices
* Remove partitioning ownership info from vector
* Move partitioning variables to stack memory
This was originally started as an effort to
fix the Windows+CUDA build, in which case
these special flags need to be added differently
when CUDA is used.
However, they were there to workaround issues in
earlier MSVC versions that today's version doesn't
have, so the changes here actually just check
whether the MSVC being used is old enough to need
these workarounds.
Since using CUDA and MSVC through CMake is relatively
new, there shouldn't be a need to support these
workarounds with CUDA
This PR adds GPU support for ams, ame and ads, and the following parcsr operations on GPUs, ParCSRAdd, ParCSRTranspose, l1 hybrid G-S/SSOR.
Co-authored-by: Rob Falgout <rfalgout@llnl.gov>
This removes the masked matvec routine previously used for CF L1 Jacobi relaxation in the AMG-DD solver. There was a bug present in the GPU code and the bsrxmv cusparse routine no longer supports our use-case as of cuda 11. In addition, appropriate regression test results were saved for the GPU implementation of AMG-DD.
Fixed Makefile clean targets to explicitly remove '*.obj' files. The previous approach had the potential to delete developer files that were not intended to be removed.
Renamed 'hypre_*' filenames in 'src/sstruct_ls' and 'utilities/' directories
Fixed AUTOTEST tests that filter on the renamed 'hypre_' files
Co-authored-by: Rob Falgout <rfalgout@llnl.gov>
This PR changes AMG defaults regarding GPUs at various places, adds regression tests on GPUs, simplifies CUDA boxloop implementations.
Co-authored-by: Sarah Virginia Osborn <osborn9@llnl.gov>
Co-authored-by: PaulMullowney <pmullown@nrel.gov>
Co-authored-by: Daniel Osei-Kuffuor <oseikuffuor1@llnl.gov>
Co-authored-by: Ruipeng Li <li50@euler.llnl.gov>
Co-authored-by: Ruipeng Li <coe0141@redwood.cm.cluster>
Add CUDA options to CMake.
* Add CUDA options to CMake, including adding CUDA_SRCS to each sub-directory's CMake list
* Changes so that HYPRE_config.h from CMake is consistent with configure
* Fix to license commenting style
* Add CUDA + CMake tests for building on lassen
* Remove hard option to reorder transpose operation to place diagonal in first entry for square matrices. Implement this locally as needed.
*Add runtime option to switch to GPU support
Co-authored-by: Ruipeng Li <li50@llnl.gov>
- Added a HYPRE_RELEASE_NUMBER macro, which is an integer representation of the release that can be compared numerically against other releases in user build systems
- Added a 'config/version.sh' that should be modified to create new releases
- Changed the 'config/bootstrap' script to 'config/update.sh' and added a version number check