问题标签 [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 投票
2 回答
1610 浏览

parallel-processing - 任务怎么写?(平行码)

我对英特尔线程构建块印象深刻。我喜欢我应该如何编写任务而不是线程代码,我喜欢它在我有限的理解下如何工作(任务在一个池中,4核上不会有100个线程,一个任务不能保证运行,因为它不在它自己的线程并且可能在池中很远。但它可能与另一个相关任务一起运行,所以你不能做像典型的线程不安全代码这样的坏事)。

我想了解更多关于写作任务的信息。我喜欢这里的“基于任务的多线程 - 如何为 100 个内核编程”视频http://www.gdcvault.com/sponsor.php?sponsor_id=1(目前是倒数第二个链接。警告它不是“很棒”)。我最喜欢的部分是“最好并行解决迷宫”,大约在 48 分钟左右(您可以单击左侧的链接。如果有的话,这部分确实是您需要观看的全部内容)。

但是我喜欢看更多的代码示例和一些关于如何编写任务的 API。谁有好的资源?我不知道一个类或一段代码在将其推送到池后会是什么样子,或者当您需要复制所有内容以及将所有内容推送到池中时,代码看起来会如何。

0 投票
5 回答
7373 浏览

multicore - 多核编程。Boost 的 MPI、OpenMP、TBB 还是其他?

我完全是多核编程的新手,但我确实知道如何编程 C++。

现在,我正在寻找多核编程库。我只是想尝试一下,只是为了好玩,现在,我找到了 3 个 API,但我不确定我应该坚持哪一个。现在,我看到了 Boost 的 MPI、OpenMP 和 TBB。

对于任何使用过这 3 个 API(或任何其他 API)的人,您能告诉我它们之间的区别吗?是否有任何因素需要考虑,例如 AMD 或 Intel 架构?

0 投票
4 回答
1155 浏览

multithreading - 如何处理消息的并行处理?

我正在为我的应用程序重新设计消息传递系统以使用英特尔线程构建块,并且在尝试在两种可能的方法之间做出决定时感到困惑。

基本上,我有一系列消息对象,并且对于每种消息类型,都有一系列处理程序。对于每个消息对象,我应用为该消息对象类型注册的每个处理程序。


顺序版本将是这样的(伪代码):


我正在考虑的第一种方法依次(按顺序)处理消息对象并同时应用处理程序。

优点:

  • 消息的可预测顺序(即,我们保证 FIFO 处理顺序)
  • (可能)降低处理每条消息的延迟

缺点:

  • 比单一消息类型的处理程序更多的可用处理资源(糟糕的并行化)
  • 处理器缓存使用不当,因为需要复制消息对象以供每个处理程序使用
  • 小型处理程序的大量开销

这种方法的伪代码如下:


第二种方法是并行处理消息并按顺序将处理程序应用于每条消息。

优点:

  • 更好地使用处理器缓存(将消息对象保持在所有将使用它的处理程序的本地)
  • 小型处理程序不会施加太多开销(只要还有其他处理程序也可以运行)
  • 预期的消息多于处理程序的数量,因此并行性的潜力更大

缺点:

  • 不可预测的顺序 - 如果消息 A 在消息 B 之前发送,它们可能同时被处理,或者 B 可能在 A 的所有处理程序完成之前完成处理(顺序是不确定的)

伪代码如下:


第二种方法比第一种方法有更多的优点,但非确定性排序是一个很大的缺点。

你会选择哪种方法,为什么?是否还有其他方法我应该考虑(除了显而易见的第三种方法:并行消息和并行处理程序,据我所知,它们都有两者的缺点并且没有真正的补救因素)?

谢谢!

编辑:

我想我会默认使用#2,但允许在每条消息上附加一个“对话标签”。任何具有相同标签的消息都会根据其对话顺序进行排序和处理。处理程序会在消息旁边传递对话标签,因此如果需要,他们可以继续对话。像这样的东西:

a在b之前处理,b在z之前处理。x 可以与 a、b 和 z 并行处理。一旦处理了对话中的所有消息,对话就会被销毁。

0 投票
2 回答
14161 浏览

macos - 如何在 OS X 上安装 Intel TBB?

如何在 OS X 10.6 上正确安装英特尔线程构建模块 (TBB) 的开源版本?开源版本似乎没有正确的安装脚本。

http://www.threadingbuildingblocks.org/ver.php?fid=154

0 投票
2 回答
4885 浏览

c++ - 线程构建块上的任务

这是示例代码:

在这里,我正在计算一个大的斐波那契数列,只是为了模拟非阻塞计算。我预计这段代码会生成两个以上的线程(我的计算机是 Core2Duo),但只调用了第一个和第二个任务。这是被盯上了?

0 投票
3 回答
327 浏览

tbb - 多核应用程序中的性能增益问题

我有一个用 C 语言编写的串行(非并行)应用程序。我使用英特尔线程构建块对其进行了修改和重新编写。当我在四核机器 AMD Phenom II 机器上运行这个并行版本时,我获得了超过 4 倍的性能增益,这与阿姆达尔定律相冲突。谁能给我一个为什么会发生这种情况的原因?

谢谢,拉克什。

0 投票
1 回答
304 浏览

architecture - 我应该为英特尔线程构建指定哪个拱门

我今天在书店偶然看到了 O'Reilly 的关于 TBB 的新书。真的很喜欢 TBB 如何将线程抽象为任务。但我注意到教程,在第 12 页安装在 Linux* 系统上,只有三个可用的 s:ia32、intel64 和 ia64。我们服务器上的 Dmesg 显示:[ 0.132804] CPU0: Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz stepping 0a. 想知道我该选择哪个?

谢谢,亚历克斯

0 投票
1 回答
1069 浏览

frameworks - 在 MacOS 10.6 (Snow Leopard) 上安装 Intel 的 TBB 3.0 框架

我在我的 MacOS 系统上安装英特尔的线程构建模块 (TBB) 3.0 作为框架时遇到了一些麻烦。有谁知道好的教程吗?我尝试使用具有 TBB 2.2 的 MacPorts:它安装了我需要的所有库,但我没有获得框架。此外,英特尔网站上似乎没有任何可以提供此框架的 .dmg 安装文件。所有下载文件都是包含 src 代码或二进制文件的压缩文件。

有任何想法吗?

谢谢!

0 投票
3 回答
1582 浏览

sorting - How to sort TBB concurrent_vector or concurrent_queue?

Now I have a solver in that I need to keep a set of self-defined data type objects in a concurrent_vector or queue. It has to be concurrent because the objects come from different threads.With this concurrent container, I hope to sort these objects, eliminate duplicates and send them back when other threads need them.

However, I know TBB offers concurrent_vector and concurrent_queue which can be read and written concurrently from different threads. But how to sort the objects inside a container? Does everyone know how to do that? Thanks.

0 投票
3 回答
17898 浏览

multithreading - 英特尔 TBB 使用的线程数

英特尔 TBB 如何选择用于并行部分的线程数?

是否有某种规格可用?