Skip to content

FiDiBench is a simple finite difference code that can be used to benchmark performance on HPC systems

License

Notifications You must be signed in to change notification settings

pletzer/fidibench

Repository files navigation

FiDiBench

FiDiBench is a finite difference suite of codes that can be used to benchmark hardware performance on HPC and other systems. The code examples are small enough to be well understood, typically averaging a few hundred lines of code, but also relevant to scientific computing, which often involves nearest neighbour communication.

FiDiBench can also be used to compare the execution speed obtained by implementing a given algorithm in different languages (eg C++ vs Python vs Julia).

Test status

Example 1: comparing C++ compilers (upwind 512 cells, 10 time steps). Note the effect vectorization when applying -O3 with the GNU compiler. alt tag

Example 2: comparing of C++ vs Fortran (upwind 512 cells/10 time steps) alt tag

Example 3: comparing offloading the upwind advection of a bubble onto a GPU (NVIDIA P100 and A100) using OpenACC against running on a single CPU alt tag

Requirements

  • CMake 3.1 or later
  • Message Passing Interface, MPI (optional)
  • OpenMP (optional)
  • C/C++ compiler supporting the C++11 standard (optional)
  • Python 2.7 with numpy (optional)
  • Julia 0.45 or later (optional)

Build instructions

cd fidibench
mkdir build
cd build
cmake ..
make
ctest

Running tests

ctest

Some tests will not run if there are missing components, eg Julia scripts will not run if julia is not installed on your platform.

About

FiDiBench is a simple finite difference code that can be used to benchmark performance on HPC systems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published