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
Add OpenMP support to CSRMatrixAddHost and ParCSRMatrixAdd functions. Minor changes are:
- Changed name ParcsrAdd to ParCSRMatrixAdd
- Add hypre_CSRMatrixAddFirstPass and hypre_CSRMatrixAddSecondPass to reduce code duplication
- Update rownnz support in CSRMatrixAddHost, ParCSRMatrixAdd and hypre_ILUParCSRInverseNSH.
- Refactor SpMV branches
* Fixed a corner-case divide-by-zero in PFMG (see github issue #332)
- The 'mean' computed in PFMG can be zero, so don't divide by it.
- Reduced the size of the dxyz values to avoid an underflow.
- Added comments to better explain this part of the code.
- Added regression tests to check 3D problems that have all of the coefficients
zeroed out in one dimension (so they are basically 2D).
This PR addresses initial changes necessary to perform MGR setup on GPUs. It also fixes a bug in the iterative use of AMG for F-relaxation, adds options to print statistics of the F-relaxation solver (for the V-cycle smoother), and places the diagonal of a transposed square matrix as the first element in the row. This last change required a couple minor changes to the saved files.
The main objective of this PR is to improve the support of matrices with a large number of zero rows in hypre. More specifically:
* Improve IJMatrixAssemble for matrices with a large number of zero rows.
* Add hypre_AuxParCSRMatrixSetRownnz to build array of nonzero rows in the auxiliary matrix. This saves allocation time for building ParCSRMatrices.
* Improve (Par)CSRMatrix transpose, addition and multiplication operations for matrices with a large number of zero rows.
Secondary changes made in this PR are:
* Update SpMV paths in `csr_matvec` in order to make the calculation of A*x more concise.
* Extend OpenMP support to hypre_CSRMatrixSumElts, hypre_CSRMatrixFnorm and hypre_CSRMatrixReorder.
* Clean gcc-9 warnings
* Update saved files and delete unused variable
Co-authored-by: Ruipeng Li <li50@llnl.gov>
When building the colmap array for prolongation operators that contain a high number of nonzero coefficients living in P_offd, see hypre_build_interp_colmap, the code will make P_offd_size * num_cols_P_offd comparisons, and this can be very high depending on the test case. This PR eliminates such code path and uses a hash table to accomplish the same purpose, thus lowering the algorithmic complexity.
This PR (@pbauman #329) addresses #309, which allows each `hypre_csrmatrix` has a GPU matrix descriptor.
Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
* Rewrote strength matrix generation for nodal > 0, since it was faulty. This also also fixed a bug that occurred when using hopscotch.
* Added new option HYPRE_BoomerAMGSetKeepSameSign, which keeps values in S if they are of the same sign as the diagonal for nodal > 0.
This option does not affect nodal = 0.
* fixed a bug accidentally introduced in standard interpolation
* removed option to set SCommPkgSwitch, which allowed to reduce communication for strength matrix, but was not working properly. This included removing occurrences of col_offd_S_to_A etc
* included capability to deal with systems of PDEs in MM interpolation operators, except for 2s-MM-ext
* updated saved files
* added regression tests and modified elasticity regression tests