* 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
This PR removes GPU device binding in HYPRE_Init() which is now moved into test drivers. It also fixes the issue with Umpire when using non-default device (device id \neq 0)
This PR (by @pbauman #292 ) takes instances of #if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_DEVICE_OPENMP) and changes them to #if defined(HYPRE_USING_GPU).
Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
The previous -rhsone option on tests 80-95 resulted in CG solving the problem exactly in 4 or 5 iterations. This required the code to be bitwise accurate to pass the tests, which is not reasonable here. The new cosine-based rhs produces more typical convergence for CG on a Laplacian problem.
This PR separates the jobs that break with --enable-mixedint (CGC, ParaSail, Euclid) from regular job scripts, so regression tests can selectively run jobs with --enable-mixedint. The new runtests<-option> files contain a list of tests for the runtest.sh
script that can be run by passing <-option> to the 'run.sh' autotest script. This should enable more flexibility for building regression test suites.
We should also revisit the notes pointed out by @rfalgout at some point.
Co-authored-by: Rob Falgout <rfalgout@llnl.gov>
The 'memory.h' header file is not standard ISO C, but it is standard C++. Apparently, some C compilers may accidentally find a C++ version of this file and cause compile problems. See issue #274 .
In this PR, we removed the dependency of UVM when building with CUDA for the SStruct solvers, and added a "memory tracker" to help debugging memory leak or misuse.
This PR adds GPU-support to hypre's examples. A new `Makefile_gpu` is provided in `src/examples` as an sample makefile, so one can compile the examples with make -f Makefile_gpu if hypre has been built with GPUs.
This pull request adds a -save <ext> feature to the runtest.sh script to allow testing against different saved files on different platforms such as GPU machines. See Issue #255. A few additional things were done:
- All of the checks against the saved files were moved out of the individual tests and into runtest.sh.
- The output-file sanity checks that are in many of the tests were modified so they no longer depend on the saved files. Several issues were also uncovered and fixed.
This PR contains the support of UMPIRE pooling allocators for host and GPU memory. Configure hypre with --with-umpire, device and uvm allocations and deallocations are done with umpire, whereas host pool is not enabled by default. This PR also includes some other minor changes:
Adding .gitignore to the repo
Removing all malloc/calloc/realloc/free and regression testing on finding them
No longer compile ij.c with C++ compiler. It goes back to a C code now.
Introducing HYPRE_USING_GPU, which is equivalent to HYPRE_USING_CUDA || HYPRE_USING_DEVICE_OPENMP
Adding a few user-level interfaces: HYPRE_SetMemoryLocation, HYPRE_SetExecutionPolicy, HYPRE_SetGPUMemoryPoolSize and HYPRE_CSRMatrixSetSpGemmUseCusparse
Co-authored-by: li50@llnl.gov <liruipengblue@gmail.com>
Co-authored-by: Rob Falgout <rfalgout@llnl.gov>
Co-authored-by: Ruipeng Li <li50@llnl.gov>
This PR adds HYPRE_WARP_BITSHIFT macro, which will allow us to hide instances of '>> 5' for forthcoming HIP changes that will need a bit shift of 6 rather than 5. This PR was copied from #265 by @pbauman
Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
* This commit has CUDA based smoothers for AMG based on the triangular parts of sparse matrices. This includes an Gauss-Seidel (relax_type==3), which uses CUSPARSE triangular solvers to invert L. Symmetric Gauss Seidel is implemented in relax_type==6 also via CUSPARSE. Finally, 2 new smoothers are added. THe first is a 2 stage approximation to Gauss Seidel using a parallel MatVec and L (relax_type==11). The second (relax_type==12) is a less effective version of 11. It uses A_diag instead of L for the smoothing. CPU implementations of these new smoothers are also provided. For the two stage algorithms, L and U are NOT explicitly created. This seems faster and saves memory. In the two stage preconditioner, multiply by invdiag rather than divide by diagonal reduces register pressure and yields full occupancy.
Co-authored-by: Paul Mullowney <pmullown@nrel.gov>
Co-authored-by: PaulMullowney <60452402+PaulMullowney@users.noreply.github.com>
* Fix bug in communication for Schur offD element map and update comments on communication pattern options.
* Fix bug to avoid double deletion of solution array.
This merge introduces new features to the parallel ILU solvers in hypre. In particular we have GPU support for BJ-ILU(0) and GMRES-ILU(0). In addition, this merge includes a new option for GMRES-ILU(0) using MILU(0) to build restriction/interpolation operators used to construct the Schur complement matrix by a Galerkin product. This option is also available on the GPU. Key commits include:
* ILU updates with bug fixes for compiling the cuda version
* Update local RCM ordering option to support nonsymmetric matrices
* Update regression tests to test new features
* Reference manual updates, Code cleanup and bug fixes
Co-authored-by: Tianshi Xu <xu16@ray59.coralea.llnl.gov>
Co-authored-by: Tianshi Xu <xu16@lassen708.coral.llnl.gov>
Co-authored-by: Xu <xu16@bellsofireland.llnl.gov>
Co-authored-by: Kote Hitenze <hitenze@jotenshis-MacBook-Pro.local>
Co-authored-by: Tianshi Xu <xuxx1180@umn.edu>
Co-authored-by: Ruipeng Li <li50@llnl.gov>
Modified update-release.sh script to improve portability (for LINUX, UNIX and macOS).
* The use of the 'date' command has been modified to use GNUs 'date' command (if installed).
* In addition, single quotes for sed commands have been replaced by double quotes to allow the use of single quotes
around internal variables. This appears to be more portable than the use of '\x27'. Note that this means shell meta-
characters need to be escaped if they need to be treated as string literals. Other said lines are also modified
accordingly for consistency.
This sets the default convergence tolerance to 1.0e-6 uniformly in hypre. Only three solvers had to be updated (AMG, ILU, and MGR), along with the corresponding documentation.