公开“英特尔多核平台编程优化大赛”优化报告及源代码

news/2024/7/5 8:16:17

公开“英特尔多核平台编程优化大赛”优化报告及源代码

本系列文章欢迎转载、打印、分发等,但不可用于商业用途,任何时候必须保留全文完整,并声明转载自恋花蝶的博客(http://blog.csdn.net/lanphaday),谢谢。 

       这次Intel的优化比赛时间比较长,所以我也能够在周未和晚上的业余时间里参加了这个比赛,感觉学到很多东西,所以就在CSDN论坛上号召大家公开各自己的优化报告和源代码,得到了大家的响应,这让我由衷地高兴。参加比赛的很多高手,达到了匪夷所思的速度,这些公开的优化报告和源代码,必定能够增进大家的知识,我很乐意参与比赛,更乐意公开自己的优化报告和源代码。

        在比赛中,我通过以面若干种优化方法优化后,我还尝试了手写SSE2进行汇编优化,但因为并不十熟悉汇编,所以没有能够成功。为了方便查看,制作了下面的数据比对表:
优化方法                                     运行时间                                        加速比(相对于上一种优化) 
最初未优化版本                              4.55s                                               -- 
用乘法替换pow函数                      3.28                                                1.38 
启用SSE2                                       2.84                                                1.15 
使用ICC                                          1.99                                                1.42 
使用MKL vdInvSqrt函数                 1.21                                               1.64 
使用OpenMP,static调度             0.95                                               1.27 
使用OpenMP,guided调度,倒序循环 0.64                                     1.48 
使用/fp:fast参数,针对CPU优化,利用数学公式减少常数运算 0.57 1.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





http://www.niftyadmin.cn/n/3647656.html

相关文章

最新Java开发进阶!差点挂在第四面,进阶加薪全靠它!

程序员:给多少工资,干多少事 我们不是经常会看到一个关于西游记的“悖论”吗: 为什么孙悟空初期大闹天宫的时候那么厉害?因为他自己当老板,打一群天庭的打工仔。 为什么取经路上又变得不行了?作为一个打工…

[Python]profile优化实践(基于A*算法)

本文由恋花蝶发表于http://blog.csdn.net/lanphaday欢迎转载,但敬请保留全文完整,并包含本声明.[Python]profile优化实践(基于A*算法)在《用profile协助程序性能优化》一文中,我们学习了python用以协助性能优化的模块——profile/hotshot/timeit等,但缺少…

查漏补缺!三面蚂蚁金服(交叉面)定级阿里P6,真的太香了!

前言 大厂面试真题向来是求职者的最佳练兵场,华为在Java开发工程师招聘中有哪些技术性考察和倾向?那今天咱就给大家分享一下近期的华为5面面经! 注:以下所分享的华为面试问题,相关的答案我也整理出来了,且…

OpenMP与C++:事半功倍地获得多线程的好处(上)

声明:本文并未获得翻译授权,本人翻译这篇文章仅用于学习和研究之用,任何人不得在未经授权之前将原文和译文用以商业用途.因版权原因,暂不建议转载本文.本文发表于http://blog.csdn.net/lanphaday请保留本文完整本文发表于2005年第10期的,英文版本地址:http://msdn.microsoft.co…

毕业工作5年被裁,5面蚂蚁3面拼夕夕2面字节,最全指南

前言 MySQL 是最流行的关系型数据库管理系统(RDBMS)之一。 MySQL作为一个关系型数据库管理系统,因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。虽然功能未必很强大,但因为它…

洞悉MySQL底层架构:数据库事务深入分析,看这篇足矣了!

开头 在开始正文之前,请你先思考几个问题: 你项目中有使用哪些 GOF 设计模式 说一说 GOF 23 种设计模式的设计理念 说说 Spring 框架中如何实现设计模式 假设我是面试官问起了你这些面试题,你该如何回答呢,请先思考一分钟。 …

较高人工智能的人机博弈程序实现(多个算法结合)含C++源码

较高人工智能的人机博弈程序实现(多个算法结合)含C源码本文由恋花蝶最初发表于http://blog.csdn.net/lanphaday上,您可以转载、引用、打印和分发等,但必须保留本文完整和包含本声明,否则必究责任。到昨天晚上,Topcoder Marathon M…

火爆全网MySQL路线笔记!Java后端社招面试经历,系列篇

前言 面试前就有听说过字节比较考验算法,面试的时候果然是,还好自己刷题比较多,这也验证了一个说法,大家在面试字节等目前比较火的互联网公司,一定要记得多刷题,文末会有自己面试的时候准备好的面试题PDF文…