2010-02-10 27 views
8

Como título, estoy buscando una biblioteca de vectores/matrices en C optimizada para los procesadores de iPhone/iPod. O simplemente generalmente rápido.¿Cuál es la biblioteca matemática de vector/matriz más rápida en el juego C para iPhone?

--- (editar) ---

Lo siento por la pregunta clara. Estoy buscando lib rápido para juegos comerciales para iPhone/iPod. Entonces GPL lib no puede ser usado.

Sin embargo, dejaré de encontrar la lib más rápida, tal vez sin sentido.

+0

Cualquier biblioteca de matriz popular tiene que ser rápida: los algoritmos son matemáticos básicos. –

+0

encontrarás cuando termines, ahora mismo sigues buscando ;-) – fortran

+0

Oh chicos, lo que dices significa mucho. Gracias. – Eonil

Respuesta

5

Ahora (2010.06.26) Accelerate framework incluido en iOS4, por lo que las funciones vDSP/BLAS están disponibles.

Esto utiliza la función de hardware (CPU o SIMD) para acelerar las operaciones de punto flotante, así que se puede ganar velocidad superior (2 ~ 4.5x promedio, 8x máximo) y menos consumo de energía (0.25x máximo).

Gracias a la gente por otras respuestas.

+0

+1 He utilizado las funciones de cblas con éxito y una vez que conoces su documentación, son bastante útiles. –

+0

+1 Esto es tan útil para mi proyecto actual que solo lo estoy desarrollando para iOS4.0 + ... me alegra que lo haya mencionado. – Rab

2

Depende mucho de sus necesidades, si solo está utilizando matemática de coma flotante recta, probablemente encontrará que el compilador usará el punto flotante de software, que será muy lento. Así que el primer paso es asegurarse de usar la unidad de punto flotante de hardware que está disponible en el procesador de iPhone.

El segundo paso es utilizar una biblioteca ya bien establecida, hay varias, Hassan ya le proporcionó un enlace al GNU GSL que es bueno.

El siguiente paso sería aprovechar las capacidades similares a VFP SIMD. El VFP no es realmente SIMD, pero proporciona instrucciones similares a SIMD para las cuales las operaciones individuales se llevan a cabo consecuentemente. La ventaja de seguir usando estas instrucciones es que el texto de su programa será más corto, lo que permite un mejor uso de la memoria caché de instrucciones y menos problemas cuando faltan las predicciones de bifurcación, etc. Sin embargo, no estoy al tanto de ninguna biblioteca de vectores que aproveche el VFP, tendrías que hacer una buena búsqueda y posiblemente escribir la tuya propia si no está disponible.

Finalmente, si aún necesita más velocidad, querrá usar la verdadera unidad SIMD en el procesador de iPhone. Sin embargo, esta unidad no es una unidad de coma flotante, sino una unidad entera. Por lo tanto, suponiendo que quieres números reales, estarás atrapado con un punto fijo, depende de tu aplicación si puedes salirte con la tuya. De nuevo, no estoy al tanto de ninguna biblioteca de vectores que proporcione aritmética de punto fijo usando la unidad SIMD proporcionada por el procesador de iPhone, así que de nuevo necesitaría una búsqueda exhaustiva y posiblemente también se ensucie las manos.

+1

Gracias. Mi solicitud no es tan crítica, la implementación de VFP/SIMD para este es un trabajo demasiado pesado. Solo deseo que la auto-vectorización de GCC me salve. – Eonil

Cuestiones relacionadas