在基于英特爾處理器的新一代 Mac* 硬件上,提高了計(jì)算密集型應(yīng)用程序的性能?!坝⑻貭?Fortran 編譯器 Mac OS* 標(biāo)準(zhǔn)版”支持多線程應(yīng)用程序的開發(fā)、同 Xcode 2.2.1 相集成,并支持 Apple 框架。“英特爾 Fortran 編譯器 Mac OS 標(biāo)準(zhǔn)版”完全符合各項(xiàng)標(biāo)準(zhǔn),包括支持 Fortran 95、Fortran 90、Fortran 77、Fortran 66 (FORTRAN IV) 以及 Fortran 2003 中所選的新增功能。
在基于英特爾處理器的新一代 Mac* 硬件上,提高了計(jì)算密集型應(yīng)用程序的性能?!坝⑻貭?Fortran 編譯器 Mac OS* 標(biāo)準(zhǔn)版”支持多線程應(yīng)用程序的開發(fā)、同 Xcode 2.2.1 相集成,并支持 Apple 框架。“英特爾 Fortran 編譯器 Mac OS 標(biāo)準(zhǔn)版”完全符合各項(xiàng)標(biāo)準(zhǔn),包括支持 Fortran 95、Fortran 90、Fortran 77、Fortran 66 (FORTRAN IV) 以及 Fortran 2003 中所選的新增功能。
Mac 與多核心功能概述
- 以下特性專門講述基于英特爾® 處理器的新 Mac 機(jī)的體系結(jié)構(gòu)功能。這里只對(duì)每項(xiàng)功能作簡(jiǎn)要的介紹,同時(shí)提供指向更完整說明的鏈接。
- 多線程應(yīng)用程序支持(包括 OpenMP* 與自動(dòng)并行功能)讓您可以充分利用多核心技術(shù)(如英特爾酷睿雙核處理器)的優(yōu)勢(shì)。
- Xcode* 2.2.1 集成讓開發(fā)人員可以繼續(xù)使用自己熟悉的這個(gè)環(huán)境,同時(shí)還能從英特爾編譯器先進(jìn)的功能中獲益匪淺。
- 包含與 GCC 4.0 互操作的功能:同 GCC 在源代碼、二進(jìn)制代碼以及命令行等方面保持著優(yōu)異的兼容性。
- 對(duì) Apple 框架的支持使得這個(gè)強(qiáng)大的 Apple 編程模型可以在基于英特爾酷睿雙核處理器的平臺(tái)上很好地工作。
先進(jìn)的優(yōu)化功能概述
- 基于英特爾處理器的 Mac 硬件同樣可以從各項(xiàng)先進(jìn)的優(yōu)化功能中獲益,這里只簡(jiǎn)要介紹其中的一小部分,同時(shí)提供指向更完整說明的鏈接。
- 過程間優(yōu)化 (IPO) 對(duì)于包含常用中、小函數(shù)的程序,特別是循環(huán)內(nèi)包含調(diào)用的程序,可以極大地提高其性能。
- 檔案導(dǎo)引優(yōu)化 (PGO) 通過減少指令緩存反覆、重新組織代碼布局、縮減代碼長(zhǎng)度以及減少分支預(yù)測(cè)失誤,來幫助提高應(yīng)用程序的性能。
- 自動(dòng)矢量器可以將代碼并行化,并進(jìn)行數(shù)據(jù)對(duì)齊(包括進(jìn)行循環(huán)剝離),以生成對(duì)齊的加載,進(jìn)行循環(huán)展開以匹配整個(gè)緩存線的預(yù)取。
- 高級(jí)別優(yōu)化 (HLO) 通過使用循環(huán)變換和預(yù)取功能來實(shí)現(xiàn)主動(dòng)優(yōu)化。
- 英特爾® 調(diào)試器對(duì)于已針對(duì)英特爾® 體系結(jié)構(gòu)進(jìn)行過優(yōu)化的代碼,可以提高其調(diào)試過程的效率。
深入介紹 Mac* 與多核心功能
- 這部分詳細(xì)介紹上文“Mac 與多核心功能概述”部分簡(jiǎn)要介紹的各項(xiàng)功能。
多線程應(yīng)用程序支持:
- OpenMP 與自動(dòng)并行功能幫助將串行應(yīng)用程序轉(zhuǎn)換成并行應(yīng)用程序,使您可以充分利用多核心技術(shù)(如英特爾® 酷睿™ 雙核處理器)以及對(duì)稱多處理系統(tǒng)的優(yōu)勢(shì):
- OpenMP* 是可移植多線程應(yīng)用程序開發(fā)的行業(yè)標(biāo)準(zhǔn)。它在細(xì)粒度(循環(huán)級(jí)別)與粗粒度(函數(shù)級(jí)別)線程技術(shù)上都非常有效。
- 對(duì)于將串行應(yīng)用程序轉(zhuǎn)換成并行應(yīng)用程序,OpenMP 指令是一種簡(jiǎn)單但是卻很強(qiáng)大的手段,通過這種轉(zhuǎn)換,由于在多核心與對(duì)稱多處理器系統(tǒng)上并行執(zhí)行,性能可能會(huì)有很大幅度的提升。
- 自動(dòng)并行通過自動(dòng)將循環(huán)線程化來提高應(yīng)用程序在多處理器系統(tǒng)上的性能。此選項(xiàng)檢測(cè)能安全地并行執(zhí)行的并行循環(huán),然后自動(dòng)生成多線程代碼。
- 自動(dòng)并行功能使得用戶不必去處理迭代劃分、數(shù)據(jù)共享、線程調(diào)度以及同步等細(xì)枝末節(jié)。它還能夠利用多處理器系統(tǒng)與支持“超線程技術(shù)”的系統(tǒng)所帶來的性能優(yōu)勢(shì)。
- 如需有關(guān)多線程應(yīng)用程序支持的詳細(xì)信息,請(qǐng)?jiān)L問英特爾的線程技術(shù)開發(fā)人員中心。
Xcode 2.2.1 集成
- “英特爾 C++ 編譯器 Mac OS 標(biāo)準(zhǔn)版與專業(yè)版”同 Xcode 2.2.1 兼容,使得開發(fā)人員可以在使用這個(gè)主流 IDE 的同時(shí),還可以充分利用英特爾提供的各項(xiàng)先進(jìn)的優(yōu)化功能。
- 通過使用“英特爾 C++ 編譯器 Mac OS 版”與 GCC for PowerPC*,可以從 Xcode 環(huán)境中生成“C/C++ 通用二進(jìn)制代碼”,保持與 GCC 4.0 的兼容性。按照設(shè)計(jì),“通用二進(jìn)制代碼”在一個(gè)編譯后的軟件包中綜合了 PowerPC 與英特爾這兩種體系結(jié)構(gòu)的本機(jī)代碼,簡(jiǎn)化了這兩種體系結(jié)構(gòu)之間的轉(zhuǎn)換。
- 對(duì)于不含處理器相關(guān)內(nèi)容的高級(jí)代碼,只需極少量的更改(如果有),便可以創(chuàng)建“通用二進(jìn)制代碼”。對(duì)于包含硬件相關(guān)內(nèi)容的底層代碼,挑戰(zhàn)性要更大一些。
GCC 4.0 互操作性
- GNU C/C++ 兼容性功能可以確保同 GNU C 在源代碼與目標(biāo)代碼方面保持兼容。“英特爾 C++ 編譯器 Mac OS 標(biāo)準(zhǔn)版與專業(yè)版”支持 GCC 擴(kuò)展,可以幫助輕松移植應(yīng)用程序,使得您只要重新編譯現(xiàn)有的軟件,便能改善應(yīng)用程序的性能。另外,您也不用徹底換掉編譯器,而只需在構(gòu)建應(yīng)用程序時(shí),使用“英特爾 C++ 編譯器 Mac OS 版”編譯特定的模塊,然后將它們鏈接到 GNU C 編譯的模塊即可。 “英特爾 C++ 編譯器 Mac OS 版”還符合 C++ ABI 標(biāo)準(zhǔn),與 GCC 4.0 在二進(jìn)制代碼方面的兼容性更為強(qiáng)大。
對(duì) Apple 框架的支持
- Apple 框架是用于分發(fā)共享資源的一種特殊形式的軟件包,這些共享資源包括庫(kù)代碼、資源文件、頭文件以及參考文檔。它們?cè)谑褂脛?dòng)態(tài)共享庫(kù)方面非常靈活,這一點(diǎn)常常很受歡迎。如需有關(guān) Apple 框架的詳細(xì)信息,請(qǐng)?jiān)L問 Apple 網(wǎng)站*。
深入介紹先進(jìn)的優(yōu)化功能
- 過程間優(yōu)化 (IPO)
這部分詳細(xì)介紹上文“Mac 與多核心功能概述”部分簡(jiǎn)要介紹的各項(xiàng)功能。
圖 1. 過程間優(yōu)化的過程。
如“圖 1”所示,IPO 過程要求首先使用 IPO 選項(xiàng)編譯源文件,然后創(chuàng)建包含供編譯器使用的中間語(yǔ)言 (IL) 的目標(biāo) (.o) 文件。進(jìn)行鏈接時(shí),編譯器合并所有的 IL 信息,并通過分析找出其中有待優(yōu)化的地方。IPO 過程中所采取的典型優(yōu)化措施包括:過程內(nèi)嵌與重新排序、消除死(執(zhí)行不到的)代碼以及常數(shù)傳播,也就是使用已知的值代替常數(shù)。由于添加了多個(gè)過程的上下文,可以安全地執(zhí)行更進(jìn)一步的優(yōu)化,因此IPO 可以在過程內(nèi)級(jí)別上執(zhí)行進(jìn)一步的優(yōu)化。
- 檔案導(dǎo)引優(yōu)化 (PGO)
圖 2. 檔案導(dǎo)引優(yōu)化的過程。
“檔案導(dǎo)引優(yōu)化”(PGO) 編譯過程使“英特爾 C++ 編譯器”可以更好地利用處理器微體系結(jié)構(gòu),更有效地使用指令調(diào)度與高速緩存,并可以更好地執(zhí)行分支預(yù)測(cè)。通過重新組織代碼布局以減少指令緩存反覆、縮減代碼長(zhǎng)度并減少分支預(yù)測(cè)失誤,它可以幫助提高應(yīng)用程序性能。
如“圖 2”所示,PGO 過程分為三個(gè)階段。這些步驟包括:1) 應(yīng)用程序編譯階段,此時(shí)進(jìn)行指令插入;2) 檔案生成階段,此時(shí)執(zhí)行并監(jiān)視應(yīng)用程序;3) 重新編譯階段,此時(shí)使用第一次運(yùn)行期間采集的數(shù)據(jù)幫助進(jìn)行優(yōu)化。下面介紹多個(gè)影響檔案導(dǎo)引優(yōu)化的代碼長(zhǎng)度:
- 基本指令塊與函數(shù)排序 - 將經(jīng)常執(zhí)行的指令塊與函數(shù)放在一起,以充分利用指令緩存的區(qū)域性。
- 輔助內(nèi)嵌決策 - 內(nèi)嵌經(jīng)常執(zhí)行的函數(shù),這樣雖然會(huì)增加代碼長(zhǎng)度,但在對(duì)性能影響最大的地方卻可以得到很好的補(bǔ)償。
- 輔助矢量化決策 - 對(duì)遍歷計(jì)數(shù)高且經(jīng)常執(zhí)行的循環(huán)進(jìn)行矢量化處理,這樣雖然會(huì)增加代碼長(zhǎng)度,但性能的提高卻可以減輕其負(fù)面影響。
- 自動(dòng)矢量器
矢量化功能自動(dòng)對(duì)代碼進(jìn)行并行處理,以最大限度發(fā)揮處理器的潛能。這種先進(jìn)的優(yōu)化技術(shù)通過利用 MMX™ 技術(shù)、SSE、SSE2 以及 SSE3 指令來分析循環(huán),并確定何時(shí)可以安全有效地并行執(zhí)行多個(gè)循環(huán)迭代。“圖 3”用圖形表示經(jīng)過矢量化的循環(huán),它在一次 SSE2 運(yùn)算中計(jì)算四個(gè)迭代。使用矢量化功能可以優(yōu)化應(yīng)用程序代碼,在英特爾處理器上運(yùn)行時(shí),可以充分利用這些新的擴(kuò)展功能。提供的功能包括支持各種先進(jìn)的動(dòng)態(tài)數(shù)據(jù)對(duì)齊策略,其中有可以生成對(duì)齊加載的循環(huán)剝離技術(shù),可以匹配整個(gè)緩存線預(yù)取的循環(huán)展開技術(shù)等。
圖 3. 矢量器工作原理
- 高級(jí)別優(yōu)化 (HLO)
數(shù)據(jù)預(yù)取是規(guī)避內(nèi)存訪問延遲的有效技術(shù),可以在許多計(jì)算密集型應(yīng)用中顯著提高性能。數(shù)據(jù)預(yù)取在程序中的特定點(diǎn)上為所選數(shù)據(jù)引用插入預(yù)取指令,使引用的數(shù)據(jù)項(xiàng)在實(shí)際使用之前就已盡可能地移近處理器(放入高速緩存)。
循環(huán)展開將兩個(gè)或更多個(gè)循環(huán)迭代合并到一起,以減少循環(huán)計(jì)數(shù)。循環(huán)展開雖然常常會(huì)導(dǎo)致代碼長(zhǎng)度增加,但它可以減少必須執(zhí)行的指令數(shù)。下面是一個(gè)非常簡(jiǎn)單的循環(huán)展開示例,它從循環(huán)中刪除了一個(gè)分支:
- 英特爾® 調(diào)試器
“英特爾調(diào)試器”支持對(duì)優(yōu)化過的代碼進(jìn)行調(diào)試(也就是說,對(duì)為了在特定的硬件體系結(jié)構(gòu)上取得最佳執(zhí)行效果而大幅改動(dòng)過的代碼進(jìn)行調(diào)試)。對(duì)于優(yōu)化過的代碼的調(diào)試,英特爾編譯器產(chǎn)生符合多項(xiàng)標(biāo)準(zhǔn)的調(diào)試信息,支持英特爾編譯器的所有調(diào)試器均可使用這些信息。“英特爾調(diào)試器”支持多核心體系結(jié)構(gòu),能夠調(diào)試多線程應(yīng)用程序,并提供以下相關(guān)的功能:
- 全部停止/全部執(zhí)行模型(即,一個(gè)線程停止時(shí)所有的線程都停止,一個(gè)線程恢復(fù)執(zhí)行時(shí)所有的線程也都恢復(fù))。
- 列出創(chuàng)建的所有線程。
- 在各個(gè)線程之間切換焦點(diǎn)。
- 檢查詳細(xì)的線程狀態(tài)。
- 設(shè)置斷點(diǎn)(包括所有的停止、跟蹤及觀察形式),并顯示所有線程或一部分線程的堆?;厮?/li>
- 內(nèi)置的圖形用戶界面提供一個(gè)“線程”面板(在“當(dāng)前源代碼”窗格中),創(chuàng)建線程時(shí)激活該面板,供操作員選擇線程焦點(diǎn)并顯示相關(guān)的細(xì)節(jié)
- 最近改進(jìn)過的“GNU 項(xiàng)目調(diào)試器”(GDB 調(diào)試器)也可用于并行應(yīng)用程序中。如需有關(guān)詳細(xì)信息,請(qǐng)參閱英特爾調(diào)試器技術(shù)白皮書 (PDF 211KB)。
- 兼容性與靈活性
符合多項(xiàng)標(biāo)準(zhǔn)
“英特爾 C++ 編譯器 Mac OS 標(biāo)準(zhǔn)版與專業(yè)版”完全符合多項(xiàng)標(biāo)準(zhǔn),其中包括對(duì)以下標(biāo)準(zhǔn)的支持:
- ANSI C/C++ 標(biāo)準(zhǔn)
- ISO C/C++ 標(biāo)準(zhǔn)
- GNU 內(nèi)嵌匯編代碼
- C++ ABI 目標(biāo)模型
- 高級(jí)別優(yōu)化 (HLO)
- 數(shù)字家庭、游戲及娛樂應(yīng)用得到了“英特爾 C++ 編譯器 Mac OS 標(biāo)準(zhǔn)版與專業(yè)版”很好地支持,多核心平臺(tái)上的并行處理功能在下載、安全性及后臺(tái)其它任務(wù)的處理方面表現(xiàn)出色,不會(huì)給用戶體驗(yàn)造成任何負(fù)面影響。
- 移動(dòng)計(jì)算軟件從英特爾編譯器的功能中受益匪淺:在多核心移動(dòng)計(jì)算平臺(tái)(如基于英特爾酷睿雙核處理器的平臺(tái))上,它不僅可以提高性能,而且生成的應(yīng)用程序功耗很低,從而可以延長(zhǎng)電池使用時(shí)間。
- 圖形設(shè)計(jì)一直以來都是 Macintosh 平臺(tái)表現(xiàn)最為突出的關(guān)鍵領(lǐng)域。通過使用英特爾編譯器來縮短延遲與渲染時(shí)間,同時(shí)還允許軟件架構(gòu)師來添加其它的功能,而不會(huì)對(duì)性能造成無法接受的影響,因此它能帶來顯著的性能優(yōu)化。
系統(tǒng)要求
主機(jī)系統(tǒng)
目標(biāo)系統(tǒng)