This commit introduces three new variables to the 'HYPRE_config' file through both the autoconf and CMake builds. They are defined only when there is a '.git' directory present, and are otherwise left undefined. These new variables may help users who work directly with the development branch of hypre to keep their code current and backward compatible with previous releases and also individual commits between those releases. The new variables are:
HYPRE_DEVELOP_STRING - a string created from the 'git describe' command that indicates the last release tag, the number of commits beyond that last release, and the corresponding commit hash.
HYPRE_DEVELOP_NUMBER - the number of commits since the last release.
HYPRE_DEVELOP_BRANCH - defined only if the main development branch is being used, and is set to the name of that branch (currently master).
The commit also adds runtime regression tests for the variables in the 'src/test' directory.
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>
- Added a HYPRE_RELEASE_NUMBER macro, which is an integer representation of the release that can be compared numerically against other releases in user build systems
- Added a 'config/version.sh' that should be modified to create new releases
- Changed the 'config/bootstrap' script to 'config/update.sh' and added a version number check
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>
autoheader sorts all the flags so it makes the diff hard to read.
We can see the difference more easily as follows.
Grep the old version (before this commit):
grep undef HYPRE_config.h.in | sort > old_config.txt
Grep the new version (after this commit):
grep undef HYPRE_config.h.in | sort > new_config.txt
Now diff:
diff old_config.txt new_config.txt
0a1,2
> #undef FC_DUMMY_MAIN
> #undef FC_DUMMY_MAIN_EQ_F77
2a5,6
> #undef HAVE_INTTYPES_H
> #undef HAVE_MEMORY_H
3a8,12
> #undef HAVE_MPI_COMM_F2C
> #undef HAVE_STDINT_H
> #undef HAVE_STDLIB_H
> #undef HAVE_STRING_H
> #undef HAVE_STRINGS_H
4a14,16
> #undef HAVE_SYS_STAT_H
> #undef HAVE_SYS_TYPES_H
> #undef HAVE_UNISTD_H
11d22
< #undef HYPRE_DEVICE_OPENMP_MAPPED
17a29
> #undef HYPRE_HPPA
58a71,77
> #undef PACKAGE_BUGREPORT
> #undef PACKAGE_NAME
> #undef PACKAGE_STRING
> #undef PACKAGE_TARNAME
> #undef PACKAGE_URL
> #undef PACKAGE_VERSION
> #undef STDC_HEADERS
So we pick up some stuff from autoconf and a few a missing
AC_DEFINES that weren't manually added before.
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.