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.
This PR adds "runtime switch" feature to the solvers in hypre.
Co-authored-by: Victor A. P. Magri <paludettomag1@llnl.gov>
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
This PR includes optimizations for hypre's SpGEMM and ParSpGEMM kernels
Co-authored-by: Wayne Mitchell <mitchell82@llnl.gov>
Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
Co-authored-by: Sarah Osborn <30503782+osborn9@users.noreply.github.com>
Enable GPU setup for MGR solver.
* Added device specific functionality for interpolation
* Made device and host calls to interpolation consistent
* Edited IJ driver to use GPU capable options for MGR
* Updated saved files for new GPU options
* Updated CMakeLists to support new MGR capabilities
Co-authored-by: Ruipeng Li <li50@llnl.gov>
Co-authored-by: Daniel Osei-Kuffuor <oseikuffuor1@llnl.gov>
The 'test/Makefile' had the '..' directory in the include path, which caused the 'HYPRE_config.h' file to be included from two different places (in '..' and in 'install'). In the spack autotest, this caused a conflict.
* Check that 'git describe' works in autoconf build
* Updated versioncheck tests to work when 'git describe' fails
* Updated CMake build to work when 'git describe' fails
* Update autotest filters to ignore error messages from 'git describe'
This PR has a number of bug fixes and user requests in the process of integrating GPU-hypre with PETSc.
Co-authored-by: Ruipeng Li <coe0141@redwood.cm.cluster>
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.
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>
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 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>
- New interface for setting C-F splitting for
matrices with block structure, i.e., the same variables
are ordered contiguously (s_1,s_2,...,s_n,p_1,p_2,...,p_n,...)
- Allow different methods for F-relaxation at different levels.
- Added a test file for MGR to test flow matrices coming from
geocentric.
This has not been tested with nvcc. Also, some of the routines in gpukernels.cu
are needed in utilities, so maybe this file needs to be split or relocated to
utilities. The utilities files should not include from other directories in
hypre and relative includes (i.e., '../directory') are to be avoided.
The nvcc changes will need to change again once the other GPU work is merged.
The new 'Makefile.nvcc' and 'Makefile.empty' were used for portability, since
'if/else' is not standard in make. The only other time we have excluded files
from being compiled in hypre, we excluded entire directories, but the mechanism
was similar. This may need to be tweaked a bit.
The _hypre_utilities.h file is now generated with the 'headers' script and
should not be modified directly.