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).
Example 1: comparing C++ compilers (upwind 512 cells, 10 time steps). Note the effect vectorization
when applying -O3 with the GNU compiler.
Example 2: comparing of C++ vs Fortran (upwind 512 cells/10 time steps)
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
- 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)
cd fidibench
mkdir build
cd build
cmake ..
make
ctest
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.