1
Códigos - Aportes - Recursos / mdlSSE: Operaciones en punto flotante aceleradas por el CPU
« en: Diciembre 18, 2015, 12:36:10 am »
Este modulo se encarga de realizar operaciones aritmeticas "estandar" sobre vectores (array de 1 dimension) del tipo punto flotante (en nuestro caso, Single o Double), y obtener el resultado. La gracia está en que dichas operaciones, las realiza el CPU en 1 sola instruccion de assembler (y eventualmente en mucho menor tiempo que ejecutar una multiplicacion "estandar").
Ademas, el estandar de operaciones SSE permite realizar la misma operacion sobre 8 operandos del tipo "Single" (por ejemplo si se multiplica se realizarian las siguientes operaciones a la vez: A1*B1, A2*B2, A3*B3, A4*B4). En el caso de SS2, permite operar sobre 4 operandos, igual que el caso anterior, pero los mismos ahora son del tipo "Double".
Las operaciones incluyen: Suma, Resta, Multiplicacion, Division, Raiz cuadrada (solo del primer vector de operandos), Reciproco (solo del primer vector de operandos), Raiz cuadrada reciproca aproximada (solo del primer vector de operandos), Minimo y Maximo.
Quizas no sea muy util para el uso dia a dia, pero si en algun momento deberian realizar muchas operaciones aritmeticas con punto flotante, esto hará que funcione mucho mas rapido!
El ejemplo que inclui llama a las distintas operaciones sobre 2 vectores, de los cuales solamente le asigné el valor al primer elemento de cada uno (por eso se puede ver por ejemplo p1.v0 y p2.v0, donde p1 y p2 son los vectores, y v0 es el primer elemento de cada uno).
Ademas chequea si el CPU soporta SSE, SSE2 y SSE3 mediante la ejecucion del comando "CPUID" (ademas devuelve el CPUID, aunque no es necesario jaja).
Descargar SSE v0
Saludos!
Ademas, el estandar de operaciones SSE permite realizar la misma operacion sobre 8 operandos del tipo "Single" (por ejemplo si se multiplica se realizarian las siguientes operaciones a la vez: A1*B1, A2*B2, A3*B3, A4*B4). En el caso de SS2, permite operar sobre 4 operandos, igual que el caso anterior, pero los mismos ahora son del tipo "Double".
Las operaciones incluyen: Suma, Resta, Multiplicacion, Division, Raiz cuadrada (solo del primer vector de operandos), Reciproco (solo del primer vector de operandos), Raiz cuadrada reciproca aproximada (solo del primer vector de operandos), Minimo y Maximo.
Quizas no sea muy util para el uso dia a dia, pero si en algun momento deberian realizar muchas operaciones aritmeticas con punto flotante, esto hará que funcione mucho mas rapido!
El ejemplo que inclui llama a las distintas operaciones sobre 2 vectores, de los cuales solamente le asigné el valor al primer elemento de cada uno (por eso se puede ver por ejemplo p1.v0 y p2.v0, donde p1 y p2 son los vectores, y v0 es el primer elemento de cada uno).
Ademas chequea si el CPU soporta SSE, SSE2 y SSE3 mediante la ejecucion del comando "CPUID" (ademas devuelve el CPUID, aunque no es necesario jaja).
Descargar SSE v0
Saludos!