Предоставляет ли HPX функцию параллельной итерации на основе задач с контролем размера зерна?

Предоставляет ли HPX какую-либо параллельную итерационную функцию, построенную поверх основанный на задачах параллелизм форк-соединения что также позволяет контролировать размер используемого зерна? похож на TBB parallel_for или Cilk’s cilk_for.

0

Решение

Оно делает. Мы реализовали некоторые дополнения к тому, о чем думает комитет по стандартизации. HPX представила концепцию ExecutorParameters которые, помимо прочего, позволяют контролировать размер зерна распараллеливания итераций. Например:

std::vector<int> v = { ... };
hpx::parallel::static_chunk_size scs;
hpx::parallel::for_each(
hpx::parallel::execution::par.with(scs),
v.begin(), v.end(),
[](int val) { ... }
);

Это разделит итерации на задачи (num_iterations / 4 * cores) итерации цикла. Вы также можете указать размер задач:

hpx::parallel::static_chunk_size scs(100);

который будет объединять 100 итераций в каждой задаче.

Другие существующие параметры исполнителя, например dynamic_chunk_size (похоже на openmp’s schedule(dynamic)), а также guided_chunk_size (похоже на openmp’s schedule(guided)), так далее.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]