簡體   English   中英

在手臂處理器上測試FPU

[英]Testing FPU on arm processor

我正在使用包含i.MX6 ARM處理器的Wandboard-Quad。 該處理器具有我要使用的FPU。 在開始之前,我想測試一下我將獲得多少改進。 我有一個基准算法,並且沒有優化就嘗試過,並且使用-mfpu = vfp,似乎沒有任何改進-我的確得到了優化= 3的改進。

我正在使用arm-linux-gnueabi庫-關於什么是不正確的以及如何確定是否使用FPU有什么想法?

謝謝亞當

查看帶有-S標志的匯編器輸出,並查看是否生成了任何fpu指令。 那可能是最簡單的事情。

除此之外,您的算法很有可能使用浮點運算,因此很少有這種用法被加載和卸載FPU寄存器所掩蓋。 在這種情況下,代碼其他部分中的O3優化將使您獲得獨立於FPU使用情況的收益。

-mfpu選項僅在GCC執行矢量化時有效。 向量化本身需要合理的優化級別(最小值為-O2-ftree-vectorize帶有-ftree-vectorize選項)。 因此,請嘗試-O3 -ftree-vectorize -mfpu=vfp以利用FPU並針對簡單的-O3級別測量差異。

有關可能需要-funsafe-math-optimizations情況,另請參見ARM GCC文檔

如果不進行任何優化,則GCC的輸出效率非常低,您實際上可能無法測量軟件和硬件浮點之間的差異。

要查看FPU增加的好處,您需要以一致的優化級別進行測試,然后使用-msoft-float-mhard-float

這將迫使編譯器鏈接到不同的庫,並對浮點操作進行函數調用,而不是使用本機指令。 基礎庫仍然有可能使用硬件浮點,但是我不必擔心太多。

您可以使用-mfpu=選擇不同的FP指令集。 對於i.MX6,我認為您需要-mfpu=neon ,因為那應該啟用所有適用的浮點指令(而不僅僅是NEON指令)。

暫無
暫無

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

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