建议在Android平台上执行复杂的数学运算,如向量乘法,向量转换(int到FP)等。它看起来不像java.lang.math足够强壮。有人建议我看看NDK和一个好的c/C++ lib或siglib。还有其他建议吗?谢谢...什么Android包可用于矢量,标量,矩阵和FP数学?
回答
去年,我读a book,其中包括一个关于SIMD数学的话题。正如你可能知道的,SIMD数学用于加速矢量乘法和矢量转换过程,我查看了Sony的VectorMath库。
虽然我没有打算构建处理器昂贵的应用程序,但它使用起来很方便,也很容易。我认为问题在于它实际上是为索尼PS3处理器架构设计的,我不确定它是否可用于ARM芯片组。
这里是链接: 子弹SIMDMath库:http://bullet.svn.sourceforge.net/viewvc/bullet/trunk/Extras/simdmathlibrary/
子弹VectorMath库:http://bullet.svn.sourceforge.net/viewvc/bullet/trunk/Extras/vectormathlibrary/
编辑
从维基百科的ARM架构页面直接引用:
高级SIMD (NEON) 先进的SIMD扩展(又名NEON或MPE媒体处理引擎)是一种组合的64位和128位单指令多数据(SIMD)指令集,为媒体和信号处理应用程序提供标准化加速。 NEON包含在所有Cortex-A8器件中,但在Cortex-A9器件中是可选的[33]。 NEON可以在运行频率为10 MHz的CPU上执行MP3音频解码,并且可以以不超过13 MHz的频率运行GSM自适应多速率(AMR)语音编解码器。它具有全面的指令集,独立的寄存器文件和独立的执行硬件。[34] NEON支持8位,16位,32位和64位整数和单精度(32位)浮点数据,并可在SIMD操作中处理音频和视频处理以及图形和游戏处理。在NEON中,SIMD同时支持多达16个操作。 NEON硬件共享与VFP中使用的相同的浮点寄存器。诸如ARM Cortex-A8和Cortex-A9等设备支持128位向量,但一次只能执行64位,[32]而较新的Cortex-A15设备可以一次执行128位。
这意味着即使没有SIMD指令的担保,他们可能会有。
而且Tegra系列:
相比Tegra 2的,在ARM Cortex-A9s中的Tegra 3现在支持ARM的SIMD扩展明丽。
- 1. 基于矩阵和矢量
- 2. 矢量数学和矩形
- 3. 矢量为矩阵坐标
- 4. 用于矩阵和矢量操作的快速,便携式,C++数学库
- 5. 矩阵是否包含矢量?
- 6. C游戏中最快的矢量/矩阵数学库是什么?
- 7. 使用R数学独立库的C++中的矩阵/矢量?
- 8. SAS相当于R矢量到矩阵
- 9. 用于向量和矩阵计算的高性能数学库
- 10. 用矢量乘以矩阵阵列
- 11. 矢量化矩阵乘法
- 12. MATLAB:矩阵到矢量行
- 13. 矢量矩阵乘法
- 14. 2d矩阵到矢量
- 15. 矩阵乘矢量乘法
- 16. 矢量分块矩阵
- 17. 从矢量矩阵生成
- 18. XNA,矢量数学和GPU
- 19. 选择从矩阵和矢量
- 20. 矢量或和矩阵运算
- 21. 矢量和嵌套矩阵乘法
- 22. iOS矩阵和矢量操作
- 23. Opencv乘标量和矩阵
- 24. OpenCV乘标量和矩阵
- 25. 如何实现矢量(矢量数学)?
- 26. 从MATLAB中的矩阵和矢量创建三维矩阵
- 27. 矩阵*向量与向量*矩阵相比意味着什么
- 28. 用矢量乘以矩阵的行吗?
- 29. 在犰狳中用矢量除矩阵
- 30. 什么是Matlab矩阵矢量化的C#等效?
谢谢穆罕默德 - 我会看看这些库... –
再次感谢穆罕默德您的答案 - 这需要时间给这种完整和彻底的评论,我感谢您的服务。 –