公开“英特尔多核平台编程优化大赛”优化报告及源代码
本系列文章欢迎转载、打印、分发等,但不可用于商业用途,任何时候必须保留全文完整,并声明转载自恋花蝶的博客(http://blog.csdn.net/lanphaday),谢谢。
这次Intel的优化比赛时间比较长,所以我也能够在周未和晚上的业余时间里参加了这个比赛,感觉学到很多东西,所以就在CSDN论坛上号召大家公开各自己的优化报告和源代码,得到了大家的响应,这让我由衷地高兴。参加比赛的很多高手,达到了匪夷所思的速度,这些公开的优化报告和源代码,必定能够增进大家的知识,我很乐意参与比赛,更乐意公开自己的优化报告和源代码。
在比赛中,我通过以面若干种优化方法优化后,我还尝试了手写SSE2进行汇编优化,但因为并不十熟悉汇编,所以没有能够成功。为了方便查看,制作了下面的数据比对表:
优化方法 运行时间 加速比(相对于上一种优化)
最初未优化版本 4.55s --
用乘法替换pow函数 3.28 1.38
启用SSE2 2.84 1.15
使用ICC 1.991.42
使用MKL vdInvSqrt函数 1.21 1.64
使用OpenMP,static调度0.95 1.27
使用OpenMP,guided调度,倒序循环0.641.48
使用/fp:fast参数,针对CPU优化,利用数学公式减少常数运算0.571.12
提高cache命中率 0.51 1.11
参照上表,我们可以看出用乘法替换pow函数、使用ICC、使用MKL和使用guided调用方法和倒序循环取得了极佳的优化效果,这些对以我们以后在其它工作中进行优化提供了高阶的指导方针。
因为使用WPS进行排版的文档粘贴到CSDNblog时效果不好,所以变成上图那样了,呵呵,大家可以下载完整版本的文档跟源码来查看。下面是文档的目录:
程序编译和运行的方法 1
1、编辑环境: 1
2、编译步骤: 1
3、运行方法: 3
优化工作的主要步骤与优化方法的说明3
1、Vtune分析热点,替换pow函数为两数相乘的宏,减少变量使用 4
2、启用SSE2优化 4
3、使用ICC 5
4、使用MKL vdInvSqrt()函数 5
5、并行,OpenMP的ShowTime 5
6、新并行!TProfiler临危救主! 6
7、零碎而有效的几点优化方式 7
8、Vtune,王者归来,提高cache命中率 7
数据比对 7
参赛感受 8
大家可以从以下地址下载优化报告和源代码压缩包:
http://www.cppblog.com/Files/laiyonghao/LaiYonghao_potential.rar
分享到:
相关推荐
在T2050笔记本上测试结果双精度0.671秒 单精度:0.312秒 希望能看到其他高手的代码 学习学习! :) 更希望 高手指点更多的优化点. 优化建议.
为了使开发人员在面对多核体系结构,以及需要多线程编程时有一本好的参考手册 同时为高等学校计算机专业的师生进行多核多线程程序教学时提供一本有价值的参考书 英特尔软件学院联合大学教师编纂了这本《英特尔多核/...
intel英特尔多核_多线程技术中文版
代表性芯片 超多核和可重构多核 多核编程-多线程 多核程序性能和优化
英特尔多核-多线程技术,适于服务器编写,不错的资料!
英特尔多核多线程技术中文版带书签
为了使开发人员在面对多核体系结构,以及需要多线程编程时有一本好的参考手册 同时为高等学校计算机专业的师生进行多核多线程程序教学时提供一本有价值的参考书 英特尔软件学院联合大学教师编纂了这本《英特尔多核/...
英特尔多核多线程技术
这是源自于英特尔软件网络的多线程技术资料,其中详细汇集了多线程编程方法的综述,Linux/Unix多线程编程,Windows多线程编程,以及多线程程序设计中的常见问题及解决途径。
英特尔多核CPU正将数字娱乐带入家庭.pdf
“英特尔杯”全国计算机多核程序设计大赛源码 供大家讨论.
多核多线程-并发编程简述.pdf
Intel的多核处理器编码技术的介绍。 初学者可以看一看。
Intel多核多线程编程基础(Linux)
对并行编程很有帮助的,最新的并行编程入门课件
释放多核潜能.英特尔Parallel.Studio并行开发指南 采用工程理论、工具详解和实际安全分析相结合的方式,全面介绍英特尔Parallel Studio工具集的使用
基于动作识别的轮椅控制系统,整体报告论述了完整方案的实现方法和测试数据