HPX 是否提供具有粒度控制的基于任务的并行化迭代函数?
Does HPX provide a task-based parallelized iteration function with grain size control?
HPX是否提供基于任务的叉接并行性之上构建的任何类型的并行化迭代函数,该函数还允许您控制所使用的粒度? 类似于TBB的parallel_for或Cilk的cilk_for。
确实如此。我们对标准化委员会正在考虑的内容进行了一些扩展。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)
(等。
相关文章:
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 如何使用 OpenMP 并行化最近邻搜索
- Malloc 在使用线程并行化 SSH 调用时存在问题
- 如何使用 OpenMP 正确并行化 for 循环?
- 如何将矩阵的行随机复制到内存中的另一个矩阵的过程并行化?
- 如何使用 Pthreads 并行化图像翻转?
- MPI:反复并行化缓冲区
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 如何在Visual Studio中并行化armadillo
- 嵌套循环 OpenMP 并行化、私有索引还是公共索引?
- 如何并行化增加循环的大小
- 在 C++ 中使用 OpenMP 并行化两个 for 循环不会提供更好的性能
- OpenMP C++:并行化 for 循环的负载不平衡
- OpenMP 条件并行化 - 并行部分中 if 子句的语法
- C++ 犰狳和OpenMp:外积求和的并行化 - 定义犰狳矩阵的约简
- HPX 是否提供具有粒度控制的基于任务的并行化迭代函数?
- 管道中的任务并行化和数据同步
- 如何在PPL中并行化任务数量可变的任务