Vectorización (computación paralela)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 21 de junio de 2018; la verificación requiere 1 edición .

La vectorización (en computación paralela ) es un tipo de paralelización de programas en el que las aplicaciones de un solo subproceso que realizan una operación a la vez se modifican para realizar varias operaciones del mismo tipo al mismo tiempo.

Las operaciones escalares que procesan un par de operandos se reemplazan por operaciones en matrices (vectores) que procesan varios elementos del vector en un momento dado.

El procesamiento de datos vectoriales se usa tanto en computadoras de consumo como en supercomputadoras .

La vectorización automática es un área importante de investigación en informática, cuyo objetivo es encontrar métodos que permitan al compilador convertir automáticamente programas escalares en programas vectoriales.

Ejemplo

Se muestra un fragmento de programa que, en cuanto a elementos, multiplica dos matrices que consisten en números:

para ( yo = 0 ; yo < 1024 ; yo ++ ) C [ yo ] = A [ yo ] * segundo [ yo ];

Este bucle se puede vectorizar así:

para ( yo = 0 ; yo < 1024 ; yo += 4 ) C [ yo : yo + 3 ] = UN [ yo : yo + 3 ] * segundo [ yo : yo + 3 ];

En el segundo fragmento, la entrada C[i:i+3]significa un vector de 4 elementos - de C[i]a C[i+3]inclusive, y debajo *se entiende la operación de multiplicación de vectores por elementos. El procesador vectorial de este ejemplo podrá realizar 4 operaciones escalares con una instrucción vectorial en un tiempo cercano a la realización de una operación escalar. Por lo tanto, las operaciones vectoriales se requerirán 4 veces menos y el programa se ejecutará más rápido.

Extensiones vectoriales

Las operaciones vectoriales se pueden agregar a los procesadores escalares, luego se denominan extensiones de instrucciones vectoriales. Ejemplos: MMX , SSE , SSE2 , AltiVec .

Notas