APPROXIMATE MATH LIBRARY (intel sse sse2)

Durante estos días navideños, y aprovechando que estoy de vacaciones, estoy acabando (o al menos intentándolo), un programilla en el cual se hace uso intensivo de cálculo en coma flotante y trigonométrico.
Normalmente, optimizando los algoritmos y con las opciones del compilador es suficiente. Cuando no lo es… comienza el festival.

Buscando buscando por internet, encontré el la página web de INTEL, una librería de funciones en assembler para ponerle el turbo a la cpu.

A diferencia de la FPU (que realiza todo tipo de cálculos en coma flotante por si misma). Las extensiones sse y sse2, no lo hacen. Estas contienen un juego reducido de instrucciones (suma, resta, multiplicacion, comparación y poco más), con la ventaja que pueden operar con cuatro números a la vez. Este tipo de instrucciones son conocidas como SIMD (single instruction multiple data).

En este caso, lo que se hace es buscarle tres pies al gato, y echar mano a la matemática pura. En mi caso, Polinomios de Taylor. Gracias a esto, los ingenieros de intel han desarrollado esta librería, para realizar cálculos trigonométricos de forma más eficiente.

Como dice el nombre, es aproximada, (se sacrifica precisión en favor de la velocidad), pero los margenes de error relativos, son en la mayoría de casos, inferiores al 0,001%. Si necesitas toda la precisión que pueda darte la FPU no estas de suerte, pero sino es el caso, quizás esta sea una buena opción.

Aquí tenéis una tabla de tiempos de las diferentes operaciones que proporciona. También se comparan los tiempos con una LUT (LookUp Table) de cosenos, o tabla precalculada.

Eso sí, tampoco es oro todo lo que reluce. Tengo que decir que en mis pruebas personales, la velocidad de cálculo no se ha visto incrementada tanto como anuncia intel, pero es desde luego, mas rápido que encargarle la tarea a la FPU directamente.
Lo realmente importante, es cuanto podamos acoplar nuestro algoritmo a las necesidades de las sse, ya que en caso contrario, tendremos más penalizaciones que beneficios.

La librería y su documentación la podéis descargar de este link:
http://www.intel.com/design/pentium4/devtools/



COMENTARIOS

DEJA TU COMENTARIO