【发布时间】:2017-07-20 15:10:08
【问题描述】:
我正在试验来自 TBB 的 Intel Graph Flow。我对结果非常满意,我发现产品很棒,有无限的可能性。然而,我遇到了一个我修复的 pb,但我并不满意。 pb如下。
message
A ----------\ tuple<message,message> WHATEVER
message join ------------------------- C------------------------
B ----------/
当我们想要同步并避免传播 n 次消息(及其值)时,应用此模式。英特尔提供了一个很好地解释了 pb 的示例(以及解决方案 - Intel example)。我的 pb 是使用静态方法构造的元组和图的构造。它是完全静态的,特别是如果连接节点的输入边数(英特尔示例中为 input_port<i>)是变量。
TBB-graph flow 的专家知道这个 pb 的“动态方法”吗?
最好的,
蒂姆 [编辑我的代码真实 pb]
我能做到:
std::vector<tbb::flow::function_node<std::size_t, message>> vec_node;
for (int i(0) ; i < 3 ;++i)
nodes_cont_.emplace_back(my_amazing_function_to_create_node(g_));
tbb::flow::make_edge(vec_node[0], tbb::flow::input_port<0>
tbb::flow::make_edge(vec_node[1], tbb::flow::input_port<1>(node_join_));
tbb::flow::make_edge(vec_node[2], tbb::flow::input_port<2>(node_join_));
我做不到:
for(int i(0); i < vec_node.size(); ++i)
tbb::flow::make_edge(vec_node[i], tbb::flow::input_port<i>(node_join_));
由于“元组”和“tbb::flow::input_port”函数。
【问题讨论】:
-
嗨蒂姆,我是否理解正确,您想在运行时动态地将边添加到 join_node 并可能改变必须加入的消息数量?另外,键匹配 join_node 如何帮助您解决问题?它旨在组合精确的关键消息,但输入端口的元组仍然是静态的。
-
能否请您提供使用 join_node 的 FG 使用的真实示例?
-
我用真实的pb更新了这个问题,希望它会有所帮助。感谢您的关注
标签: tbb tbb-flow-graph