微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

包括 <execution> 需要链接到 tbb 吗?

如何解决包括 <execution> 需要链接到 tbb 吗?

在我在 Ubuntu 20 平台(使用 g++ 9.3.0)上的项目中,我使用以下行

#include <execution>

通过标准库函数支持并行处理。我不包括来自英特尔的并行执行库 TBB 的任何内容。但是当我构建程序时,我收到消息:

/usr/bin/ld: CMakeFiles/probis.dir/src/probis.cpp.o: in function `tbb::interface7::task_arena::current_thread_index()':
/usr/include/tbb/task_arena.h:449: undefined reference to `tbb::interface7::internal::task_arena_base::internal_current_slot()'

这很容易解决(例如:使消息消失)通过将 -ltbb 添加链接器行。但是后来我对 libtbb 产生了依赖,这是我不指望的。

这种依赖是预期的吗?是否可以在不安装 tbb 的情况下使用并行执行(但 tbb 在安装时会覆盖认设置)?

解决方法

作为@[n. 'pronouns' m.] 说得对,您可能需要 libtbb 才能使您的代码正常工作。您可以下载英特尔® oneAPI 基础工具包,其中包含作为组件之一的 TBB。 英特尔® oneAPI 基础工具包下载链接: https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit/download.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。