簡體   English   中英

使用 O3 激活的編譯標志是什么

[英]what are the compilation flags that are activated by using O3

我們正在將系統中的英特爾編譯器版本從 v14 更改為 v18,通過運行測試,我們注意到 O3 在某些情況下會產生不正確的結果,而相同的代碼在 O3 和 v14 上運行正確。 我想知道這兩個版本之間的優化有何不同,以及如何獲得在每個版本中使用 O3 激活的標志的完整列表。 在此先感謝大家的幫助和建議。

-O3的行為記錄在英特爾網站上: https : //software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference /compiler-options/compiler-option-details/optimization-options/o.html

O3

  • 執行O2優化並啟用更積極的循環轉換,例如 Fusion、Block-Unroll-and-Jam 和折疊 IF 語句。
  • 此選項可以設置其他選項。 這由編譯器決定,具體取決於您使用的操作系統和體系結構。 設置的選項可能會因版本而異。
  • 當 O3 與選項-ax-x (Linux) 或選項/Qax/Qx (Windows) 一起使用時,編譯器會執行比O2更積極的數據依賴性分析,這可能會導致編譯時間更長。
  • 除非發生循環和內存訪問轉換,否則O3優化可能不會導致更高的性能。 與 O2 優化相比,優化在某些情況下可能會減慢代碼速度。
  • 對於具有大量使用浮點計算和處理大型數據集的循環的應用程序,建議使用O3選項。
  • 與非英特爾微處理器相比,共享庫中的許多例程針對英特爾® 微處理器的優化程度更高。

頁面底部列出了“替代選項”,其中僅列出-Od (禁用所有優化:可能不是您想要的)。

所以看起來-O3激活了不能用其他標志表示的優化(所以-O3沒有長格式的等效版本)。

查看英特爾關於用於高級優化的技術的頁面,看起來它們不能按菜單啟用,因此對於 HLO,它是全有或全無,並且使用O2O3啟用(除了O2使用O3的技術)。

其與具有長格式等效項的-Ofast進行比較

Ofast

  • 它設置編譯器選項-O3-no-prec-div-fp-model fast=2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM