HPX 是不是提供具有粒度控制的基于任务的并行化迭代功能?
Posted
技术标签:
【中文标题】HPX 是不是提供具有粒度控制的基于任务的并行化迭代功能?【英文标题】:Does HPX provide a task-based parallelized iteration function with grain size control?HPX 是否提供具有粒度控制的基于任务的并行化迭代功能? 【发布时间】:2017-05-16 04:32:47 【问题描述】:HPX 是否提供任何类型的基于task-based fork-join parallelism 的并行迭代函数,也可以让您控制所使用的粒度?类似于 TBB 的 parallel_for 或 Cilk 的 cilk_for。
【问题讨论】:
【参考方案1】:确实如此。我们对标准化委员会正在考虑的内容进行了一些扩展。 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的schedule(dynamic)
)和guided_chunk_size
(类似于openmp的schedule(guided)
)等
【讨论】:
以上是关于HPX 是不是提供具有粒度控制的基于任务的并行化迭代功能?的主要内容,如果未能解决你的问题,请参考以下文章
Q HPX 与“apache 云计算”(例如 vs spark)如何公平?