p-otto / glkernel

C++ library for pre-computing noise, and random sample-kernels.
MIT License
0 stars 0 forks source link

Build Benchmarks for glkernel #8

Closed Beta-Alf closed 6 years ago

Beta-Alf commented 6 years ago

A Benchmark is required to measure improvements achieved through parallelization. This should be achieved through a library and executable in an automated manner without and with optimizations (as they become available).

Beta-Alf commented 6 years ago

The goal here is not to find hotspots in the code, we already know what we want to optimize. Instead we need microbenchmarks to evaluate speedups in the specific regions where optimizations will be applied.

Beta-Alf commented 6 years ago

I will be using googles microbenchmark library for it and will integrate by directly integrating their code into a subfolder, as done with the gtest framework. I will be using the version 1.3.0 as per git tag. This will happen on a new branch. The Library is licensed under apache which is compatible with MIT. Since we do not plan on modifying the library we should have no additional maintenance overhead from this license.

Beta-Alf commented 6 years ago

The library is now integrated and a basic benchmark for the gradient noise function is was built (see 2c6138d82f26fc41a223c999a833355b45f60f89). The next step is covering all use cases with benchmarks. Thankfully the library provides a comparison tool so regressions and differences can be easily spotted.

Beta-Alf commented 6 years ago

There are many dimensions along which benchmarks can occur, most of them are probably irrelevant to parallelization but they should all be at least looked at: