UME is a collection of data structures and algorithms for parallel unstructured meshes. It is intended to be used to explore the co-design space of hardware and software to support computational fluid dynamics simulation packages.
UME is a CMake-based package written in C++20. The basic steps for building UME are:
- Install external packages;
- Do a cmake configuration step;
- Build the libraries and executables.
The primary product of UME is a library and header files, as well as some example driver executables.
UME relies on several external packages. These can be installed easily using the spack package manager. The spack specs for all packages are:
spack:
specs:
- catch2
- cmake
- doxygen
- git
- graphviz
- kokkos+openmp std=20
- openmpi
packages:
catch2:
require: '@3:'
CMake options can be specified either with the interactive ccmake
tool, or on the command line of cmake
, preceded by the -D
flag. Package-specific CMake options for UME include:
USE_CATCH2=NO
will disable Ctest testing that relies on version 3 of the Catch2 testing framework.USE_KOKKOS=YES
will enable Kokkos support, and requires Kokkos to be found in the environment (UME does not currently use Kokkos).USE_MPI=YES
will enable MPI support, and requires MPI compilers to be available on the search path.USE_OPENACC=YES
will enable OpenACC support, and requires the C++ compiler to support it (UME does not currently use OpenACC).
After a successful build, two example driver executables will be
generated that are of interest to the general community: ume_serial
and ume_mpi
. Each exercises the gradient operators found in the
Ume/gradient.hh
headers. The MPI version ume_mpi
is the most
realistic. The usage is:
% ume_serial <filename>
Where <filename>
is the complete file name for an UME binary input
file (distributed separately). Or
% mpirun -np <n> ume_mpi <prefix>
Where there is expected to be a set of files named as if generated
with sprintf(filename, '%s.%05d.ume', prefix, rank)
for 0 <= rank <
n.
"Ume" is also the romanization of the Japanese word for "plum" (梅, or うめ). Sort of pronounced in English as if you were asking the question "oo-meh?"
UME was created by Paul Henning (phenning@lanl.gov).
UME is released as open source under a BSD-3 License. For more details, please see the LICENSE.md and NOTICE.md files.
LANL C23016
© 2023. Triad National Security, LLC. All rights reserved.