FUnTiDES is a collection of simplified codes that represent real scientific applications. It serves as a standard tool for evaluating and comparing the performance of various high-performance computing (HPC) systems, particularly those used for scientific simulations.
The current implementation includes two proxy applications for solving the 2nd-order acoustic wave equation in 2D and 3D:
-
SEM (Spectral Element Method) A benchmark designed to simulate wave propagation using SEM, a Galerkin-based finite element method for solving partial differential equations (PDEs).
-
FD (Finite Difference Method) A benchmark that uses finite-difference stencil operators to simulate wave propagation and solve PDEs.
A key feature of these proxy applications is their adaptability to different programming models and HPC architectures. They are also easy to build and run, making them accessible to both researchers and developers.
The SEM proxy currently supports:
- Kokkos — for performance portability
Note: Kokkos is included as a Git submodule and will be compiled automatically when enabled.
The current SEM proxy supports the following data container:
std::vector(default for serial )
mkdir build
cd build
cmake ..
make install
By default, this builds the applications in sequential mode using std::vector.
Both SEM and FD applications are compiled.
# Run SEM simulation with 100 x 100 x 100 elements
./src/main/semproxy -ex 100
# Run FD simulation
./src/main/fdproxy
The following options can be used to configure your build:
| Option | Description |
|---|---|
COMPILE_FD |
Enable compilation of the FD proxy (default: ON) |
COMPILE_SEM |
Enable compilation of the SEM proxy (default: ON) |
ENABLE_CUDA |
Enable CUDA backend (used by Kokkos) |
ENABLE_PYWRAP |
Enable Python bindings via pybind11 (experimental) |
USE_KOKKOS |
Enable Kokkos support (serial by default, CUDA/OpenMP with flags) |
USE_VECTOR |
Use std::vector for data arrays (enabled by default unless Kokkos is used) |