2010-02-10 73 views
8

作爲標題,我找到了針對iPhone/iPod處理器進行了優化的C語言中的矢量/矩陣庫。 或者一般來說很快。C遊戲中最快的矢量/矩陣數學庫是什麼?

---(編輯)---

我不清晰的問題抱歉。 我正在尋找適用於iPhone/iPod的商業遊戲的快速庫。所以GPL lib不能使用。

但是,我會停止找到最快的庫,它可能沒有意義。

+0

任何流行的矩陣庫必須快 - 算法是基本的數學。 – 2010-02-10 09:51:17

+0

你會發現當你完成後,現在你仍然在尋找;-) – fortran 2010-02-10 09:55:43

+0

哦,你們說什麼意味着很多。謝謝。 – Eonil 2010-02-10 11:06:30

回答

5

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

這是利用硬件特性(CPU或SIMD)來加速浮點運算,因此可以通過使用此功能獲得優異的速度(平均2至4.5倍,最大8倍)和更少能量(最大0.25倍)。

感謝別人的答案。

+0

+1我已經成功地使用了cblas函數,一旦你掌握了他們的文檔,它們就非常有用。 – 2010-06-26 03:43:39

+0

+1這對我目前的項目非常有用,我只是爲iOS4.0 +開發它......很高興你提到了這個。 – Rab 2010-07-29 10:39:38

2

取決於您的需求,如果您只是使用直接浮點運算,您可能會發現編譯器將使用軟件浮點運算,這將非常緩慢。因此,第一步是確保您使用iPhone處理器中提供的硬件浮點單元。

第二步是使用已經很好建立的庫,有幾個,哈桑已經提供了一個GNU GSL的鏈接,這很好。

下一步就是利用類似VFP SIMD的能力。 VFP實際上並不是SIMD,但確實提供了像SIMD一樣的指令,這些指令爲各個操作執行後續操作。仍然使用這些指令的優點是,程序文本將更短,允許更好地使用指令緩存,並在丟失分支預測等時減少問題。然而,我不知道任何矢量庫利用VFP的優勢,你必須做一個很好的搜索,並可能編寫自己的,如果它不可用。最後,如果你仍然需要更多的速度,你會想要在iPhone處理器中使用真正的SIMD單元。然而,這個單位不是一個浮點單位,而是一個整數單位。所以,假設你確實需要實際的數字,那麼你會被困在固定點上,這取決於你的應用程序是否可以避開這個問題。再次,我不知道任何使用iPhone處理器提供的SIMD單元提供定點算術的矢量庫,因此您需要徹底搜索並可能弄髒自己。

+1

謝謝。我的要求不是那麼重要,爲此實施VFP/SIMD工作太繁重。我只希望GCC自動矢量化可以節省我。 – Eonil 2010-02-10 11:11:41