alsk/celero/executor/twolevels.cpp

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 = 1000;
constexpr int minValue = -250, maxValue = +250;
BASELINE(ExecTwoLevels, Sequential, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::Sequential>(bench::exprTwo);
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, FirstLevelEqui, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::FirstLevelEqui>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, FirstLevelGreedy, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::FirstLevelGreedy>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, FirstLevelNoOpti, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::FirstLevelNoOpti>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, DynamicPool, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::DynamicPool>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, StaticPool, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::StaticPool>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, StaticPoolId, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::StaticPoolId>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}
BENCHMARK(ExecTwoLevels, StaticThread, samples, iterations) {
auto f = alsk::edsl::implement<alsk::exec::StaticThread>(bench::exprTwo);
f.executor.cores = cores;
f.skeleton.task.task<0>().size = vecSize;
f(minValue, maxValue);
}