公開“英特爾多核平台編程最佳化大賽”最佳化報告及原始碼

來源:互聯網
上載者:User

公開“英特爾多核平台編程最佳化大賽”最佳化報告及原始碼

本系列文章歡迎轉載、列印、分發等,但不可用於商業用途,任何時候必須保留全文完整,並聲明轉載自戀花蝶的部落格(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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.