问题标签 [tbb]

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 投票
4 回答
1027 浏览

openmp - OpenMP 开销

我使用 OpenMP 和 Intel TBB 并行化了图像卷积和 lu 分解。我正在1-8个核心上测试它。但是,当我通过分别使用 set_num_threads(1) 和 task_scheduler_init InitTBB(1) 指定一个线程来在 OPenMP 和 TBB 中的 1 个内核上尝试它时;由于 TBB 开销,与顺序代码相比,TBB 性能显示出一些小的下降,但令人惊讶的是,OpenMP 在单核上没有显示任何开销,并且性能与顺序代码完全相同(使用 Intel O3 优化级别)。我正在使用 OpenMP 循环的静态调度。这是现实的还是我做错了什么?

0 投票
2 回答
300 浏览

c++ - C/C++ 代码和库混合

我是一个本地 C++ 程序员,对低级 C 一无所知,由于某些情况我不得不广泛使用 C。结果是我养成了很多 C 习惯。知道我正在尝试使用 OpenCV、TBB、OpenCL 和 OpenGL 开发一些计算机视觉项目。

问题是 OpenCL 是原生 C,所以 TBB 我猜不是 100% 确定 TBB。众所周知,C++ 是一门工业语言,所以用它进行开发是一场爆炸(至少对我而言),但是在完成主要研究之后,我应该使用哪种语言?我更关心 C/C++ 代码混合……。

所以我的问题是我应该用 C 开发整个东西(难以维护、扩展和开发)还是应该继续使用 C++。如果我继续使用 C++,有人可以指导我找到一种混合 C/C++ 的好方法(书籍、教程)。
提前致谢.....

0 投票
2 回答
4757 浏览

android - 适用于 Android 和 iOS 的英特尔 TBB

只是想知道是否有适用于 Android 和 iOS 的多线程库。

此外,英特尔的 TBB 是否可以让它在 Android 和 iOS 上运行?

0 投票
1 回答
10521 浏览

c++ - TBB 并发哈希图

我正在实现 tbb 的并发哈希映射,以将它的性能与一组其他并发哈希表进行比较。

但是我从中得到的性能是可怕的,我简直不敢相信它与其他并发哈希表相比有那么慢

这是我的实现:

有没有人看到我的实现有任何问题,或者知道它执行缓慢的任何原因?在单线程环境中插入 200,000 个元素需要 30 多分钟。从这个角度来看,几乎所有其他表都在不到 5 分钟的时间内完成了这个测试。

这是我的构建代码:

更新:我已调整我的测试代码以将哈希表预填充为 1000,而不是 100,000。再次运行时,tbb 执行 92 op/sec,而另一个实现执行 89431 op/sec。(64线程环境)...只是说什么似乎不对....

附加信息:计算机是具有 6gb 内存和 6 个内核的 HP Z600 工作站。

注意交叉定位:http ://software.intel.com/en-us/forums/showthread.php?t=86119

0 投票
1 回答
7531 浏览

c++ - 英特尔 TBB 和微软 PPL 有什么区别?

我打算开始“玩”跨平台项目的基于任务的并行性。我想使用英特尔线程构建模块。我从 Windows 和 Visual Studio 开始。

由于我目前只想制作原型,我正在考虑仅在 Windows 上“玩”,然后有足够的知识在所有兼容平台上使用该库。

我了解到,自 VS2010 以来,Microsoft 提供了一个类似的库,并行处理库,它具有(几乎)与 Intel TBB 相同的接口。

一些消息来源(包括 TBB 的团队博客)建议他们一起构建它并且它是同一个库。

然而,它并不是很明确,因为经常有人建议这两个库之间存在细微差别。

那么,如果有的话,这些差异是什么?我应该直接从最后一个稳定的 ITBB 开始,还是只在原型中使用 Microsoft PPL 并在跨平台的“真实”项目中使用 ITBB 是低风险的?

0 投票
2 回答
1174 浏览

c++ - 如何禁用 TBB 的自动链接

当我将我的 VS 项目构建为 Debug 时,它总是与 tbb_debug.lib 自动链接(它又与 tbb_debug.dll 链接)。有没有办法覆盖它并使 tbb.lib 链接,即使是 Debug 构建?

0 投票
1 回答
252 浏览

c++ - 如何使用互斥锁或条件变量来设计这个(C++)?

我对并行编程很陌生。现在我有一个问题,并尝试 TBB 解决它。

为简化问题,我们可以想象有几个人(任务)捡球并根据球上数字的哈希值将它们放入容器(concurrent_vector)中。因为我们需要确保它是无损的。球表示为一个链接列表(这是使用 concurrent_vector 而不是 concurrent_hashmap 的原因,我需要随机访问)。如果容器快满了(有阈值和条件来判断)。一个人会将当前容器中的所有球放入一个大容器中。为了正确起见,当他将球移动到另一个容器时,所有其他人都应该停止添加更多球并等到他完成。由于移动球需要大量时间,因此所有其他人都停止当前任务并帮助移动球会更好。我应该如何设计它以提高效率,我应该使用互斥锁、自旋互斥锁还是条件变量?因为现在,我正在使用 concurrent_vector,所以修改容器包含是并行完成的。我需要为移动过程锁定整个向量吗?我还有一个关于 TBB 互斥锁的问题。没有重入是什么意思?

0 投票
2 回答
589 浏览

c++ - TBB concurrent_vector 与 openmp

我们可以将 TBB concurrent_vector 与 openmp 一起使用吗?

是否允许并发更新?

0 投票
9 回答
1387 浏览

c++ - tbb:并行查找第一个元素

我遇到了这个问题:

  • 查找列表中满足给定条件的第一个元素。

不幸的是,该列表很长(100.000 个元素),并且使用单个线程评估每个元素的条件总共需要大约 30 秒。

有没有办法干净地并行化这个问题?我浏览了所有的 tbb 模式,但找不到任何合适的。

更新:出于性能原因,我想在找到项目时尽早停止并停止处理列表的其余部分。这就是为什么我相信我不能使用parallel_whileor parallel_do

0 投票
2 回答
514 浏览

c++ - TBB task_groups 不使用堆栈

我想在 C++ 中执行后序树遍历。树可能很深,以至于我无法使用递归(它耗尽了堆栈)。相反,我创建了一个std::stack<...>将所有内容都放在堆上的东西,并在 while 循环中遍历树,而不是使用函数调用。这很好用。

现在我想使用 TBB 并行化整个过程。我正在考虑在每个节点上创建一个task_group,并在它的每个子节点上运行相同functor的。但是我突然想到,这会遇到与我之前遇到的树深度相同的问题:functor在最深路径的每个节点上运行 会从堆栈中吃掉一些东西,直到整个东西用完。

有没有办法解决这个问题?还是我在想象整个事情?背后是否有一些魔法task_group::wait()可以避免这个问题?