Commit Graph

12188 Commits

Author SHA1 Message Date
Victor A. P. Magri
461b6eee60
New features for MGR (#817)
This PR adds device support to various MGR options:

    Non-galerkin coarse grid correction options (except for option 4)
    Block diagonal interpolation (interp_type = 12)
    Block Jacobi relaxation (level_smooth_type = 0 for global relaxation and interp_type = 12 for F-relaxation)

The main code changes are listed below:

* Add hypre_ParCSRMatrixExtractBlockDiagDevice
* Add hypre_ParCSRMatrixExtractBlockDiagDevice and respective GPU kernels
* Add hypre_ParCSRMatrixGenerateFFFCHost and respective backend wrapper
* Add device support to hypre_MGRBuildPBlockJacobi
* Add hypre_ParCSRMatrixBlockDiagMatrixDevice
* Add hypre_ParCSRMatrixExtractBlockDiagDevice
* Add MGRBuildPFromWpDevice
* Add implementation for batched matrix transpose on the device
* hypre_ParCSRMatrixDropSmallEntriesDevice: exit if tolerance is zero
* Add hypre_ParCSRMatrixGenerateCCCFDevice
* Port MGR's Non-Galerkin option to device
* Add L1-Jacobi global smoother to MGR
* Add missing comments about MGR's public APIs
* Add hypre_MGRComputeNonGalerkinCGDevice
* Update style of hypre_MGRCycle
* Add sanity checks to hypre_SeqVectorElmdivpyMarked
* Add hypre_MGRBlockRelaxSolveDevice
* Add GPUProfiling to several places
* MGR setup: simplify computation of l1_norms
* MGR solve: make use of ParVectorSetZeros to make residual computations faster
* Exit hypre_SeqVectorElmdivpyMarked earlier for vectors with zero size
* Update caliper region names for MGR
* Add wrappers to cublas batched getrf and getri functions
* General performance improvements for MGR
2023-04-11 15:34:12 -04:00
Victor A. P. Magri
416a8f8323
Fix memory leak at ParCSRMatrix host multiplication (#873)
Check whether AT_diag/offd already exist before computing them
2023-04-07 10:24:54 -04:00
Victor A. P. Magri
58d1abbc27
Change variables to unsigned long long int (#874)
Solves GitHub issue #870
2023-04-05 16:33:24 -04:00
Victor A. P. Magri
f69f8ef469
Fix typo on hypre_GpuMatDataMatDescr variable (#864)
* The Accessor macro is being changed from Decsr to Descr
* Run astyle

---------

Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
2023-03-22 22:52:47 -04:00
Rui Peng Li
2391e4703f
Fix memory tracker with omp (#844)
This PR fixes hypre memory tracker with OMP threading.
2023-03-22 16:01:24 -07:00
Wayne Mitchell
1eabaf5f33
Report error on hypre calls outside of HYPRE_Init() - HYPRE_Finalize() (#837)
When hypre handle is not initialized and a call to hypre_handle() is made, report an error and call HYPRE_Init() rather than just calling hypre_HandleCreate() with no error reporting.
2023-03-21 14:31:52 -07:00
Victor A. Paludetto Magri
9e84e35bf4
Add ILU device support independent of UVM (#816)
This PR has three main goals:
 1. Enable ILU to work without UVM on device builds.
 2. Add the runtime switch option to ILU. Thus, in device builds, one can choose now whether to execute ILU's setup and solve on the device or host.
 3. Improve error handling. e.g, when trying to execute on the device ILU types that are not supported yet.

A summary of the code changes is given below: 

* Enable ILU reordering algorithms to work without UVM memory.
* Update hypre_ILUSetupILU0Device with new intArray functions
* Fix memory location of S_offd + style updates
* Simplify hypre_ParILUCusparseILUExtractEBFC
* Remove unused function: hypre_ParILUCusparseExtractDiagonalCSR
* Refactor hypre_ILUGetInteriorExteriorPerm
* Refactor hypre_ILULocalRCM
* Refactor hypre_ILUSortOffdColmap
* Refactor hypre_ILUGetLocalPerm
* Refactor hypre_ILUGetPermddPQ
* Fix memory transfer at hypre_ILUGetInteriorExteriorPerm
* Add error messages for ILUK and ILUT for device runs
* Add error messages for GMRES-ILUK and GMRES-ILUT for device runs
* Add execution policy to ILU setup/solve
* Bug fixes for -exec_host/-memory_host on device builds
* Add ILU reordering option to IJ driver
* Refactor hypre_ILUSetupILUKDevice
* Refactor hypre_ILULocalRCM
* Remove duplicated code
* Bug fix on hypre_ILUGetPermddPQPre
* Update lassen results in accordance with CPU runs

---------

Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
2023-03-18 17:26:40 -04:00
Victor A. Paludetto Magri
deece5580f
Auxiliary space preconditioners fix (#859)
This PR fixes the data type of cheby_fraction used as input in the SetChebySmoothingOptions functions of AMS and ADS
2023-03-17 14:29:37 -04:00
Rob Falgout
c3ce7b9f17
Fix typo in AMS Poisson matrix description (#863) 2023-03-17 10:48:17 -07:00
Victor A. Paludetto Magri
2a61eb41ad
Add cuSOLVER and rocSOLVER support (#840)
Add cuSOLVER and rocSOLVER support to configure (autotools build) and add macro calls for functions defined in these libraries.
2023-03-17 12:04:07 -04:00
Rob Falgout
2ec3effbde
Release 2.28.0 (#861) 2023-03-17 07:28:55 -07:00
Victor A. Paludetto Magri
31e8cd64f6
Improve error handling for multi-component vectors - Minor fix
See previous PR.
2023-03-14 18:08:20 -04:00
Victor A. Paludetto Magri
04d1991625
Improve error handling for multi-component vectors (#848)
This PR improves error handling for preconditioners and relaxation methods that do not support multi-component vectors yet.
2023-03-14 18:03:37 -04:00
Victor A. Paludetto Magri
16c4d8304d
Change hypre_AuxParCSRMatrix variables to HYPRE_BigInt (#842)
This PR changes the type of four variables in the auxiliary matrix data structure to avoid the multiplication of integers and floating-point numbers during `hypre_IJMatrixSetAddValuesParCSRDevice`
2023-03-07 20:24:56 -05:00
Rob Falgout
6907852618
Autoconf update (#765)
Updating to autoconf 2.71 for building the 'configure' script

Also updated 'config.guess' and 'config.sub' to the 2023 versions
2023-02-16 09:42:07 -08:00
Wayne Mitchell
a30bd53628
Fix memory leak in sycl reduction boxloop (#836)
Fix memory leak in sycl reduction boxloop
2023-02-14 08:55:37 -08:00
Wayne Mitchell
a592bbd12b
Sycl matmat (#716)
Fixes for oneMKL sparse matmat and port of our custom spmv and spgemm routines to sycl. Note that this also involves significant updates to basic handling of kernel launches in sycl due to the need to support multi-dimensional kernels and the use of local shared memory.
2023-02-10 08:21:11 -08:00
Victor A. Paludetto Magri
0bfcdbbf19
Add CSRMatrix functions (#815)
This PR adds the following routines to CSRMatrix data types:

* hypre_CSRMatrixMigrate
* hypre_CSRMatrixPermute
* hypre_CSRMatrixPrintIJ
2023-02-09 10:07:30 -05:00
Victor A. Paludetto Magri
67d3fe4532
Add vector resizing functions (#829)
This PR adds hypre_SeqVectorResize and hypre_ParVectorResize for resizing sequential and parallel vectors, respectively. This is useful for block-Krylov solvers/eigensolvers using BoomerAMG and multi-component vectors.
2023-02-08 18:14:32 -05:00
Daniel Osei-Kuffuor
ddc548f906
Extend hypre complex (#824)
* Enable HYPRE_COMPLEX to accept precision types supported by hypre.
2023-02-08 10:13:20 -08:00
Wayne Mitchell
c964884062
Update Tioga Regressions (#833)
Fix batch submission and update .saved files for Tioga regression testing.
2023-02-07 15:48:51 -08:00
Daniel Osei-Kuffuor
065613399b
Fix floating point conversion warnings (#827)
* Updated gcc compiler flags for strict-checking build option to throw floating point conversion warnings
* Several minor edits to clean up floating point conversion warnings and minor bugs.  
* Updated saved files to reflect changes.
2023-02-06 13:53:14 -08:00
Victor A. Paludetto Magri
832ad94de3
Fix data conversion issues (#831)
This PR fixes a few compilation issues introduced in the previous PR involving the --enable-single and --enable-mixedint builds
2023-02-03 17:01:02 -05:00
Victor A. Paludetto Magri
53dfbe360f
Add axpyz kernels (#810)
This PR adds SeqVector and ParVector functions for computing: z = a * x + b * y
2023-02-02 21:55:53 -05:00
Victor A. Paludetto Magri
d3f6b03c87
Add matrix scaling function (#814)
This PR adds hypre_ParCSRMatrixDiagScale for computing left and right parallel matrix scaling. The function also works when one of the scaling factors, which are stored as vectors, are not present. Regression tests have been added for this new function.
2023-01-23 09:21:15 -05:00
Daniel Osei-Kuffuor
52802b646e
Direct frelax solve -- bugfix (#820)
Bugfixes and code cleanup for F-relaxation setup that use direct solvers and complex smoothers.
2023-01-13 14:06:36 -08:00
Rob Falgout
98c4321fee
Modify check-license.sh to ignore '.png' files (#819) 2023-01-12 16:26:54 -08:00
Rob Falgout
41fa152e34
Migrate docs to read-the-docs theme (#803)
This switches the Sphinx documentation style to improve rendering of the "API" pages.
2023-01-11 15:19:10 -08:00
Victor A. Paludetto Magri
b9d3eccbe3
Add new hypre_IntArray functions (#807)
The new functions are:

* Add hypre_IntArrayPrint
* Add hypre_IntArrayMigrate
* Add hypre_IntArrayRead
* Add hypre_IntArrayInverseMapping
2023-01-05 19:02:11 -05:00
Victor A. Paludetto Magri
41961c2935
Fix RAP memory leak (#806)
This PR fixes a memory leak in the parallel RAP routine that arises when a single task is used and R contains `diagT` at input.
2023-01-05 16:24:06 -05:00
Victor A. Paludetto Magri
79e4ddb5a8
Access pointer data only if it is not NULL (#809)
This PR solves the GitHub issue #808
2023-01-05 16:16:22 -05:00
Daniel Osei-Kuffuor
2b1dd32d10
Direct frelax solve (#805)
* Added new options to use GE for F-relaxation
* Updated documentation to include new options.
2023-01-02 03:03:38 -08:00
Rob Falgout
45b6cdb1a0
Add mac regression test and modify runtest.sh for portability (#796)
The expression '\t' for <tab> does not work on the mac, so the whitespace
expressions were changed to use the posix standard '[[:space:]]'.
2022-12-21 08:34:48 -08:00
Rob Falgout
b9596c6b55
Updating User Manual to point to the API chapter instead of Reference Manual (#802) 2022-12-20 13:14:57 -08:00
Rob Falgout
f851603eee
Release 2.27.0 (#801)
Update CHANGELOG and version number for release 2.27.0
2022-12-20 09:25:06 -08:00
Rui Peng Li
9a16ff8edb
fix _hypre_utilities.h; !!!PLEASE DO NOT CHANGE THIS FILE DIRECTLY!!! (#799)
This PR fixed an issue in _hypre_utilities.h from previous PRs.
2022-12-19 11:35:31 -08:00
Rob Falgout
80ea9be26a
Implement AddFEMBoxValues() routines (#779)
Introduce new AddFEMBoxValues() routines to improve system setup time when using the SStruct finite element interface.  This initial implementation can produce significant speedups, but there is room for future optimizations.

Co-authored-by: Victor A. P. Magri <paludettomag1@llnl.gov>
2022-12-15 17:21:08 -08:00
Sarah Osborn
182db6cf0e
Update CMake version in install directions (#793) 2022-12-14 13:33:03 -08:00
Victor A. Paludetto Magri
c8f1aba2d6
Add hypre_IntArrayCount (#776)
This PR adds the function hypre_IntArrayCount for counting the number of occurrences of a value in a hypre_IntArray. Also, it moves device methods to a new file int_array_device.c.

Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
2022-12-14 12:21:55 -08:00
Victor A. Paludetto Magri
1cc7e81e21
Fix strict prototypes (#774)
This PR cleans the code for the warning Wstrict-prototypes. This flag was also added to the debug build of machine-tux.

Co-authored-by: Pierre Jolivet <pierre@joliv.et>
2022-12-14 11:13:20 -08:00
Victor A. Paludetto Magri
69f74995e0
Add new search paths for the NVIDIA math libs (#788)
This PR adds two new search paths for the NVIDIA math libraries (cuSPARSE, cuBLAS, cuSOLVER). This fixes build issues on Polaris and Perlmutter.

* Add two new search paths for the NVIDIA math libs to configure
* Turn off CUDA math libs when CUDA is disabled
2022-12-13 17:56:56 -05:00
Rui Peng Li
322b9d10cc
NekRS (#702)
This PR adds the optimizations in IJ solvers that were done for NekRS.
2022-12-09 08:46:52 -08:00
Victor A. Paludetto Magri
8f51e49402
Bug fixes involving mixedint option and CUDA build (#783)
This PR fixes a few variable types inconsistencies arisen from the mixedint build. Additionally, it fixes the CUDA-11.1.1 build.

* Fix cuSPARSE version tag for using generic SpMM and new SpMV algorithms
* Bug fixes on hypre_ILU: S_row_starts computation and m -> big_m
* Bug fix: HYPRE_MPI_REAL -> HYPRE_MPI_COMPLEX
* Bug fix: HYPRE_Int -> HYPRE_BigInt
* Bug fix: HYPRE_MPI_INT -> HYPRE_MPI_BIG_INT

Co-authored-by: TotoGaz <49004943+TotoGaz@users.noreply.github.com>
2022-12-07 22:52:15 -05:00
ulrikeyang
af9c59cc34
Bench22 (#786)
* added changes required for the new AMG benchmark, including a new routine that returns wall clock time and some new parameters which generate cumulative numbers of nonzeros for A, coarse grid and prolongation operators in AMG
2022-12-07 14:35:18 -08:00
Wayne Mitchell
9bbdd9799f
SYCL regression testing (#778)
Several bug fixes and small changes for the sycl build. Addition of full regression testing on florentia with consistent and correct results for struct and ij tests with sycl backend.
2022-12-05 16:21:03 -08:00
Rui Peng Li
2826c39ed4
update lassen results (#784)
This PR updates lassen results with small changes.
2022-12-01 14:26:15 -08:00
Victor A. Paludetto Magri
dcbd6d724b
Generalize hypre_ParCSRMatrixGenerateFFFC (#772)
This PR modifies hypre_ParCSRMatrixGenerateFFFC to act as a wrapper between the host and device implementations. Consequently, hypre_ParCSRMatrixGenerateFFFCHost has been added.
2022-11-30 09:13:39 -08:00
Victor A. Paludetto Magri
b93beb9465
Update function comments (#770)
This PR updates a few function comments and serves as a test for pull requests after master has been marked as protected
2022-11-03 23:16:22 -04:00
Rob Falgout
aff83e81fc
Use $(MAKE) instead of (non-portable) make (#763) (#766)
Cf. #755 (comment).

Co-authored-by: prj- <prj-@users.noreply.github.com>
2022-11-03 13:35:43 -07:00
Victor A. Paludetto Magri
a6228149b2
Change CUDAKernel -> GPUKernel (#769)
This PR updates function names starting with hypre_CUDAKernel to hypre_GPUKernel
2022-11-03 13:26:46 -07:00