Está en la página 1de 16

Enfoque sinrgico

Un enfoque sinrgico para el rendimiento computacional de equipos con mltiples ncleos basados en la arquitectura x86

Integrantes

Introduccin
Para

explotar el potencial de rendimiento de los ordenadores de varios ncleos, se propone un enfoque que combina la optimizacin de la cach, paralelizacin, simdizacin, y el autotuning en un solo sistema.

Diagrama de una doble toma de cuatro ncleos Nehalem

Enfoque
Tanto

las unidades de procesamiento en paralelo y los cachs se organizan jerrquicamente en los procesadores multicores x86 , por lo que el paradigma "divide y vencers encaja bien con esta arquitectura.

Enfoque
En

particular hacemos uso de algoritmos de cach inconscientes o trascendentes para explotar el paralelismo a nivel de threading. Para explotar el paralelismo SIMD, utilizamos el compilador basado en simdizacin (tambin conocido como vectorizacin corto) en lugar de la codificacin manual

Enfoque
Por

ltimo, durante todo este proceso se aplicaron tcnicas de autotuning para ajustar los parmetros del programa y as asegurarse de conseguir el mximo rendimiento

Algoritmos de cach trascendentes


Estn

diseados para maximizar la reutilizacin de datos en el cach. A diferencia del cach por bloqueo, ste no tiene el tamao del cach como parmetro explcito, por lo cual trabaja bien en mltiples niveles de cach, en una jerarqua de memoria o en equipos con diferentes configuraciones de cach

Algoritmos de cach trascendentes


Este

algoritmo funciona dividiendo el problema en subproblemas ms pequeos hasta llegar a un punto en que los datos necesarios para el subproblema, son lo suficientemente pequeos para caber en cualquier cach de tamao razonable

Paralelismo
Cuando

los subproblemas disponen de datos independientes entre s, podemos calcularlos en paralelo y por lo tanto lograr tanto el paralelismo como la localidad de datos al mismo tiempo

Paralelismo SIMD
SIMD

(Una Instruccin, Mltiples Datos) es una tcnica para conseguir paralelismo a nivel de datos. Consisten en instrucciones que aplican una misma operacin sobre un conjunto grande de datos Es una organizacin que influye muchas unidades de procesamiento bajo la supervisin de una unidad de control comn

Simdizacin
La

simdizacin implica diversas tareas que estn estrechamente relacionadas entre si. El paralelismo SIMD (Una instruccin, Mltiples Datos) debe ser extrado de una aplicacin, que puede incluir la extraccin de una base de bloque, un bucle, o una combinacin de datos.

Simdizacin
Una

vez que el paralelismo se extrae, se deben cumplir limitaciones de hardware adicionales, como los requisitos de la alineacin de memoria, longitud del vector fsico y el conjunto de instrucciones de hardware.

Simdizacin
Para

poder realizar la simdizacin existen diversas maneras, una de ella es autosimdizacin, en la cual el paso de la simdizacin la realiza completamente el compilador. Como el compilador no puede determinar la dependencia entre los tres conjuntos de datos, genera dos versiones del ciclo (una es simdizada y la otra no) e inserta una marca para saber que versin usar en tiempo de ejecucin.

Simdizacin
El

segundo mtodo es programar directamente la simdizacin. El programador usa el pragma ICC para comunicarse directamente con el compilador que es seguro y benfico para el bucle

Simdizacin
El

ltimo mtodo es la notacin de arreglos, el cual es una caracterstica aadida en la versin 12 de la ICC. Para aplicar este mtodo, se reescribe el bucle en notacin de arreglos. Esta notacin se aplica a las operaciones matriciales en lugar de escalares. Por lo tanto, ya no necesitamos el ciclo for para iterar sobre los elementos individuales del arreglo