42 lines
837 B
C++
42 lines
837 B
C++
#include <alsk/alsk.h>
|
|
|
|
struct Gen {
|
|
int value;
|
|
int operator()() { return value++; }
|
|
};
|
|
|
|
int transform(int v, std::mt19937& rng) {
|
|
std::uniform_int_distribution<int> d(-3, 3);
|
|
return v + d(rng);
|
|
}
|
|
|
|
/* raw interface */
|
|
using Structure =
|
|
alsk::S<alsk::FarmSel,
|
|
alsk::S<alsk::Serial, Gen, FN(transform)>,
|
|
Fn<int const&(&)(int const&, int const&), std::min<int>>
|
|
>;
|
|
|
|
using Links =
|
|
alsk::L<alsk::FarmSel, int(),
|
|
alsk::L<alsk::Serial, alsk::arg::R<1>(),
|
|
int(),
|
|
int(alsk::arg::R<0>, alsk::arg::RNG)
|
|
>,
|
|
int(int, int)
|
|
>;
|
|
|
|
using Skeleton = alsk::BuildSkeletonT<Structure, Links>;
|
|
|
|
int main() {
|
|
auto algo = alsk::implement<alsk::exec::StaticPool, Skeleton>();
|
|
algo.skeleton.n = 10;
|
|
algo.skeleton.task.task<0>() = Gen{5};
|
|
|
|
algo.executor.repeatability.upTo(8);
|
|
algo.executor.cores = 8;
|
|
|
|
auto r = algo();
|
|
std::printf("%d\n", r);
|
|
}
|