Android NEON库

时间:2011-07-30 22:47:21

标签: android arm libraries neon

有没有其他免费的矢量库针对数学霓虹灯的霓虹灯进行了优化? 我想在我的代码中获得霓虹灯的优势,我有很多对象,我正在做很多简单的矢量物理 - 数学,比如添加矢量,乘法,点缀它们,那些是3d矢量但是如果我可以做很多更快的2d应该也可以,问题是,是否值得使用霓虹灯?例如,我们需要计算100000个点,我需要计算它们的运动,碰撞等。我目前正在使用自己的数学,并且它基于内联函数,让我说我想用我假设的霓虹灯库和矩阵,目前我我正在使用glm,它做得很好,但它会更快吗?在我的情况下,arm-abi和arm7-abi之间的速度优势在我的情况下约为30%,霓虹灯可以更快还是我的代码在编译时可以转换为霓虹灯?

3 个答案:

答案 0 :(得分:2)

您可以查看eigen。它具有特殊代码,激活氖指令支持时激活它。

答案 1 :(得分:0)

就像其他人提到的那样,你应该看看Eigen,它对你来说可能已经足够了。但是如果你想要完全的性能(远远超过30%的增益,更像是300%的增益),你应该自己使用NEON代码,并确保整个内部循环完全用NEON编写(不是任何CPU或VFP代码)。

如果您只是NEON优化部分循环而不是整个循环,则会受到重大惩罚,因此NEON代码可能比常规C代码快30%或甚至更慢。但是完整的NEON循环通常可以为您提供300% - 2000%的加速!

如果您正在为ARM Cortex-A9开发,那么NEON C内在应该足够好,但对于ARM Cortex-A8设备,您通常需要NEON汇编代码才能获得完整的性能。我提供了一些关于如何在“http://www.shervinemami.info/armAssembly.html

进行NEON优化整个循环的更多信息

答案 2 :(得分:-3)

如果目标体系结构支持NEON,则为NEON编译代码,即,如果是为armeabi-v7a编译的话。为此,只需将armeabi-v7a添加到应用的Application.mk文件中的目标列表中。