问题标签 [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.
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 循环的静态调度。这是现实的还是我做错了什么?
c++ - C/C++ 代码和库混合
我是一个本地 C++ 程序员,对低级 C 一无所知,由于某些情况我不得不广泛使用 C。结果是我养成了很多 C 习惯。知道我正在尝试使用 OpenCV、TBB、OpenCL 和 OpenGL 开发一些计算机视觉项目。
问题是 OpenCL 是原生 C,所以 TBB 我猜不是 100% 确定 TBB。众所周知,C++ 是一门工业语言,所以用它进行开发是一场爆炸(至少对我而言),但是在完成主要研究之后,我应该使用哪种语言?我更关心 C/C++ 代码混合……。
所以我的问题是我应该用 C 开发整个东西(难以维护、扩展和开发)还是应该继续使用 C++。如果我继续使用 C++,有人可以指导我找到一种混合 C/C++ 的好方法(书籍、教程)。
提前致谢.....
android - 适用于 Android 和 iOS 的英特尔 TBB
只是想知道是否有适用于 Android 和 iOS 的多线程库。
此外,英特尔的 TBB 是否可以让它在 Android 和 iOS 上运行?
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
c++ - 英特尔 TBB 和微软 PPL 有什么区别?
我打算开始“玩”跨平台项目的基于任务的并行性。我想使用英特尔线程构建模块。我从 Windows 和 Visual Studio 开始。
由于我目前只想制作原型,我正在考虑仅在 Windows 上“玩”,然后有足够的知识在所有兼容平台上使用该库。
我了解到,自 VS2010 以来,Microsoft 提供了一个类似的库,并行处理库,它具有(几乎)与 Intel TBB 相同的接口。
一些消息来源(包括 TBB 的团队博客)建议他们一起构建它并且它是同一个库。
然而,它并不是很明确,因为经常有人建议这两个库之间存在细微差别。
那么,如果有的话,这些差异是什么?我应该直接从最后一个稳定的 ITBB 开始,还是只在原型中使用 Microsoft PPL 并在跨平台的“真实”项目中使用 ITBB 是低风险的?
c++ - 如何禁用 TBB 的自动链接
当我将我的 VS 项目构建为 Debug 时,它总是与 tbb_debug.lib 自动链接(它又与 tbb_debug.dll 链接)。有没有办法覆盖它并使 tbb.lib 链接,即使是 Debug 构建?
c++ - 如何使用互斥锁或条件变量来设计这个(C++)?
我对并行编程很陌生。现在我有一个问题,并尝试 TBB 解决它。
为简化问题,我们可以想象有几个人(任务)捡球并根据球上数字的哈希值将它们放入容器(concurrent_vector)中。因为我们需要确保它是无损的。球表示为一个链接列表(这是使用 concurrent_vector 而不是 concurrent_hashmap 的原因,我需要随机访问)。如果容器快满了(有阈值和条件来判断)。一个人会将当前容器中的所有球放入一个大容器中。为了正确起见,当他将球移动到另一个容器时,所有其他人都应该停止添加更多球并等到他完成。由于移动球需要大量时间,因此所有其他人都停止当前任务并帮助移动球会更好。我应该如何设计它以提高效率,我应该使用互斥锁、自旋互斥锁还是条件变量?因为现在,我正在使用 concurrent_vector,所以修改容器包含是并行完成的。我需要为移动过程锁定整个向量吗?我还有一个关于 TBB 互斥锁的问题。没有重入是什么意思?
c++ - TBB concurrent_vector 与 openmp
我们可以将 TBB concurrent_vector 与 openmp 一起使用吗?
是否允许并发更新?
c++ - tbb:并行查找第一个元素
我遇到了这个问题:
- 查找列表中满足给定条件的第一个元素。
不幸的是,该列表很长(100.000 个元素),并且使用单个线程评估每个元素的条件总共需要大约 30 秒。
有没有办法干净地并行化这个问题?我浏览了所有的 tbb 模式,但找不到任何合适的。
更新:出于性能原因,我想在找到项目时尽早停止并停止处理列表的其余部分。这就是为什么我相信我不能使用parallel_while
or parallel_do
。
c++ - TBB task_groups 不使用堆栈
我想在 C++ 中执行后序树遍历。树可能很深,以至于我无法使用递归(它耗尽了堆栈)。相反,我创建了一个std::stack<...>
将所有内容都放在堆上的东西,并在 while 循环中遍历树,而不是使用函数调用。这很好用。
现在我想使用 TBB 并行化整个过程。我正在考虑在每个节点上创建一个task_group
,并在它的每个子节点上运行相同functor
的。但是我突然想到,这会遇到与我之前遇到的树深度相同的问题:functor
在最深路径的每个节点上运行 会从堆栈中吃掉一些东西,直到整个东西用完。
有没有办法解决这个问题?还是我在想象整个事情?背后是否有一些魔法task_group::wait()
可以避免这个问题?