C for iPhone 游戏中最快的向量/矩阵数学库是啥?
Posted
技术标签:
【中文标题】C for iPhone 游戏中最快的向量/矩阵数学库是啥?【英文标题】:What's the fastest vector/matrix math library in C for iPhone game?C for iPhone 游戏中最快的向量/矩阵数学库是什么? 【发布时间】:2010-02-10 09:33:01 【问题描述】:作为标题,我正在寻找针对 iPhone/iPod 处理器优化的 C 语言向量/矩阵库。 或者只是一般来说很快。
---(编辑)---
对于不清楚的问题,我很抱歉。 我正在为 iPhone/iPod 的商业游戏寻找快速库。所以GPL lib不能用。
但是,我会停止寻找最快的库,这可能毫无意义。
【问题讨论】:
任何流行的矩阵库都必须是快速的——算法是基本的数学。 完成后你会发现,现在你还在寻找 ;-) 哦,伙计们,您所说的意义重大。谢谢。 【参考方案1】:Now(2010.06.26) ios4 包含加速框架,因此可以使用 vDSP/BLAS 功能。
这利用硬件功能(CPU 或 SIMD)来加速浮点运算,因此使用它可以获得卓越的速度(平均 2~4.5 倍,最大 8 倍)和更少的能源消耗(最大 0.25 倍)。
感谢其他人的回答。
【讨论】:
+1 我已经成功使用了 cblas 函数,一旦你掌握了他们的文档,它们就非常有用了。 +1 这对我当前的项目非常有用,我只为 iOS4.0+ 开发它......很高兴你提到了这一点。【参考方案2】:很大程度上取决于您的需求,如果您只是使用直接浮点数学,您可能会发现编译器将使用软件浮点,这将非常慢。因此,第一步是确保您使用 iPhone 处理器中可用的硬件浮点单元。
第二步是使用一个已经很完善的库,有几个,Hassan 已经为您提供了 GNU GSL 的链接,这很好。
下一步是利用类似 VFP SIMD 的能力。 VFP 实际上不是 SIMD,但确实提供了类似 SIMD 的指令,各个操作将依次执行。仍然使用这些指令的优点是您的程序文本会更短,从而可以更好地使用指令缓存,并且在缺少分支预测等时问题更少。但是我不知道有任何向量库利用 VFP,如果它不可用,您必须进行良好的搜索并可能编写自己的。
最后,如果您仍需要更高的速度,您将需要在 iPhone 处理器中使用真正的 SIMD 单元。但是这个单位不是浮点单位,而是整数单位。因此,假设您确实想要实数,您将被固定点所困,这取决于您的应用程序是否可以摆脱它。同样,我不知道有任何向量库使用 iPhone 处理器提供的 SIMD 单元提供定点算法,所以你需要彻底搜索,并且可能自己动手。
【讨论】:
谢谢。我的要求不是那么重要,为此实施 VFP/SIMD 工作量太大。我只希望 GCC 自动矢量化能救我。以上是关于C for iPhone 游戏中最快的向量/矩阵数学库是啥?的主要内容,如果未能解决你的问题,请参考以下文章
机器学习|数学基础Mathematics for Machine Learning系列之矩阵理论(14):向量范数及其性质
在c ++中不同行或列旁边的矩阵中搜索最小值和最大值的最快方法是啥