Huawei 華為鯤鵬 AvxToNeon 系統庫


 

AvxToNeon是一款接口集合庫。當使用Intrinsics接口的應用程序從傳統平台遷移到鯤鵬計算平台時,由於各個平台的Intrinsic函數定義不同,需要逐一對於Intrinsic函數重新進行適配開發。針對該問題,我們提供了AVX2Neon模塊,將傳統平台的Intrinsic接口集合使用鯤鵬指令重新實現,並封裝為獨立的接口模塊(C語言頭文件方式),以減少大量遷移項目重復開發的工作量。 用戶可以通過將頭文件導入應用程序即可繼續使用傳統平台的Intrinsic函數。

Intrinsic:這里指的是基於gcc編譯的一種內建函數,一般是對處理器高級指令(如向量化指令等)的C內聯函數格式封裝,各個處理器廠商的接口定義存在較大差異。

 

將依賴Intel Intrinsic的應用快速遷移到鯤鵬生態。 適配函數以頭文件方式集成到Porting Advisor工具,通過工具識別遷移點,並提供一鍵式快速遷移。

 

       

 


當將使用Intel內部指令的應用程序從x86架構移植到Kunpeng架構時,由於Arm64指令名稱和功能與x86不同,因此需要進一步開發指令。結果,導致巨大的移植工作量。在該項目中,常用的AVX指令被封裝為獨立的模塊,以減少重復的開發工作量。AVX指令被相關的NEON SIMD指令替代,而指令名稱和功能保持不變。用戶可以通過將相關的頭文件導入應用程序軟件來調用相應的指令。

要求

  • 處理器:Kunpeng 920

指南

在源代碼目錄中,源目錄包含功能實現文件。avx512intrin.h,avxintrin.h和emmintrin.h文件實現指令翻譯,而avx2neon.h文件包含它們的頭文件。如果應用程序軟件包含avx2neon.h,則用戶可以執行指令。使用頭文件時,用戶需要添加編譯選項,例如ARCH_CFLAGS = -march = armv8-a + fp + simd + crc。

測試

該項目還為開發人員提供了接口測試用例。測試用例的邏輯實現代碼位於tests目錄中,而測試用例的輸入數據和預期輸出位於data目錄中。使用以下命令執行測試用例:

(1) cd tests
(2) make
(3) ./test

  

執行測試命令,控制台上將顯示類似以下信息:

Running Test MM512_CASTPS128_PS512

...

Running Test MM256_SET_EPI32

AVX2NEONTest Complete: Passed 265 tests: Failed 0

  

此項目中提供的所有說明均已在CentOS Linux版本7.6.1810(AltArch)和EulerOS V2.0SP8,GCC 7.3,GCC 4.8.5和GCC 9.2.0中進行了驗證。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM