首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HPX是否提供了一个基于任务的并行化迭代函数以及粒度控制?

HPX是否提供了一个基于任务的并行化迭代函数以及粒度控制?
EN

Stack Overflow用户
提问于 2017-05-16 04:32:47
回答 1查看 261关注 0票数 0

HPX是否提供了任何建立在基于任务的分叉连接并行之上的并行迭代函数,它也允许您控制所使用的粒度大小?类似于TBB的或Cilk的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-16 12:22:05

确实如此。我们对标准化委员会正在考虑的内容进行了一些扩展。HPX引入了ExecutorParameters的概念,它允许控制迭代并行化的粒度。例如:

代码语言:javascript
复制
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)循环迭代的任务。还可以指定任务的大小:

代码语言:javascript
复制
hpx::parallel::static_chunk_size scs(100);

它将在每个任务中合并100个迭代。

其他现有的执行器参数有dynamic_chunk_size (类似于openmp的schedule(dynamic))和guided_chunk_size (类似于openmp的schedule(guided))等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43992551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档