C for iPhone游戏中最快的矢量/矩阵数学库是什么?

时间:2010-02-10 09:33:01

标签: iphone c math vector

作为标题,我在C中找到了针对iPhone / iPod处理器优化的矢量/矩阵库。 或者通常很快。

---(编辑)---

对不起,我很抱歉。 我正在为iPhone / iPod寻找商业游戏的快速库。所以不能使用GPL lib。

但是,我会停止找到最快的lib,它可能毫无意义。

2 个答案:

答案 0 :(得分:5)

Now(2010.06.26)加速iOS4中包含的框架,因此可以使用vDSP / BLAS功能。

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

感谢别人的回答。

答案 1 :(得分:2)

非常依赖于您的需求,如果您只是使用直接浮点数学,您可能会发现编译器将使用软件浮点,这将非常慢。因此,第一步是确保您使用iPhone处理器中可用的硬件浮点单元。

第二步是使用一个已经很好建立的库,有几个,Hassan已经为你提供了一个很好的GNU GSL链接。

下一步是利用VFP SIMD之类的能力。 VFP实际上不是SIMD,但确实提供SIMD类似指令,其中各个操作都是连续执行的。仍然使用这些指令的优点是您的程序文本将更短,允许更好地使用指令缓存,并在缺少分支预测等时减少问题。然而,我不知道任何矢量库利用VFP,你必须做一个很好的搜索,如果它不可用,你可以编写自己的。

最后,如果您仍需要更高的速度,则需要在iPhone处理器中使用真正的SIMD设备。但是,此单位不是浮点单位,而是整数单位。因此,假设您确实需要实数,那么您将陷入固定点,这取决于您的应用程序是否可以逃脱。我再也不知道有任何矢量库使用iPhone处理器提供的SIMD单元提供定点运算,所以你需要彻底搜索并可能弄脏自己。