Implementations of Green's functions for the enhanced Greens Functions Reaction Dynamics (eGFRD) in C++11.
- 2DAbsSym
- 2DAbsSym
- 2DRefWedgeAbs
- 3DAbsSym
- 3DRadInf
- 3DRadAbs
- C++11 compliant compiler
- GSL
- Boost
Define GF11_HEADER_ONLY
. Then include it.
Compile the library via CMake giving -DGF11_BUILD_LIBRARY=ON
.
In tests/
, there is a code to check the relative and absolute difference between
greens_functions
and greens_functions11
. The results are put on stdout
.
It also compares the time took. The results are put on stderr
.
To check correctly, it is recommended to turn -O3 -march=native -mtune=native
in greens_functions
.
The following micro benchmarks does benchmark and also error checking. So the durations include the time took to store the data into vector and the real efficiency might differ.
function | gf98 | gf11 |
---|---|---|
2DAbsSym.drawTime() x100'000 | 1.54186 [sec] | 0.367498 [sec]: ~4.2x faster |
2DAbsSym.drawR() x100'000 | 1.56546 [sec] | 0.37903 [sec]: ~4.1x faster |
3DAbsSym.drawTime() x100'000 | 0.325472 [sec] | 0.118635 [sec]: ~2.7x faster |
3DAbsSym.drawR() x100'000 | 0.667269 [sec] | 0.393544 [sec]: ~1.7x faster |