C++17 并行排序初体验
MSVC篇
微软在2018年9月份发布博客Using C++17 Parallel Algorithms for Better Performance宣布正式支持C++17的并行算法。它的使用方法和C++17标准基本一致,不用作太多改动。
由于多核会让clock_t
多次累计,因此计时得换用chrono
提供的时间函数。至于究竟使用high_resolution_clock
还是system_clock
倒是无所谓,因为我们测试数据量较大,用时相对会长一点。
最亮眼的一句是:
#include <execution>
复制代码
有了它之后就可以发挥多核计算的性能了。由于没有在Windows的较高机器配置,仅仅测试了小数据量情况,一次顺利通过。
ICC篇
为了在Mac上体验C++17的并行新特性,我申请了教育版套装Intel® Parallel Studio XE 2019,其中包含了Intel® C++ Compiler 19.0 for macOS。虽然也有很多使用的曲折,但感觉它将来可以做得更完善一些。
这个编译器使用很简单,参考安装路径下的这篇帮助即可:
opt/intel/documentation_2019/en/compiler_c/ps2019/get_started_mc.htm
复制代码
使用C++编译器:
icpc source.cpp
复制代码
要想体验并行,可以根据这篇Get Started with Parallel STL的指点配置。使用上基本上都遵循了C++17标准,但是包含头文件得加上pstl
。比如要使用并行的算法algorithm
,在原始的头文件基础上还得追加:
#include <pstl/execution>
#include <pstl/algorithm>
复制代码
这点和标准不太一致。
我们考虑对10亿个double
型随机数进行排序,采用均匀分布。一行代码即可:
std::sort(std::execution::par, V.begin(), V.end());
复制代码
实测速度是非常的惊人:11秒!
由于使用了并行排序,实际占用内存量会更大且每次执行不同,但不会超过原有向量两倍也即15GB。这说明了内存很重要。
其他
clang和gcc:得加油,得加油,得加油。
C++17 并行排序初体验相关推荐
- 《编程之美——微软技术面试心得》一摞烙饼的排序初体验
<编程之美>读书笔记:1.3 一摞烙饼的排序 问题: 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个 ...
- 微软并行库初体验之TPL
前端时间因为要做个大数据量分析,所以用C#写了个脚本跑,不过由于算法复杂度问题,初步估计需要40小时才能跑完.为了加快运算,我一开始想到了 并行计算,利用MPICH或其他类似的分布式计算框架开发,不过 ...
- 我的Go+语言初体验——Go+简单应用—选择排序
"我的Go+语言初体验" | 征文活动进行中......
- 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)
2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...
- 树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED
开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图 ...
- python简单体育竞技模拟_python初体验 —— 模拟体育竞技
python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
- python模拟足球比赛_python初体验 —— 模拟体育竞技
python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
- 【Spark深入学习 -15】Spark Streaming前奏-Kafka初体验
----本节内容------- 1.Kafka基础概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知识 1.2.2.架构和原理 1.2.3.基本概念 1.2.4.kafka特点 2.Kafk ...
- MapReduce编程初体验
需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...
- Java8初体验(二)Stream语法详解(转)
本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...
最新文章
- linespace 自动生成线性向量的API
- 【CVPR2020-中科院计算所】多模态GNN:在视觉信息和场景文字上联合推理
- 吸引:由《你的知识需要管理》编辑过程想到的
- WSO2 ESB(1)
- Prototype模式
- (88)FPGA二分频设计,面试必问(十二)(第18天)
- Docker 三剑客之 Docker Compose
- 2018华为软挑参赛体验
- CMM&CMMI 简介
- 交换机的RTU License 华为S5700交换机
- 读《美国交通信号配时实践经验》后的感受
- 快来加入阿里云大学【云学院】班级助理—机会稍纵即逝,错过遥遥无期
- 三星nand flash K9K8G08U0M详解
- [UE4][Material] Spline样条网格材质消失问题记录
- 整理了173家国企清单,跳槽必备!
- goldendict 屏幕取词
- 34.UCASE() LCASE() 函数
- CrawlSpider实现微信小程序社区爬虫
- 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作
- Geospatial Data Science (4): Spatial weights