Enfoque Sinérgico
Enfoque Sinérgico
Enfoque Sinérgico
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.
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
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
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