c ++ PPL并行工作-归约类“可组合”中的函数max()

Posted

技术标签:

【中文标题】c ++ PPL并行工作-归约类“可组合”中的函数max()【英文标题】:c++ PPL parallel work - function max() in reduction class 'combinable' 【发布时间】:2012-04-28 15:40:19 【问题描述】:

我正在使用并行模式库。类combinable 在openMP 中起到归约子句的作用,可以合并并行计算的结果。

.combine(max()) 是否存在(顺便说一句,您能否指向一些允许使用 combine 操作的 ref,没有找到)?

感谢和问候。

【问题讨论】:

【参考方案1】:

是的,您可以将std::max 传递给combineable::combine,在将模板函数作为谓词传递时必须考虑的一件事是您必须显式命名类型:

combineable<T> max;

// .. do processing

max.combine(std::max<T>);

您可以找到有关 combine(以及所有其他 PPL 内容)here 的所有官方 MSDN 文档。

【讨论】:

但是,我不明白为什么这里的语法是 max.combine(std::max&lt;T&gt;);(它正在编译),而不是 max.combine(std::max&lt;T&gt;());,而在文档中加号的语法是 .combine(plus&lt;double&gt;())(它正在编译)? @dlib std::max&lt;T&gt; 是一个函数谓词,因此您只需命名函数,不需要大括号。 std::plus&lt;double&gt; 是一个重载了operator() 的类,当你说std::plus&lt;double&gt;() 时,你正在做的是创建一个该类型的临时类,其operator() 被combine 使用。

以上是关于c ++ PPL并行工作-归约类“可组合”中的函数max()的主要内容,如果未能解决你的问题,请参考以下文章

Delphi XE10 RTL - PPL - TTask

恕我直言你可能真的不会java第10篇-集合元素归约

Hadoop整理三(Hadoop分布式计算框架MapReduce)

c++ 内存分配向量的指针

微软C++并行库 pplx 的基本用法

微软C++并行库 pplx 的基本用法