63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
|
#include <celero/Celero.h>
|
||
|
|
||
|
#include "common.h"
|
||
|
|
||
|
constexpr unsigned samples = 12, iterations = 10, cores = 4;
|
||
|
constexpr std::size_t vecSize = 100'000;
|
||
|
constexpr int minValue = -250, maxValue = +250;
|
||
|
|
||
|
BASELINE(ExecFarmSel, Sequential, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::Sequential>(bench::exprFarmSel);
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, FirstLevelEqui, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::FirstLevelEqui>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, FirstLevelGreedy, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::FirstLevelGreedy>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, FirstLevelNoOpti, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::FirstLevelNoOpti>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, DynamicPool, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::DynamicPool>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, StaticPool, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::StaticPool>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, StaticPoolId, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::StaticPoolId>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
BENCHMARK(ExecFarmSel, StaticThread, samples, iterations) {
|
||
|
auto f = alsk::edsl::implement<alsk::exec::StaticThread>(bench::exprFarmSel);
|
||
|
f.executor.cores = cores;
|
||
|
f.skeleton.task<0>().size = vecSize;
|
||
|
f(minValue, maxValue);
|
||
|
}
|