需要帮助英特尔 TBB 工作吗?

Posted

技术标签:

【中文标题】需要帮助英特尔 TBB 工作吗?【英文标题】:Need help getting intel TBB working? 【发布时间】:2016-10-05 06:28:53 【问题描述】:

我在我的 mac os sierra 设备上运行了 brew install tbb。运行此之后,我应该能够将#include 包含到我的 c++ 项目中,对吧?由于某种原因,当我编译这些文件时没有找到。帮助将不胜感激

【问题讨论】:

嗨。感谢您的回复。我为自己的应用程序编写了一个并发队列实现,并希望针对 intel tbb 的并发队列对其进行测试。我使用 OS X 山脉。我只是安装了自制软件,然后在终端中运行了“brew install tbb”。我假设这设置了所有环境变量,什么不是?然后,当我尝试通过包含语句访问 concurrent_queue.h 标头时,我收到错误:/Users/irtazasafi/ClionProjects/as2/main.cpp:7:9: fatal error: 'concurrent_queue.h' file not found跨度> 我都试过了。当我尝试 时,它仍然找不到该文件。 Brew 说它已经安装(tbb-4.4-20160916 已经安装)。 【参考方案1】:

一些事情......

检查软件包选项

在安装任何homebrew 软件包之前,请养成检查可用选项的习惯,而不仅仅是接受默认选项。它通常可以让您深入了解您不知道的可用功能。所以,对于tbb

brew options tbb

输出

--c++11
    Build using C++11 mode

所以,它可能值得使用:

brew install tbb --c++11

brew reinstall tbb --c++11

先自己找包含文件和库

如果您尝试包含头文件,请先尝试自己查找,使用find

find /usr /opt concurrent_queue.h

输出

/usr/local/Cellar/tbb/4.4-20160916/include/tbb/concurrent_queue.h

所以我的系统上只有一个concurrent_queue.h。现在我们需要告诉编译器如何找到它。如果你查看/usr/local/include,这是homebrew 放置标题的地方,你会看到:

ls -l /usr/local/include | grep tbb
lrwxr-xr-x    1 mark  admin    38  5 Oct 09:10 tbb -> ../Cellar/tbb/4.4-20160916/include/tbb

因此,tbb 标头位于/usr/local/include/tbb(这是指向homebrew 的地窖的符号链接),因此您需要确保您的编译器正在查找/usr/local/include

g++-6 -I/usr/local/include ...

请记住,您可以使用 -v 检查编译器的位置,如下所示:

g++-6 -v ...

一旦你帮助编译器找到了头文件(#includes),你就需要帮助链接器找到库,所以你的命令会变成:

g++-6 -I/usr/local/include program.cpp -o program -L /usr/local/lib -ltbb

【讨论】:

find /usr /opt concurrent_queue.h 说我的磁盘上没有 concurrent_queue.h。 Irtazas-MacBook-Pro:~ irtazasafi$ brew install tbb --c++11 警告:tbb-4.4-20160916 已经安装 对不起,我的意思是find /usr -name concurrent_queue.h 所以,如果您使用的是g++,请尝试g++ -std=c++11 main.cpp -I /usr/local/include -o main -ltbb 酷 - 我们快到了!只需添加-L /usr/local/lib

以上是关于需要帮助英特尔 TBB 工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

结合英特尔 IPP 和 TBB

TBB 管道的错误输出

如何从命令行使用 VS2015 x64 构建 TBB?

使用英特尔线程构建模块编译:错误操作数到?:

英特尔编译器:警告 #11021:未解决 引用于

使用 task_group 的英特尔线程构建模块性能不佳(新用户)