Commit Graph

11460 Commits

Author SHA1 Message Date
Ruipeng Li
91e82e6994
hybridSetAggInterpType (#358)
This PR adds API to set AggInterpType for hybrid solvers
2021-05-10 13:39:52 -07:00
Rob Falgout
fbaf2b75dd
Fix a corner-case divide-by-zero in PFMG (see github issue #332) (#355)
* 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).
2021-05-10 13:30:02 -07:00
Daniel Osei-Kuffuor
c272f6980c
Fix MGR setup on GPU and MGR bugfixes. (#260)
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.
2021-05-10 13:19:34 -07:00
Victor A. Paludetto Magri
3f12d47651
Add support for matrices with many zero rows (#300)
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>
2021-04-27 17:14:17 -07:00
Victor A. Paludetto Magri
521ef12ff1
Fix colmap (#328)
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.
2021-04-20 10:28:49 -07:00
Ruipeng Li
c5110654ce
add include in fei makefile (#334)
This PR adds an include directory in FEI_MV.
2021-04-19 17:59:30 -07:00
Ruipeng Li
4718207e94
hypre_strcpy (#340)
This PR tries to fix #315
2021-04-19 17:59:03 -07:00
Ruipeng Li
9a28cc622a
Config without args (#338)
This PR (by @acolinisi #337) fixes hypre's --without-caliper and --without-strict-checking configure options.

Co-authored-by: Alexei Colin <acolin@isi.edu>
2021-04-19 17:58:31 -07:00
Ruipeng Li
25646da905
Mat descr (#331)
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>
2021-04-15 19:00:38 -07:00
Ruipeng Li
34b2f43ba8 Merge branch 'master' of github.com:hypre-space/hypre 2021-04-13 18:44:18 -07:00
Ruipeng Li
0d730f3744 Fixed seg-fault problem 2021-04-13 18:43:50 -07:00
ulrikeyang
3f6c0abc48 Merge branch 'master' of https://github.com/hypre-space/hypre 2021-04-13 15:09:57 -07:00
ulrikeyang
e79d05d0bc removed some missed col_offd_S_to_A 2021-04-13 15:06:34 -07:00
Ruipeng Li
d2ef5cf18c Fixed ExtInterpDevice 2021-04-13 15:06:26 -07:00
ulrikeyang
0a0ddd0723
Fix s (#312)
* 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
2021-04-12 12:20:28 -07:00
Ruipeng Li
25d0498a3e
Roctx (#319)
This PR (by @pbauman #317) adds rocTX support, the ROCm analog to NVTX.

Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
2021-04-12 08:36:09 -07:00
Ruipeng Li
b3a4a76a5f
Roc sparse (#316)
This PR (by @pbauman #304) adds the first pass of rocSPARSE support.

Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
2021-03-25 20:11:53 -07:00
Ruipeng Li
366b80f89b
2 stage gs (#314)
This PR (by @PaulMullowney #282) includes updates/changes to the 2 stage GS preconditioner.

Co-authored-by: Paul Mullowney <pmullown@nrel.gov>
2021-03-24 15:14:00 -07:00
Ruipeng Li
8002200aa0
Revert "2 stage gs (#308)" (#313)
This reverts commit f7fb2853f2.
2021-03-24 09:37:07 -07:00
Ruipeng Li
f7fb2853f2
2 stage gs (#308)
This PR (by @PaulMullowney #282) includes updates/changes to the 2 stage GS preconditioner. 

Co-authored-by: Paul Mullowney <pmullown@nrel.gov>
2021-03-24 09:36:01 -07:00
Sarah Virginia Osborn
fcd2b2b4bb Add missing utilities source file to CMakeList 2021-03-18 08:38:12 -07:00
Ruipeng Li
ce2a438215
removing device bindings in HYPRE_Init (#296)
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)
2021-03-17 17:22:17 -07:00
Ruipeng Li
8223465ead
More hip support (#302)
This PR (by @pbauman #301) add more Hip support that was missed in #297.

Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
2021-03-12 20:30:18 -08:00
Ruipeng Li
67a0bdeab9
Hip support (#298)
This PR (by @pbauman #297) is a primary step in adding HIP support.

Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
2021-03-10 09:17:15 -08:00
Ruipeng Li
4630047ad3
HYPRE_USING_GPU (#295)
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>
2021-03-05 16:35:03 -08:00
Sarah Virginia Osborn
9d45b1934a Remove unnecessary including of superlu_ddefs in ij test 2021-03-05 09:05:19 -08:00
Ruipeng Li
2e97ffcc9e
bug fix recvbufsize (#294)
This PR fixes a problem of communication between GPUs for structured solvers.
2021-03-04 11:47:42 -08:00
Rob Falgout
c9848a5ed8 Fixed a small mistake in configure/configure.in 2021-03-04 05:51:34 -08:00
Ruipeng Li
b5070c14e2 configure fix for last merged PR 2021-03-04 01:02:38 -08:00
Ruipeng Li
8c00f18a95
Hip build (#293)
This PR adds options to the build system for enabling ROCm and HIP support. 

Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
2021-03-02 10:02:12 -08:00
Rob Falgout
7859aeee34
Changed the rhs in several TEST_sstruct/periodic runs (#291)
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.
2021-03-01 06:13:53 -08:00
Rob Falgout
5122196348 Adding filter to check-license test to ignore runtests-* files 2021-02-18 07:00:23 -08:00
Ruipeng Li
68f510c11b
Test jobs for enable-mixedint (#280)
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>
2021-02-17 20:24:58 -08:00
Rob Falgout
277b357858
Removing 'memory.h' include since it is not ISO standard (#279)
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 .
2021-02-16 08:20:02 -08:00
Ruipeng Li
c4ca3e1050
fixed wrong pointer checking; error handler in debug mode (#275)
This PR fixed a pointer comparison error in GPU matvec y=Ax, (if both pointers of x and y are NULL, should not throw errors).
2021-02-10 23:11:32 -08:00
Rob Falgout
33da39f68a Fixed a typo in the sstruct.in.README file comment 2021-02-10 17:55:01 -08:00
Ruipeng Li
51e5a4c6de
SStruct interface without UVM (#170)
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.
2021-02-09 11:21:39 -08:00
Ruipeng Li
3438132e1a
GPU examples (#268)
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.
2021-02-09 11:19:05 -08:00
Rob Falgout
6eb66f8695 Fixed a small mistake in the sludist.sh test 2021-02-09 06:44:39 -08:00
Rob Falgout
be18e595ae
Remove the global partition code from hypre (#273)
This PR removes the global partition code from hypre.
2021-02-08 15:16:29 -08:00
Rob Falgout
6f9260b67c
Add saved-file extension to runtest (#271)
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.
2021-02-08 15:11:45 -08:00
Ramesh Pankajakshan
414fa671be
Umpire (#243)
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>
2021-02-03 12:31:25 -08:00
Ruipeng Li
8462f60dc7
Hypre warp bitshift (#267)
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>
2021-01-27 11:22:09 -08:00
Ruipeng Li
2186a8fb34
triangular solve on GPUs; runcheck (#256)
This PR fixes triangular solve on GPUs, and runcheck.sh

Co-authored-by: Daniel Osei-Kuffuor <oseikuffuor1@llnl.gov>
2021-01-15 20:46:59 -08:00
Daniel Osei-Kuffuor
bd76daf124
Updated saved files to reflect change in NSH solve on ILU Schur system -- See PR#251. (#254) 2021-01-11 20:22:36 -08:00
Daniel Osei-Kuffuor
6a1caf8998
Modification to fix error code warning for coarse level solver (#251)
Set tolerance for ILU Schur solver to zero for NSH. Schur solver convergence will be controlled by the max. number of iterations.
2021-01-08 16:57:22 -08:00
Ruipeng Li
a6c852be52
fixed syntax error with --enable-gpu-aware-mpi (#250)
This PR fixed compile errors with `--enable-gpu-aware-mpi', and added more comments regarding syncing CUDA stream when doing GPU-GPU MPI.
2021-01-04 16:05:27 -08:00
Ruipeng Li
950f9f2505
fix GPU SpMV for zero matrices (#246)
This PR fixes the issue with zero-sized matrix SpMV on GPUs.
2020-12-22 21:47:36 -08:00
Ruipeng Li
b49727f16b
Cuda triangular smoothers (#240)
* 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>
2020-12-17 19:37:59 -08:00
Sarah Osborn
763ea8a5a8
cmake: Optionally accept path to BLAS/LAPACK libraries (#230)
Allow a user to specify the path to BLAS/LAPACK libraries within cmake, and bypass the cmake find_package logic.
2020-12-17 12:21:30 -06:00