- 軟件系統優化
- 郭健美 黃波 劉通宇 林曉東 趙鵬
- 461字
- 2025-08-07 15:12:57
1.6 內建函數
在ICX編譯器開啟-O2優化選項時,會嘗試對程序進行自動向量化優化。自動向量化優化會利用CPU的單指令多數據(Single Instruction Multiple Data,SIMD)特性,生成對應的SIMD指令來提高程序的運行效率。這類SIMD指令通常能夠在較短的時間周期內完成多個數據項的并行處理。但是,編譯器提供的自動向量化能力往往比較有限,這時可以利用Intel編程手冊提供的高級矢量擴展(Advanced Vector eXtension,AVX)內建函數(intrinsic function)進行特定平臺上的專用向量化編程。合理地使用這些內建函數去編寫專用程序,通常能夠在特定平臺上生成性能更高的代碼。
代碼1.9給出了參考實現,它在代碼1.8的基礎上加入了lntel AVX內建函數,利用AVX內建函數替代了原來最內層的矩陣乘法操作。
代碼1.9 采用了Intel AVX內建函數的矩陣乘法


注意,在使用ICX編譯器編譯包含AVX內建函數的代碼時,需要在編譯選項中添加-march=native選項,例如:

經測試,上述代碼的運行時間為0.36秒。
從實驗結果可見,采用AVX內建函數生成的代碼的運行性能更高。需要說明的是,這里的-march=native選項也會指導編譯器生成更符合當前CPU架構特性的指令序列,這樣的指令序列往往可以在CPU流水線中有更高的執行效率,進而提升程序的實際運行性能。
推薦閱讀
- 從零構建知識圖譜:技術、方法與案例
- Modular Programming with Python
- Mobile Web Performance Optimization
- C程序設計簡明教程(第二版)
- 大學計算機應用基礎實踐教程
- 編程卓越之道(卷3):軟件工程化
- 數據結構(Python語言描述)(第2版)
- Cassandra Data Modeling and Analysis
- Nexus規?;疭crum框架
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- Windows Embedded CE 6.0程序設計實戰
- Couchbase Essentials
- C++程序設計教程(第2版)
- HTML5+CSS3+jQuery Mobile+Bootstrap開發APP從入門到精通(視頻教學版)
- C# 10核心技術指南