簡體   English   中英

我可以在x86 C程序中模擬ARM NEON嗎?

[英]Can I emulate ARM NEON in an x86 C program?

我正在開發一些數值軟件,其性能很大程度上取決於數值精度(即浮點數,雙精度等)。 我注意到ARM NEON並不完全符合IEEE754浮點標准。 有沒有辦法在x86 CPU上模擬NEON的浮點精度? 例如,模擬NEON SIMD浮點運算的庫。

大概。

我對SSE不熟悉,但你可以強迫許多SSE模式表現得像NEON。 這取決於您的編譯器和可用庫,但請參閱一些Visual Studio FP單元控制功能 這可能足以滿足您的要求。

此外,您可以使用arm_neon.h標頭來確保使用類似的內在函數來完成類似的操作。

最后,如果您真的需要在這些邊界條件下實現這種精度,那么您將需要一個好的測試套件來驗證您是否按預期實現了結果。

最后,即使使用純粹的“C”代碼(通常符合IEEE-754),並且像其他評論者提到的那樣在ARM上使用VFP,您將獲得不同的結果,因為浮點是一個高度...不規則的過程,受制於優化和操作順序的心血來潮。 要使結果與不同的編譯器匹配是很有挑戰性的,更不用說硬件架構了。 例如,要使用gcc在英特爾上獲得非常令人滿意的結果,如果要與CL / MSVS上的/fp:precise進行比較,通常需要使用-ffloat-store標志。

最后,您可能需要接受某種非零容錯。 試圖達到零可能很困難,但如果你到達那里聽到你的結果會很棒。 這似乎有可能......但很難。

謝謝你的回答。

最后,我使用連接到桌面的Android手機,並在手機上運行某些功能。

暫無
暫無

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

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