gpt4 book ai didi

c++ - tbb::combinable::local() 太慢

转载 作者:行者123 更新时间:2023-11-28 02:26:40 29 4
gpt4 key购买 nike

我有一个并行执行的辅助函数。这个 worker 函数经常调用 tbb::combineable::local() 并且结果非常慢。我想我需要实现我自己的组合。

我想在每个 MyCombineable 中预先分配一个包含元素的 vector ,并通过从线程 ID 派生的某个整数访问它。该索引可以在辅助函数内部确定一次,并传递给对 combineable::local() 的每次调用。但为此,我需要知道 tbb 线程池中的线程数及其线程 ID。

或者其他想法?

最佳答案

您是否尝试将调用缓存为引用并减少查找次数,而不是实现您自己的 .local 方法,也可能在每个任务中一次处理多个项目。

要在线程进入时查看线程,您可以在调度任何并发工作之前在 tbb 中实现一个 task_scheduler_observer,然后通过调度一些任务来预热调度程序以查看线程 ID(如果您想要预分配线程 ID)。

你也可以尝试在 concurrent_unordered_map 之上实现你自己的东西来获取线程 ID 并使用它来将索引存储到 vector 中,但我怀疑你会发现查找线程的成本仍然很高,如果你注意到 combinable 的查找成本。

关于c++ - tbb::combinable::local() 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407691/

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