我正在开发一些数值软件,它的性能很大程度上取决于数值精度(即浮点数,双精度等)。 我注意到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