问题标签 [tbb-flow-graph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
438 浏览

c++ - 英特尔线程构建块,std::shared_ptr 类型的 source_node

简而言之,我有一个提供 shared_ptr 类型的数据源。这个指针似乎直接超出了 source_node 的运算符重载的范围。我添加了一个完全简化的示例来演示该问题。

我的问题:什么是优雅的为什么要克服这个问题?

如果需要提供更多详细信息,请告诉我。

亲切的问候 Auke-Dirk

在此处输入图像描述

0 投票
1 回答
376 浏览

c++ - 如何使用阻塞输入源构建流程图

当提供输入图像的源过滤器阻塞等待另一个图像时,修改 Michael Voss 的特征检测流程图示例的好方法是什么?如果想要为像摄像机这样的连续实时输入源实现此图,则需要进行修改。我知道如果源过滤器函数体阻塞等待从输入设备中提取图像,那么其中一个 tbb 线程将被浪费,因为它是空闲的。

我很感激任何指导。

0 投票
1 回答
812 浏览

c++ - 如何制作具有动态端口数的英特尔 TBB 多功能节点?

我是Intel TBB library的新手。如您所见,我的问题与 tbb::flow::graph 有关。我需要实现如下逻辑:

用户用一些逻辑块绘制图形。每个块(节点)都可以有无限的连接(边),因此每个块(节点)都可以选择接下来将数据放在哪里。然后我的程序将在 TBB 库的帮助下构建这样的图表并执行计算。

所以我不知道是否可以构建具有动态输出端口数的节点(我猜它必须是多功能节点)。你能告诉我怎么做吗?

0 投票
1 回答
275 浏览

c++ - 带有成员函数的 TBB function_node

想象一下,我有一个 MyClass 类,想用 Intel TBB 实现多线程:

_fnode是否可以使用类成员函数进行初始化?简单的方法不起作用:

0 投票
1 回答
481 浏览

c++ - 是否有任何方法可以在 tbb::flow::graph 中的节点之间发送“重”类型?

我需要在 tbb::flow::graph (英特尔 TBB 库)中的节点之间发送一些“重”类型,即其中包含动态数组的结构。如果我尝试在一个节点中创建此类结构的实例并将其上的指针发送到另一个节点,则会出现访问冲突(这是预期的,因为我尝试使用来自另一个线程的数据)。

因此,传递此类参数的唯一方法是使用适当的复制构造函数按值传递它们,不是吗?但是那样我们会浪费很多时间来复制......

更新: πάντα ῥεῖ 建议使用 std::unique_ptr 通过节点传递此类类型。但恐怕我不明白如何实现它。例如,如何将 std::unique_ptr 与 source_node 一起使用?

更新 2:使用 std::unique_ptr<> 使 C2280 在 flow_graph.h 第 287 行中“尝试引用已删除的函数”。

所以问题仍然存在。

0 投票
1 回答
88 浏览

c++ - tbb::flow::graph 的功能对象中嵌套对象的问题

我有一个功能对象,用作 multifunction_node 的主体:

'dllObject' 是在对象'module' 的构造时创建的:

这是'dllObject'被破坏的时候:

我已经建立了一个小图表:

所以我有两个问题:1)为什么要执行 ~module() 以及如何防止这种情况发生?2) 如何正确保存嵌套对象的指针?

更新添加了一些虚拟代码以防止第一次破坏 dllObject,例如:

现在它按预期工作,但看起来很丑:/

0 投票
1 回答
213 浏览

c++ - TBB 流程图条件执行和多个输入和输出

我已经阅读了TBB 流程图条件执行并且有一个稍微不同的问题。

是否可以创建具有多个输入和多个输出的节点并通过条件变量控制执行?也许没有丑陋的演员表。

我附上了一个简单的例子,我想如何设计图表。使用 TBB 流程图运行它的最佳方法是什么?

  1. start_node发送start_msgsome_node

  2. 如果start_msg为空,则some_node发送 acontinue_msgend_node,否则some_node将 a 发送continue_msg到自身 AND adata_msgend_node

  3. 如果continue_msg由 接收some_node,则检查先前的 start_msg 是否为空,如果是,则 acontinue_msg发送到end_node,否则 adata_msg发送。

    /li>

我正在处理的一个问题:我不能说有多少好的元素在start_msgeven 是已知的大小(假设start_msg持有 a tbb::concurrent_vector<T>。如果some_node找到一个坏元素,它将被忽略some_node并将 a 发送continue_msg给它自己。

0 投票
1 回答
298 浏览

c++ - TBB C++ 多线程错误:没有匹配的调用函数

以下 C++ 代码适用于英特尔 TBB。此代码也是由 Flow Graph 生成的。我有 2 个编译错误:

这是带有定义的代码:

这是创建编译错误的 TBB 调用代码

我很乐意提供所有代码,但 StackOverflow 会阻止太多代码而几乎没有描述。任何人都可以帮助找出这些错误吗?谢谢

0 投票
1 回答
179 浏览

c++ - TBB 是否支持 OpenCV 类型?

我正在使用 OpenCV3 和 TBB 构建图像处理管道。在流程图中传递图像时,它正在被更改。

这是通过逆滤波器时图像的示例结果:

在此处输入图像描述

在此处输入图像描述

我编写了一个单元测试,通过图形传递图像并将输出与原始图像进行比较:

https://gist.github.com/des0ps/74528673d271e3131c2ea2a2adaf5c8c

这个测试有时会通过,有时不会。

这里发生了什么,一般来说,TBB 支持 cv::Mat 吗?

0 投票
2 回答
566 浏览

parallel-processing - 线程构建块和图形处理单元

我们可以在 Nvidia 图形处理单元上执行线程构建块线程吗?我想为我的 tbb 代码设置多个线程,那么相同的最佳数量应该是多少,我可以使用 gpu 线程而不是 cpu 线程吗?