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

c++ - 英特尔线程 C API

我们想使用Intel Threading Building Blocks纯 C,而不是 C++。他们也有C API吗?

0 投票
1 回答
2838 浏览

linux - 在 Linux 11.04 上安装 TBB

我一直在搜索关于如何安装 TBB 的 google 和 tbbs 论坛。

我已经从以下位置下载了 linux 和源代码: http ://threadingbuildingblocks.org/ver.php?fid=175

使用 tar -xvf 提取它们,然后运行 ​​make 文件。然后我tbb/build/linux_intel64_gcc_cc4.5.2_libc,13_kernel2.6.38_debug/跑过去tbbvars.sh

我也试过跑步tbb/build/generate_tbbvars.shtbbvars.sh然后tbbvars.csh

无论我尝试用什么编译程序-ltbb,我都会得到 /usr/bin/ld: skipping incompatible /usr/lib/libtbb.so when searching for -ltbb /usr/bin/ld: cannot find -ltbb

有人知道怎么修这个东西吗?

Linux damian-HP-Z600-Workstation 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

0 投票
1 回答
7124 浏览

tbb - 如何在 Ubuntu 上安装 TBB?

我从http://threadingbuildingblocks.org/ver.php?fid=174下载了 tbb40_233oss_lin.tgz 文件

我将“TBBROOT”变量设置为 bash_proflie 中的目录,然后解压缩 tar 文件并导航到 bin 文件夹并运行 tbbvars.sh 文件

我打了

我试图运行示例,但它抱怨如下所示

我尝试手动设置库路径并输入

但它仍然抱怨。

如何在 Ubuntu 上编译示例代码?

提前致谢。

0 投票
1 回答
616 浏览

c++ - TBB 任务分配断言

我正在尝试通过 TBB 任务和延续来遍历树。代码如下。当我运行代码时,它会不断中止(经常,但并非总是如此)并出现以下错误:

Assertion t_next->state()==task::allocated failed on line 334 of file ../../src/tbb/custom_scheduler.h 详细说明:如果task::execute()返回task,必须标记为已分配

什么可能导致这个问题?

0 投票
7 回答
16000 浏览

opencv - 如何使用 TBB 构建 OpenCV?

我正在尝试并未能opencv_traincascade使用多个线程。我能找到的唯一文档说“使用 TBB 构建 OpenCV”。我不确定我是否无法使用 TBB 成功构建 OpenCV,或者是否需要为opencv_traincascade.

我已经下载了 OpenCV 版本 2.3.1 windows superpack 和tbb40_20111003oss_win.zip,我将其解压缩到C:\tbb40_20111003oss. 然后我使用 CMake生成 VC8.sln和文件,设置.proj

WITH_TBB: ON

TBB_INCLUDE_DIR:PATH=C:\tbb40_20111003oss\include

TBB_LIB_DIR:PATH=C:/tbb40_20111003oss/lib/intel64/vc8

OpenCV 然后构建没有错误,但是当我运行opencv_traincascade它是单线程的。有谁知道我做错了什么?

0 投票
2 回答
2712 浏览

c++ - 二维数组的 concurrent_vector

我目前正在尝试使用tbb::concurrent_vector<T>. 这个二维数组将被许多不同的线程访问,这就是为什么我希望它能够最有效地处理并行访问。

我想出了2个解决方案:

  • 使用 atbb::concurrent_vector<tbb::concurrent_vector<T> >来存储它。

  • 将所有内容存储在 a 中tbb::concurrent_vector<T>并使用 w/ 访问元素x * width + y

我偏爱第二个,因为我不想锁定一整行来访问一个元素(因为我假设要访问元素array[x][y],tbb 实现将锁定第xth 行然后第yth 元素)。

我想知道哪种解决方案对您来说更好。

0 投票
1 回答
703 浏览

c++ - TBB:parallel_for 中的局部和全局结果

我对并行循环中的局部值和更新全局变量有疑问。

例如,在伪代码中:我在一个很长的向量中搜索一个最大值。我可以循环执行,如下所示:

我可以轻松地将其与 OpenMP 并行化:

我怎样才能在 TBB 中做同样的事情parallel_for?我不要求确切的代码,我只想知道如何在循环结束时更新全局结果,而不是在每次迭代时...

(我是TBB的新手)

0 投票
1 回答
856 浏览

visual-c++ - 如何允许在同一进程中针对不同版本的 Visual Studio 编译的 DLL 使用线程构建块

在我的 DirectShow 应用程序中,我有一个第三方 DLL(一个 32 位 DirectShow 过滤器),我没有针对 32 位 Windows 版本的英特尔线程构建块 (tbb.dll) 的链接源。

如果我想在我自己的 DLL 中的同一进程中使用线程构建块(例如另一个 32 位 DirectShow 过滤器),这是否会迫使我使用与该第三方 DLL 的作者使用的相同版本的 Visual Studio?

编辑 - 我已经意识到与版本无关的 _mt 库可能是在这种情况下使用的最佳库。如果第三方供应商没有为此 _mt dll 构建会发生什么?

在我自己的线程构建块安装中,我注意到对于不同版本的 Visual Studio - 2005、2008、2010 和“MT”有不同版本的 tbb.dll(还不确定是什么)。一个明显的原因是不同版本的 tbb.dll 链接到不同版本的 Visual Studio 运行时库 DLL。是否可以通过检查来判断需要哪个版本的 tbb.dll,或者我是否必须四处寻找二进制文件中指示使用的编译器版本的字符串(第三方 DLL 似乎正在静态链接 Visual Studio 运行时)?

据我所知,tbb.dll 不使用清单和并行版本控制,并且为不同的编译器版本赋予相同的名称。最后的手段是重命名不同的 tbb.dll 并破解导入库或导入以引用重命名的 dll,但我真的宁愿避免这种情况。有没有一种干净的方法来使用链接器选项重定向导入?

由于这些 DLL 是表现良好的 DirectShow 过滤器,它们不会在它们之间传递 Visual Studio 运行时或 TBB 对象,这显然是危险的。它们的交互将仅限于通过标准 COM DirectShow 调用相互调用。

0 投票
2 回答
372 浏览

c++ - TBB 与本土工作队列

我知道TBB(线程构建块)声称拥有一个复杂的引擎,但从算法的角度来看:

如果我们(比如在 Linux 上)有一个工作队列,它有N工作线程(POSIX 线程,N是核心数)和一个互斥同步的任务队列,然后每个工作线程在空闲时从队列中获取一个任务,还有一些同步调用,还有什么可以TBB提供的,不算漂亮的C++语法?我没有看到比贪婪地将任务分配给核心更好的算法。

0 投票
1 回答
243 浏览

c++ - 哪个线程并行接口用于使用堆栈进行任务共享和拆分?

我打算编写一个代码,我想使用可以拆分的任务来共享工作。在串行版本中,我使用由根任务初始化的堆栈。通过重复弹出一个任务来清空堆栈,然后执行或拆分该任务并将子任务推回堆栈。并行实现此功能的最佳(最有效和最轻松)方式和接口(tbb、openmp 等)是什么?任何线程并行接口是否明确支持这样的并行堆栈(或者是否有更好的堆栈替代方案)?