23.07.2013 Views

Solutions Brief Title – 18pt - HP

Solutions Brief Title – 18pt - HP

Solutions Brief Title – 18pt - HP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

宣告,您必須瞭解這對您的應用程式來說是否安全。 好,如果使用 -ipo 的話,編譯器會自行推論出來,所以您<br />

不必親自判斷是否能套用那個最佳化標幟。 若採用 +O4 層級並且加入 +Onolimit 選項,這個選項會命令編譯<br />

器在編譯期間必須非常主動,而且不必擔心編譯時間;編譯器就會執行整個程式指向分析,這項非常強大的功能<br />

可以產生別名分析,以便送入編譯的其餘部分中,可容許編譯器進行更多的主動程式碼轉換。 此外,我們也用<br />

IPO 執行跨檔案內嵌。<br />

失效的變數與函數會被移除。 我們執行變數私有化,並且也將簡短資料最佳化。 這兩項、也就是最後兩項的變<br />

數私有化與簡短資料最佳化可以改善資料存取序列。 此外,我們也會執行間接呼叫升級。 對應用程式來說的好<br />

處在於,因為您有了增強的別名分析,編譯器只要知道哪些記憶體存取彼此有別名關係、哪些資料彼此有別名關<br />

係,就能執行更多主動程式碼轉換與程式碼排程。<br />

應用程式若含有許多檔案間的呼叫,最好加以最佳化,因為您可以執行這種跨檔案的內嵌;應用程式若執行許多<br />

間接呼叫、或有許多虛擬函數,也最好加以最佳化。 此外,使用 IPO 而套用的一些最佳化項目,能夠改進資料<br />

存取的行為,所以若能運用程序間的最佳化,資料快取的行為和資料 TLB 的行為就可以大幅改進。<br />

[下一張投影片]<br />

我想談的下一個最佳化標幟是 +Ofast 選項。 剛才提過,這個選項是綜合各種選項,對多數應用程式而言一般會<br />

非常有效。<br />

這個選項是一些其他選項的別名,為了舉例,我在這裡列出所含的選項。 +Onolimit 選項讓編譯器能運用更長的<br />

編譯時間,以讓較大的程式能夠充分最佳化。 根據預設,編譯器會儘量在特定預算編譯時間內進行最佳化,但<br />

是如果超過這個時間,編譯器可能會捨棄那個最佳化層級,以免在編譯上頭花費過長的時間。 如果使用<br />

+Onolimit,它會要編譯器較為主動,不必擔心編譯時間,若應用程式含有一些大型的程序,就非常有利於獲得<br />

最佳效能。 +Ofltacc = relaxed 選項可啟用其他的浮點數最佳化功能,某些情形下會影響精確度。 有幾張投影<br />

片會再說明得更詳細一點。<br />

另外,也包括啟用清除為零的捨入模式的 +FPD 選項。 還有 +DSnative 選項,能告訴編譯器要為執行編譯器的<br />

硬體主動進行程式碼排程。 這一點很重要,因為根據預設,編譯器會運用混合排程模式。 有一些 Itanium 的實<br />

作略有差異,編譯器預設會以一般最佳的方式為程式碼排程,導致進行的處理對於 Itanium 的特定實作來說或許<br />

並非最好,但就整體實作而言確實良好;要是使用 +DSnative,它會要編譯器針對特定實作替程式碼排程,也就<br />

是您目前所編譯的實作,這對於從那項 Itanium 實作之中獲取最佳效能而言非常的好用。<br />

另外,也包含能夠控制指令和資料頁面大小的選項。 預設的頁面大小相當小,用這個選項可以取得 1M 這樣大<br />

得許多的頁面,對於減少資料 TLB 遺漏與指令 TLB 遺漏很有幫助。 此外還包括能告訴編譯器把共用程式庫的資<br />

料區段合併起來的選項。<br />

[下一張投影片]<br />

再多講一點能夠增加頁面大小的選項,這些是聯結選項,對使用大量記憶體的應用程式來說非常好用,尤其若使<br />

用應用程式時,會發生大量資料 TLB 或指令 TLB 遺漏的情形,這些就是您真的應該考慮使用的選項。 控制資料<br />

虛擬頁面大小與指令虛擬頁面大小兩者的,是兩個不同的選項;另外還有一個聯結選項,它能讓動態載入器把共<br />

用程式庫的所有資料區段合併起來。 如果應用程式聯結了大量的共用程式庫,大可以用它來降低整體的記憶體

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!