35 lines
825 B
C++
35 lines
825 B
C++
|
#include <celero/Celero.h>
|
||
|
#include <alsk/alsk.h>
|
||
|
|
||
|
#include "common.h"
|
||
|
|
||
|
using namespace bench;
|
||
|
|
||
|
constexpr unsigned samples = 30, iterations = 10, cores = 4;
|
||
|
|
||
|
constexpr unsigned n = 64;
|
||
|
constexpr std::size_t vecSize = 1'000;
|
||
|
|
||
|
constexpr auto eFarm = n*eTaskV<vecSize>;
|
||
|
|
||
|
BASELINE(Farm, Handwritten, samples, iterations) {
|
||
|
for(unsigned i = 0; i < n; ++i) taskV<vecSize>();
|
||
|
}
|
||
|
|
||
|
BENCHMARK(Farm, Skeleton, samples, iterations) {
|
||
|
auto farm = alsk::edsl::implement<alsk::exec::Sequential>(eFarm);
|
||
|
farm();
|
||
|
}
|
||
|
|
||
|
BASELINE(FarmPar, Handwritter, samples, iterations) {
|
||
|
#pragma omp parallel for num_threads(cores)
|
||
|
for(unsigned i = 0; i < n; ++i) taskV<vecSize>();
|
||
|
}
|
||
|
|
||
|
BENCHMARK(FarmPar, Parallel, samples, iterations) {
|
||
|
auto farm = alsk::edsl::implement<alsk::exec::StaticThread>(eFarm);
|
||
|
farm.executor.cores = cores;
|
||
|
|
||
|
farm();
|
||
|
}
|