什么是iPhone游戏中最快的矢量/矩阵数学库?用C语言实现。

8
作为标题所述,我正在寻找针对iPhone/iPod处理器优化的C语言向量/矩阵库。 或者说是通常意义上的快速库。
---(编辑)---
很抱歉我的问题不够清晰。 我正在寻找商业游戏中用于iPhone/iPod的快速库。因此,GPL库不能使用。
但是,我将停止寻找最快的库,这可能是毫无意义的。

任何流行的矩阵库都必须快速 - 算法只是基本数学。 - Hassan Syed
完成后你会发现,现在你仍在搜索中;-) - fortran
哦,各位,你们说的话意义重大。谢谢。 - eonil
2个回答

5

现在(2010.06.26),iOS4已经包含了Accelerate框架,因此可以使用vDSP / BLAS函数。

这利用硬件特性(CPU或SIMD)加速浮点运算,因此使用它可以获得更快的速度(平均2~4.5倍,最高8倍)和更少的能量消耗(最高0.25倍)。

感谢其他答案的人们。


+1 我已经成功地使用了cblas函数,一旦你掌握了它们的文档,它们就非常有用。 - Dave DeLong
+1 这对我的当前项目非常有用,我只为iOS4.0+开发它...很高兴你提到了这一点。 - Rab

2
非常取决于您的需求,如果您只是使用直接浮点数学运算,您可能会发现编译器将使用软件浮点运算,这将非常慢。因此,第一步是确保您使用iPhone处理器中可用的硬件浮点单元。
第二步是使用已经成熟的库,有几个库可供选择,Hassan已经为您提供了GNU GSL的链接,这很不错。
下一步是利用VFP SIMD的能力。VFP实际上并不是SIMD,但提供类似SIMD的指令,其中各个操作按顺序执行。仍然使用这些指令的优点是程序文本将更短,可以更好地利用指令缓存,并且在缺少分支预测时会出现较少问题。但我不知道是否有任何矢量库利用了VFP,您需要进行深入搜索,如果没有,则可能需要自己编写。
最后,如果仍然需要更快的速度,您将想要使用iPhone处理器中的真正SIMD单元。但是,该单元不是浮点单元,而是整数单元。因此,假设您确实需要实数,您将被困在定点上,这取决于您的应用程序是否可以胜任。同样,我不知道是否有任何矢量库使用iPhone处理器提供的SIMD单元提供定点算术,因此您需要进行彻底的搜索,并可能亲自动手。

1
谢谢。我的请求并不是那么紧急,实现VFP/SIMD对此来说太过繁重。我只希望GCC自动向量化能够帮我节省时间。 - eonil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接