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 是不是提供具有粒度控制的基于任务的并行化迭代功能?的主要内容,如果未能解决你的问题,请参考以下文章

通过浪潮AIStation实现细粒度高性能的GPU资源共享

在本书的背景下,所谓的“细粒度并行”究竟意味着什么?

Q HPX 与“apache 云计算”(例如 vs spark)如何公平?

Java 多线程进阶-并发编程 线程组ThreadGroup

8天玩转并行开发——第二天 Task的使用

执行具有高分支分歧的任务的最佳策略[关闭]