gpt4 book ai didi

c++ - 手动管理和更新英特尔 TBB 流程图?

转载 作者:行者123 更新时间:2023-11-28 05:03:23 32 4
gpt4 key购买 nike

我已经使用英特尔出色的 TBB 流程图库成功制作了一个应用程序原型(prototype)。它似乎工作得很好,但现在我需要将代码重构为生产就绪版本。

以前,我曾为这个特定领域使用过一些更大、更“过度开发”的框架(工作是图像处理,以前的应用程序使用过 ITK/VTK)。然而,对于这个应用程序,我试图采用一种较低级别和更集中的方法。

目前,我只是在 main() 中组装我的整个图,这显然是不可持续的。我想让管道迭代运行,以便我可以从每个阶段获取输出数据并显示它以用于调试/分析目的。

到目前为止,我的想法是将应用程序的每个逻辑“阶段”抽象为一个类,该类接受 &tbb::flow::graph 作为构造函数参数,并在内部存储对该图的引用它控制的节点。我可以让包装器类在输出端分配一个额外的 tbb::flow::broadcast_node 并在其后分配一个异步节点来触发事件。

这是一个合理的设计理念吗?一般而言,其他人如何将 TBB 流程图概念集成到他们的应用程序结构中? TBB 库的这个特定部分的示例和文档非常少。

最佳答案

与任何设计一样,我认为没有明显正确或错误的方法。我不太了解您的代码,但按逻辑阶段分解代码可能是个好主意。

当谈到像 TBB 这样的框架时,您必须做出的设计决定是您是否应该将所有框架方面都隐藏在一个接口(interface)后面。优点是您以后可以用另一个实现替换该实现(例如,用 OpenMP 替换 TBB)。另一方面,并​​非在所有情况下都需要引入附加层。特别是,如果您不太可能更换 TBB。

您在问题中描述的设计设计是如何构建框架相关部分。这在很大程度上取决于您正在实现的具体算法。例如,如果它包括对一张图像应用单独的转换,则为每个转换步骤创建一个类可能是一种很好的方法。

此外,将所有内容包装在一个函数或类中可能是有意义的。如果您正在实现的操作将一张图像作为输入并生成一张图像作为输出,则这可以隐藏在隐藏实现细节的接口(interface)后面(在本例中为 TBB)。

关于c++ - 手动管理和更新英特尔 TBB 流程图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45393984/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com