GCC9 支持c++17 stl 并行算法,所以我们安装一下,尝尝鲜。主要参考了这个下面的两个博客(就是无脑抄袭)

C++17 STL Parallel Algorithms - with GCC 9.1 and Intel TBB on Linux and macOS​solarianprogrammer.comAre C++17 Parallel Algorithms implemented already?​stackoverflow.com

1.安装gcc9

# Install GCC 9
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9

2. 安装tbb

  • 下载tbb,并cd 到目录
wget https://github.com/intel/tbb/archive/2019_U8.tar.gz
tar zxvf 2019_U8.tar.gz
rm 2019_U8.tar.gzcd tbb-2019_U8

  • 编辑linux.gcc-9.inc
cp build/linux.gcc.inc build/linux.gcc-9.inc
# 使用vscode 编辑文件
code -n build/linux.gcc-9.inc# 把大约是15,16 行的CPLUS ?= g++ CONLY ?= gcc修改为下面语句,然后保存
CPLUS ?= g++-9
CONLY ?= gcc-9

  • 编译tbb
make compiler=gcc-9 stdver=c++17 tbb_build_prefix=my_tbb_build

  • 安装tbb
sudo mkdir /usr/local/tbb-2019_U8
sudo cp -r include /usr/local/tbb-2019_U8/include
sudo ln -s /usr/local/tbb-2019_U8/include/tbb /usr/local/include/tbb
sudo cp -r build/my_tbb_build_release /usr/local/tbb-2019_U8/libsudo ln -s /usr/local/tbb-2019_U8/lib/libtbb.so.2 /usr/local/lib/libtbb.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc.so.2 /usr/local/lib/libtbbmalloc.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc_proxy.so.2 /usr/local/lib/libtbbmalloc_proxy.so
echo 'export LD_LIBRARY_PATH=/usr/local/tbb-2019_U8/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

3.测试

  • 测试代码
#include <algorithm>
#include <chrono>
#include <execution>
#include <iostream>
#include <random>
#include <vector>void printDuration(std::chrono::steady_clock::time_point start, std::chrono::steady_clock::time_point end, const char *message)
{auto diff = end - start;std::cout << message << ' ' << std::chrono::duration<double, std::milli>(diff).count() << " msn";
}
template <typename T>
void test(const T &policy, const std::vector<double> &data, const int repeat, const char *message)
{for (int i = 0; i < repeat; ++i){std::vector<double> curr_data(data);const auto start = std::chrono::steady_clock::now();std::sort(policy, curr_data.begin(), curr_data.end());const auto end = std::chrono::steady_clock::now();printDuration(start, end, message);}std::cout << 'n';
}int main()
{// Test samples and repeat factorconstexpr size_t samples{5'000'000};constexpr int repeat{10};// Fill a vector with samples numbersstd::random_device rd;std::mt19937_64 mre(rd());std::uniform_real_distribution<double> urd(0.0, 1.0);std::vector<double> data(samples);for (auto &e : data){e = urd(mre);}// Sort data using different execution policiesstd::cout << "std::execution::seqn";test(std::execution::seq, data, repeat, "Elapsed time");std::cout << "std::execution::parn";test(std::execution::par, data, repeat, "Elapsed time");
}

  • 编译程序
g++-9 -std=c++17 -Wall -Wextra -pedantic -O2 t0.cpp -o t0_opt -L /usr/local/lib/ -ltbb

  • 运行代码
./t0_opt

