我正在開發一些數值軟件,它的性能很大程度上取決於數值精度(即浮點數,雙精度等)。 我注意到ARM NEON並不完全符合IEEE754浮點標準。有沒有辦法在x86 CPU上模擬NEON的浮點精度?例如模擬NEON SIMD浮點運算的庫。我可以在x86 C程序中模擬ARM NEON嗎?
3
A
回答
1
也許吧。
我對SSE不太瞭解,但是可以強制許多SSE模式的行爲像NEON。這將取決於您的編譯器和可用庫,但請參閱Visual Studio FP unit control functions。這可能足夠滿足您的要求。
此外,您可以使用arm_neon.h標頭確保您使用類似的內在函數來完成類似的操作。最後,如果你真的需要在這些邊界條件下達到這個精度,你將需要一個好的測試套件來驗證你是否按預期實現了你的結果。最後,即使使用純粹的「C」代碼(通常符合IEEE-754),並使用ARM上的VFP作爲其他評論者所述,您將得到不同的結果,因爲浮點非常不規則過程,並受到優化和操作順序的突發事件的影響。讓結果在不同的編譯器中相匹配是非常具有挑戰性的,更不用說硬件體系結構。例如,如果要在CL/MSVS上與/fp:precise
進行比較,要在英特爾上使用gcc獲得非常令人滿意的結果,通常需要使用-ffloat-store
標誌。
最後,您可能需要接受某種非零容錯。試圖達到零可能是困難的,但如果你到達那裏聽到你的結果會很棒。看起來有可能......但很難。
0
感謝您的回答。
最後,我使用了連接到桌面的android手機,並且手機上正在運行某些功能。
相關問題
- 1. 我可以在C程序中使用模式匹配嗎?
- 2. 我可以模擬SqlConnection.BeginTransaction c#?
- 3. OS內核可以在x86和ARM上運行嗎?
- 4. 我可以在Perl中模擬C風格的宏嗎?
- 5. 我可以在JavaScript中模擬C類指針數組嗎?
- 6. SSE _mm_movemask_epi8 ARM NEON
- 7. arm neon vst1.32 segfault
- 8. atan2近似11位尾數在x86(與SSE2)和ARM(與vfpv4 NEON)
- 9. 我可以在Xcode中更改模擬器的順序嗎?
- 10. Qemu中的ARM NEON支持
- 11. 我可以在模擬器中運行舊的應用程序存檔嗎?
- 12. 我可以在C程序中使用C++庫嗎?
- 13. 可以在gcc中模擬nullptr嗎?
- 14. 我可以模擬NFC-V標籤嗎?
- 15. 我可以在Firefox 4.0中模擬以前的Firefox版本嗎?
- 16. 在Android模擬器中可以模擬未命中嗎?
- 17. JUnit可以模擬OutOfMemoryErrors嗎?
- 18. 我可以使用模擬對象來模擬串口嗎?
- 19. 我們可以在android模擬器上測試shake應用程序嗎?
- 20. 是否有可能將針對iOS ARM編譯的.ipa轉換爲可以在模擬器上運行的x86?
- 21. 我可以在GCC上使用x86彙編的Intel語法嗎?
- 22. 我可以從C++程序中調用Objective-C類嗎?
- 23. ,我還可以在3.1模擬器中創建項目嗎?
- 24. 我們可以在XCODE 6.0.1中安裝iOS 6模擬器嗎?
- 25. 我們可以在模擬器中檢查推送通知嗎?
- 26. 我們可以在模擬器中運行Google Maps V2嗎?
- 27. 我可以在Android模擬器中配置Gmail嗎?
- 28. 我們可以在iphone模擬器中檢查applicationwillresignActive嗎?
- 29. 我可以在商業項目中使用功率模擬嗎?
- 30. ARM NEON 8x8 SAD操作
http://meta.stackexchange.com/a/66378 – auselen 2015-03-25 08:06:15
請注意,NEON _arithmetic_應該是單精度754 - 「不符合」主要來自對754指定多個模式的某些方面具有固定值(舍入,異常陷印,非正常處理等)。如果精度比速度更重要,請考慮定位VFP而不是NEON。 – Notlikethat 2015-03-25 11:09:55
NEON沒有把非正常變爲零嗎?如果是這樣,我相信在x86中有一個設置可以做到這一點。 – EOF 2015-03-25 11:32:59