Commit Graph

12219 Commits

Author SHA1 Message Date
Rob Falgout
8f6bdc6ab8
Release 2.29.0 (#936) 2023-06-23 05:01:41 -07:00
Victor A. P. Magri
5e0bf05b42
Fax valgrind issue in AIR (#930) 2023-06-20 15:52:18 -04:00
Victor A. P. Magri
64ce05b405
Offd num cols fix (#901)
Modified from #718, this PR squashes out zero columns of the off-diagonal part of a `hypre_ParCSRMatrix`.

The issue was in offd there exist empty columns (columns with no nonzeros), which correspond to "useless" entries in col_map_offd. This caused issues in at coarser grids in the communications with large number of ranks. We added a routine to compress the zero columns out and shorten col_map_offd. This should reduce communication cost even at higher levels.

Two sources of the empty columns have been located and fixed:
 - Truncation after building P
 - P^T(AP): only the transpose multiplication part.

---------

Co-authored-by: Noel Chalmers <noel.chalmers@gmail.com>
Co-authored-by: Ruipeng Li <li50@llnl.gov>
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
2023-06-19 20:18:26 -04:00
Victor A. P. Magri
a39cecc555
Fix compilation error (#929)
This PR fixes a compilation error that arises in PETSc when hypre is used
2023-06-17 22:21:37 -04:00
Victor A. P. Magri
18b98805ba
Extend ILU support to AMD GPUs (#877)
This PR adds HIP support to hypre_ILU (setup and solve phases):

-   Algorithm type 0 (BJ-ILU0)
-   Algorithm type 10 (GMRES-ILU0)
-   Iterative triangular solves for backward and forward substitutions.

---------

Co-authored-by: Paul Mullowney <Paul.Mullowney@nrel.gov>
2023-06-15 20:10:52 -04:00
Rui Peng Li
72f5f3e136
Cuda versions (#879)
This PR adds support and regression tests for all the versions from CUDA 9.0 to 12.0.
2023-06-15 06:26:12 -07:00
Rui Peng Li
7d1d9ca95c
ame/ams to use Jacobi on GPUs (#924)
This PR updates the ams driver to use Jacobi smoothers on GPUs.
2023-06-14 13:25:59 -07:00
Victor A. P. Magri
f02bc17bbd
Fix device build (#925)
This PR removes a call to hypre_error_w_msg inside two GPU lambdas and fixes the device build.
2023-06-14 11:07:13 -04:00
Rob Falgout
f478498295
New error handling feature to print messages to memory (#920)
This allows users to direct hypre's error messages to a memory buffer instead of stderr.  With this, there are now three basic ways to use hypre when configured --with-print-errors:
- Default (mode 0): Errors are printed immediately to stderr (there is no processor information available in this print).
- Store errors in memory (mode 1) and call PrintErrorMessages to print them.
- Store errors in memory (mode 1) and call GetErrorMessages to manage the error messages however you like.
2023-06-13 20:17:25 -07:00
Rob Falgout
f3e8fb852f
Fix warning messages about set-but-not-used variables (#923)
Fixed warning messages about set-but-not-used variables and ran astyle
2023-06-13 13:20:56 -07:00
Wayne Mitchell
2794aa3b28
SYCL MGR, AMS, AIR, etc. (#904)
This PR enables more functionality with sycl:
MGR
AMS/ADS/AME
AIR restriction
2023-06-12 14:03:52 -07:00
Victor A. P. Magri
48d13c6e28
Add MAGMA support (#868)
* Add MAGMA support to autotools build
* Add MAGMA interface files
* Call MAGMA init/finalize interfaces
* Add MAGMA support to CMake build
2023-06-11 23:17:22 -04:00
Victor A. P. Magri
80bf97e8a2
Check whether CF_marker exists before using it (#918)
This PR implements a check on whether CF_marker exists before using it.
2023-06-09 11:37:09 -04:00
Victor A. P. Magri
f45de31a3d
Fix exact block inversion with HIP in MGR
Fix cublasHandle -> vendorSolverHandle
2023-06-05 18:04:27 -04:00
Victor A. P. Magri
f7850206cd
Extend exact block inversion to HIP via batched solvers (#913)
This PR adds HIP support to exact block inversion in MGR via rocSOLVER's batched routines.
2023-06-05 14:04:44 -04:00
Victor A. P. Magri
bd1073ad70
MGR non-UVM device support (#906)
Allow MGR to work without UVM in device runs
2023-06-02 17:40:18 -04:00
Wayne Mitchell
7ff7f2f60d
oneDPL fixes and Sunspot regressions (#905)
Fixes needed due to recent changes with oneDPL.
Move regression testing of sycl build to sunspot.
2023-05-30 10:23:01 -07:00
Victor A. P. Magri
37bd6071fc
Fix SetInitialized/Finalized position (#912)
This PR fixes the positions of the hypre_SetInitialized and hypre_SetFinalized calls
2023-05-26 17:20:37 -04:00
Victor A. P. Magri
2b2e9d2eee
Update comment about HYPRE_BoomerAMGSetGridRelaxPoints (#908)
The function HYPRE_BoomerAMGSetGridRelaxPoints is particularly useful for AIR. Thus, it should not be phased out.
2023-05-19 14:53:03 -04:00
Rui Peng Li
ec86992c4b
Cuda12 (#871)
This PR adds the support for CUDA 12.
2023-05-17 20:01:41 -07:00
Victor A. P. Magri
8b39b73a52
Fixes for Rocm 5.4.3 (#902)
* Use unroll_factor=8 for rocm-5.4.3
* Add SortCSRRocsparse back
* Fix Wunused-variable warnings
* Set _hypre_memory_tracker to NULL after destroy
* Update tioga results after changing default rocm version to 5.2.0
2023-05-11 09:05:26 -04:00
Victor A. P. Magri
412a6b1a48
Update sanity checks (#903)
This fixes issue #883
2023-05-10 18:45:16 -04:00
Victor A. P. Magri
6ac5d7d0c8
Remove deprecated warning from Init (#899)
When using HYPRE_Init, the compiler no longer gives a deprecated function warning message.
2023-05-08 10:25:07 -04:00
Victor A. P. Magri
fbfc271cfa
Remove deprecated warning from Init (#899)
When using HYPRE_Init, the compiler no longer gives a deprecated function warning message.
2023-05-08 10:24:32 -04:00
Victor A. P. Magri
991f2e15eb
Fix memory leak on BoomerAMG complex smoothers (#890)
The memory leak was happening when:
    A complex smoother for BoomerAMG was selected.
    The AMG hierarchy consisted of one level.
    The BoomerAMG preconditioner was destroyed and recomputed again.
2023-05-04 10:59:02 -04:00
Victor A. P. Magri
dc487086b4
Add HYPRE_Initialized and HYPRE_Finalized (#889)
* Add hypre_State type to track initialization state of hypre
* Add HYPRE_Initialized to determine whether hypre has been initialized
* Add HYPRE_Finalized to determine whether hypre has been finalized
* Add private implementations for hypre_initialized/finalized
* Add HYPRE_Initialize
* Update Fortran interface for HYPRE_Initialize
* Use HYPRE_Initialize in test drivers and examples
* Clean-up mentions of HYPRE_Init
* Add HYPRE_DEPRECATED macro to autotools and CMake builds
* Add regression test for library initialization/finalization
2023-05-04 10:42:40 -04:00
Victor A. P. Magri
cfb3ae4e32
Update HYPRE_WARP_FULL_MASK for HIP builds (#895)
* Update HYPRE_WARP_FULL_MASK to 64-bit length for HIP
* Add hypre_mask type depending on the GPU architecture
* Change unsigned -> hypre_uint. Move a few hypre_int to hypre_uint
2023-05-03 06:44:45 -04:00
adam-sim-dev
e351324df8
Fix the comments (#892)
This PR fixes comments in testij.c
2023-05-02 08:37:43 -07:00
Victor A. P. Magri
82b40f72f4
Fix device OpenMP build (#894)
* Remove SyncCompute call to fix compilation with device omp
* Fix hypre_SeqVectorAxpyzDevice implementation for device omp
* Add warning for function not implemented for device omp
2023-05-02 11:21:51 -04:00
Wayne Mitchell
ba1f15b082
HYPRE_USING_GPU and HYPRE_USING_DEVICE_OPENMP (#742)
Do not enable HYPRE_USING_GPU when using the device openmp backend.
This allows cuda/hip/sycl implementation throughout the code to be grouped
under the HYPRE_USING_GPU macro instead of always combining the cuda/
hip/sycl macros. In addition some other extraneous macro guards are removed.
2023-04-29 16:04:56 -07:00
Victor A. P. Magri
b08a962924
Fix comparisons between HYPRE_Real and HYPRE_Complex (#880)
This fixes the machine-tux regression failures from 04/12/23
2023-04-12 14:04:18 -04:00
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