linux tbb 安装_Ubuntu18.04 GCC9 安装相关推荐

  1. ubuntu mysql 二进制安装_ubuntu18.04手动安装二进制MySQL8.0

    wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz tar xvJf ...

  2. Dell G3-3579 安装 Ubuntu16.04 并安装显卡驱动

    之所以没有安装18.04是因为安装ubuntu18.04后安装NVIDIA显卡驱动时总是各种坑.ubuntu18.04认证机器里面没有Dell G3相近系列.而16.04认证机器里面有G3相近系列G5 ...

  3. 安装Ubuntu16.04并安装sogoupiyin for linux

    制作启动硬盘,安装Ubuntu16.04 参考地址linux公社http://www.linuxidc.com/Linux/2015-10/123786.htm 但是注意如果下载U盘启动盘程序,别点错 ...

  4. ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++

    Ubuntu 14.04 下安装 IT++(itpp)(官方二进制包安装版) 温馨提示:虽然没有尝试,不过直接运行最后一步应该也可以成功. 另外,既然有简单的方法,不到破不得以还是不要尝试麻烦的方法了 ...

  5. skyeye linux qt,Ubuntu 16.04上安装SkyEye及测试

    说明一下,在Ubuntu 16.04上安装SkyEye方法参考自互联网,仅供学习. 一.检查支持软件包 gcc, make, vim(optional), ssh, subversion binuti ...

  6. Linux一键安装xrdp,如何在Linux系统Ubuntu 20.04中安装xrdp实现远程桌面连接RDP

    我们很多网友可能是比较熟悉RDP协议的,这是在微软远程桌面协议,我们可以通过远程连接到另外一台计算机或者电脑进行图形化操作连接,这个我们常用的就是本地电脑连接Windows服务器进行远程管理有用到的. ...

  7. Linux技巧之Ubuntu11.04下安装极点五笔输入法

    转自:http://os.51cto.com/art/201108/285239.htm Ubuntu11.04是第14个Ubuntu系统发行版本.Ubuntu11.04将支持多点触摸技术,改进用户界 ...

  8. 8192fu网卡linux,在Ubuntu 18.04下安装腾达Tanda U6无线网卡(RTL8192EU)驱动

    Ubuntu 18.04操作系统默认使用的Linux内核是4.15版本,目前腾达官方只有支持到 Linux 4.4内核的驱动,官方驱动默认在Ubuntu 18.04是安装不了的.用Ubuntu 18. ...

  9. linux bochs安装,ubuntu16.04上安装bochs

    搜索热词 ubuntu16.04上安装bochs 需要用到的东西: 1.bochs-2.6.8.tar.gz 2.linux-0.12-080324/ 编译安装bochs 1.安装依赖包 sudo a ...

最新文章

  1. python timestamp转string_Python操作钉钉机器人发送各种消息
  2. Sql Server中判断表或者数据库是否存在
  3. linux 回环接口实现,Linux回环接口-----(loop-back/loopback)
  4. FAST300M无线宽带路由器FW300R(从)桥接TPLINK路由器(主)
  5. springboot 直接转发调用_springboot-过滤器的页面跳转【重定向与请求转发】-异常报错...
  6. 5月8日全国软考办专家做客51CTO谈:软考政策、考前复习方法及考场技巧
  7. android 怎么自定义任务栈,Android中的Activity详解--启动模式与任务栈
  8. 控制附件的大小 php,wordpress如何修改默认上传附件限制大小
  9. Kubernetes(十七) 基于NFS的动态存储申请
  10. dep指定版本 go_Go 包管理工具-dep
  11. NYOJ201-作业题(最长升降子序列)
  12. 说说BXP的实际中的应用(转)
  13. android表格布局介绍,TableLayout表格布局详解
  14. VC 使用msxml6.dll动态链接库中的函数读写XML文件
  15. 创建订单 / 下单接口参数说明
  16. kali虚拟机-----破解wifi密码(WiFi渗透)
  17. ESP8266-01 MQTT固件烧录并连接阿里云服务器
  18. CorelDRAW教程分享:绘制流程图简单方法分享
  19. UUID去横杠的5种方式
  20. 【MySQL学习】4、MySQL存储过程和函数

热门文章

  1. MS SQL数据库备份和恢复存储过程
  2. 算法高级(47)-AI现在都可以写代码了-辅助编程
  3. java打印日期序列,Java GSON-日期格式
  4. 技巧:在Silverlight中如何访问外部xap文件中UserControl
  5. chrome 发送请求出现:Provisional headers are shown 提示
  6. [wordpress]更新插件时,免去FTP操作
  7. windows下端口占用解决方法-查看和杀死占用端口进程
  8. 昔日光伏巨头赛维LDK迎“接盘侠” 平煤系深度整合产业链
  9. android 自定义View 的详细介绍
  10. Python 中xrange和range区别