Cray MTA


Cray MTA , anteriormente conocido como Tera MTA , es una arquitectura de supercomputadora basada en miles de subprocesos independientes, comunicación y sincronización de grano fino entre subprocesos, y tolerancia de latencia para cálculos irregulares.

Cada procesador MTA ( CPU ) tiene una ALU de alto rendimiento con muchos conjuntos de registros independientes, cada uno de los cuales ejecuta un subproceso independiente. Por ejemplo, el Cray MTA-2 usa 128 conjuntos de registros y, por lo tanto, 128 subprocesos por CPU/ALU. Todos los MTA hasta la fecha utilizan una disposición de procesador de barril , con un interruptor de subprocesos en cada ciclo, con subprocesos bloqueados (atascados) omitidos para evitar desperdiciar ciclos de ALU. Cuando un subproceso realiza una lectura de memoria, la ejecución se bloquea hasta que regresan los datos; mientras tanto, otros subprocesos continúan ejecutándose. Con suficientes subprocesos (simultaneidad), casi siempre hay subprocesos ejecutables para "cubrir" los subprocesos bloqueados, y las ALU permanecen ocupadas. El sistema de memoria utiliza bits llenos/vacíos para garantizar el orden correcto. Por ejemplo, una matrizA se escribe inicialmente con bits "vacíos", y cualquier subproceso que lea un valor de A se bloquea hasta que otro subproceso escribe un valor. Esto asegura el orden correcto, pero permite intercalar de forma detallada y proporciona un modelo de programación simple. El sistema de memoria también está "aleatorizado", con direcciones físicas adyacentes que van a diferentes bancos de memoria. Por lo tanto, cuando dos subprocesos acceden a la memoria simultáneamente, rara vez entran en conflicto a menos que estén accediendo a la misma ubicación.

Un objetivo del MTA es que la transferencia de códigos de otras máquinas sea sencilla, pero brinde un buen rendimiento. Un compilador FORTRAN paralelizado puede producir un alto rendimiento para algunos códigos con poca intervención manual. Cuando se requiere una migración manual, el modelo de sincronización simple y detallado a menudo permite a los programadores escribir código de la manera "obvia" y lograr un buen rendimiento. Otro objetivo es que los programas para el MTA sean escalables  , es decir, cuando se ejecuten en un MTA con el doble de CPU, el mismo programa tendrá casi el doble de rendimiento. Ambos son desafíos para muchos otros sistemas informáticos de alto rendimiento.

Una característica poco común del MTA es que se pueden intercalar varias cargas de trabajo con un buen rendimiento. Por lo general, las supercomputadoras se dedican a una tarea a la vez. El MTA permite asignar subprocesos inactivos a otras tareas con muy poco efecto en los cálculos principales.

Ha habido tres implementaciones de MTA y, a partir de 2009, está prevista una cuarta. Las implementaciones son:

Solo se han implementado unos pocos sistemas y solo se han informado ampliamente los puntos de referencia de MTA-2, lo que dificulta las comparaciones de rendimiento.