Linux下TBB安装及编译

2023-10-27

TBB,Thread Building Blocks,线程构建模块,是Intel公司开发的并行编程开发的工具。其提供C++模版库,用户不必关注线程,而专注任务本身。抽象层仅需很少的接口代码,性能上毫不逊色。且能够灵活地适合不同的多核平台,适合于跨平台的移植(如Linux, Windows, Mac)


1)在官网下载tbb源码,如下载tar.gz格式
        tar -zxvf tbbxx.tar.gz


2)进入解压缩目录下,执行make。

     若编译期间报出以下错误:

/tmp/ccxNhOc9.s: Assembler messages:
/tmp/ccxNhOc9.s:615: Error: no such instruction: `xtest'
/tmp/ccxNhOc9.s:643: Error: no such instruction: `xabort $255'
/tmp/ccxNhOc9.s:652: Error: no such instruction: `xabort $255'
/tmp/ccxNhOc9.s:658: Error: no such instruction: `xend'
/tmp/ccxNhOc9.s:825: Error: no such instruction: `xbegin .L56'
/tmp/ccxNhOc9.s:988: Error: no such instruction: `xbegin .L71'
/tmp/ccxNhOc9.s:1216: Error: no such instruction: `xabort $255'
make[1]: *** [x86_rtm_rw_mutex.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/user_data/.tmp/linux_intel64_gcc_cc4.9.1_libc2.12_kernel2.6.32_debug'
make: *** [tbb] Error 2

    则表明当前的gcc编译器不支持-mrtm。则可行的方案是注释以下几行。打开tbb目录build/linux.gcc.inc文件,注释以下几行。

# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
ifneq (,$(shell gcc -dumpversion | egrep  "^4\.[8-9]"))
    RTM_KEY = -mrtm
#endif

    然后重新编译 make即可。


3)添加tbb变量

cd build
chmod +x *.sh
sh generate_tbbvars.sh
sh tbbvars.sh

4)将.so库移至/usr/lib,将头文件移至 /usr/local/include

cd linux_intel64_gcc_你的版本_release
cp *.so /usr/lib
cp *.so.2 /usr/lib
/sbin/ldconfig
//回到解压缩目录下 
/usr/local/include
//将头文件移至 /usr/local/include
cd include
cp *.* /usr/local/include

5)接下来检验tbb是否安装成功

cd ../examples/pipeline/square
make

如果是下面的提示,则表示tbb环境配置成功

g++ -O2 -DNDEBUG  -o square square.cpp gen_input.cpp -ltbb -lrt 
./square 0 input.txt output.txt
serial run   time = 0.249843
parallel run time = 0.0304956
elapsed time : 0.399366 seconds
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下TBB安装及编译 的相关文章

随机推荐

  • PTA L1-016:查验身份证 (python)

    一 题目要求 二 参考代码 sheet 0 1 1 0 2 X 3 9 4 8 5 7 6 6 7 5 8 4 9 3 10 2 w 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 n int input c 0 f
  • ARM单片机FATFS文件系统的移植

    ARM单片机FATFS文件系统的移植 测试效果 前提条件 下载所需源码 FATFS 文件系统 SFUD万能驱动 加入工程 接口驱动 测试代码 FreeRTOS10 0 1 FATFS FF14A SFUD V1 1 0 STM32F103Z
  • 超过2t硬盘分区_大于2T的磁盘怎么分区呢?

    由于购买了磁盘柜专门用作存储 后来考虑到磁盘容量的动态管理 准备采用LVM进行动态扩容管理了 首先让前端挂载机器能够识别到磁盘柜的逻辑卷组 比如 dev sdb 先介绍2种分区表 MBR分区表 MBR含义 主引导记录 所支持的最大卷 2T
  • 6.8过程纹理

    过程纹理也称为自定义纹理 根据计算得出 这个例子使用了位置和原点的距离作为输入参数 并加入了动画 但是和目前的纹理没任何关系 纯手工计算 因为位置是三维的 所以在涉及到纹理的几个地方都要改为三维的 struct RENDEROBJECT D
  • Java中的&、&&、

    关于这几个的运算符我一代码的实例来介绍 如下 1 首先它们都是逻辑运算符 但是 和 是短路运算符 也就是只判断运算符左边的即可 就可以确定整个表达式的结果了 所以它的执行效率高于 和 因为这两个运算符需要将表达式中所有的boolean值都判
  • JAVA开发(行业现状与未来)

    JAVA开发行业经过了这么多年的发展 曾经从一个机顶盒程序起家 到超过3亿台以上设备都在运行JAVA程序 JAVA语言见证了整个互联网化的工业化过程 许许多多的东西从从传统模式搬到了线上 特别是电子商务和网络社交的发展 大量的资金投入的这个
  • 【算法系列篇】前缀和

    文章目录 前言 什么是前缀和算法 1 模板 前缀和 1 1 题目要求 1 2 做题思路 1 3 Java代码实现 2 模板 二维前缀和 2 1 题目要求 2 2 做题思路 2 3 Java代码实现 3 寻找数组的中心下标 3 1 题目要求
  • 【MATLAB第67期】# 源码分享

    MATLAB第67期 源码分享 基于MATLAB的morris全局敏感性分析 一 代码展示 clear all npoint 100 在分位数超空间中要采样的点数 计算次数iter npoint nfac 1 nfac 20 研究函数的不确
  • 浏览器跨域问题

    1 同源策略 同源策略是一种约定 是浏览器最核心也是最基本的安全功能 可以说Web是构建在同源策略基础之上的 浏览器之上针对同源策略的一种实现 同源 协议 域名 端口号都相同的才称为 同源 同源策略用于限制一个origin的文档或者它加载的
  • 随机选择一个三位以内的数字作为答案。用户输入一个数字,程序会提示大了或是小了,直到用户猜中。

    import random b random randint 0 999 A input input a 0 999 number a int A 用户输入 while a b if a gt b A input input a less
  • vue+图片上传+预览

    学习记录 实现本地图片上传和预览 切记使用 accept image 可以指定文件类型
  • 逐步解读HTTP报文的组成及含义

    如果说HTTP是因特网的信使 那么HTTP报文就是运送的包裹 所有的HTTP程序都是通过互相发送报文来完成工作的 本文将介绍HTTP报文的流动方式 报文的组成部分 请求和响应报文之间的区别等 报文流 HTTP报文是在HTTP应用程序之间发送
  • Java并发编程详解:实现高效并发应用的关键技术

    文章目录 引言 一 线程安全性 二 并发集合 结论 引言 在当前的计算机领域 高效的并发编程对于Java开发人员而言变得越发重要 作为流行的编程语言 Java提供了强大的并发编程支持 使开发人员能够充分发挥多核处理器和线程的潜力 构建高性能
  • 限制input框只能输入0~100的正整数

    法一 复杂
  • 【Gazebo安装教程】2023年最新安装全流程详解!

    安装 实验环境 ubuntu22 04LTS 安装 Gazebo 首先我们需要安装必须的工具 sudo apt get update sudo apt get install lsb release wget gnupg 之后修改源 并 u
  • 爬虫异常处理实战:应对请求频率限制和数据格式异常

    目录 一 请求频率限制的处理 1 设置请求间隔时间 2 使用随机化延迟 3 添加爬虫IP和用户代理 二 数据格式异常的处理 1 异常数据的过滤 2 错误信息的记录 3 动态调整解析规则 总结 在爬虫编程中 我们经常会遇到各种异常情况 比如请
  • 确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构

    我们在下载软件或镜像时会有很多版本 那需要根据我们的系统架构选择正确的软件或镜像版本 要确定你的系统使用的是 x86 64 amd64 还是 arm64 架构 可以使用以下方法之一 使用 uname 命令 打开终端 并运行以下命令 unam
  • 【Java核心技术 卷I】第一章 Java程序设计概述 笔记

    是自学和看书的笔记 有的地方感觉了解一下就行了 就没记笔记 1 2 Java的11个关键术语 简单性 面向对象 分布式 健壮性 安全性 体系结构中立 可移植性 解释性 高性能 多线程 动态性 简单性 Java语法是C 语法的一个 纯净 版本
  • logback TimeBasedRollingPolicy的fileNamePattern和file配置详解

    文章目录 1 file配置项 2 fileNamePattern配置项 3 fileNamePattern和file的搭配使用 解耦 4 fileNamePattern的不同 d配置举例说明 4 1 Wombat foo d 天级更新 4
  • Linux下TBB安装及编译

    TBB Thread Building Blocks 线程构建模块 是Intel公司开发的并行编程开发的工具 其提供C 模版库 用户不必关注线程 而专注任务本身 抽象层仅需很少的接口代码 性能上毫不逊色 且能够灵活地适合不同的多核平台 适合