De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Instrucción única, múltiples subprocesos ( SIMT ) es un modelo de ejecución utilizado en computación paralela donde una sola instrucción, múltiples datos (SIMD) se combina con múltiples subprocesos . Es diferente de SPMD en que todas las instrucciones en todos los "subprocesos" se ejecutan en el paso de bloqueo. El modelo de ejecución SIMT se ha implementado en varias GPU y es relevante para la computación de propósito general en unidades de procesamiento de gráficos (GPGPU), por ejemplo, algunas supercomputadoras combinan CPU con GPU.

Los procesadores, dicen un número p de ellos, parecen ejecutar muchos más que p tareas. Esto se logra porque cada procesador tiene múltiples "subprocesos" (o "elementos de trabajo" o "Secuencia de operaciones de carril SIMD"), que se ejecutan en un paso de bloqueo, y son análogos a los carriles SIMD . [1]

Historia [ editar ]

SIMT fue introducido por Nvidia en la microarquitectura de la GPU Tesla con el chip G80. [2] [3] ATI Technologies , ahora AMD , lanzó un producto de la competencia un poco más tarde, el 14 de mayo de 2007, el chip GPU "R600" basado en TeraScale 1 .

Descripción [ editar ]

Como el tiempo de acceso de todos los tipos de RAM generalizados (por ejemplo, DDR SDRAM , GDDR SDRAM , XDR DRAM , etc.) sigue siendo relativamente alto, a los ingenieros se les ocurrió la idea de ocultar la latencia que inevitablemente viene con cada acceso a la memoria. Estrictamente, la ocultación de latencia es una característica de la programación de cero gastos generales implementada por las GPU modernas. Esto podría o no considerarse una propiedad de 'SIMT' en sí.

SIMT está destinado a limitar la sobrecarga de obtención de instrucciones , [4] es decir, la latencia que viene con el acceso a la memoria, y se usa en las GPU modernas (como las de Nvidia y AMD ) en combinación con la 'ocultación de latencia' para permitir una ejecución de alto rendimiento a pesar de latencia considerable en las operaciones de acceso a la memoria. Aquí es donde el procesador está suscrito en exceso con tareas de cálculo y es capaz de cambiar rápidamente entre tareas cuando, de otro modo, tendría que esperar en la memoria. Esta estrategia es comparable a los subprocesos múltiples en las CPU (no debe confundirse con los de múltiples núcleos ). [5]Al igual que con SIMD, otro beneficio importante es que muchas líneas de datos comparten la lógica de control, lo que conduce a un aumento de la densidad computacional. Un bloque de lógica de control puede administrar N carriles de datos, en lugar de replicar la lógica de control N veces.

Una desventaja de la ejecución de SIMT es el hecho de que el flujo de control específico del subproceso se realiza mediante "enmascaramiento", lo que conduce a una mala utilización cuando los subprocesos de un procesador siguen diferentes rutas de flujo de control. Por ejemplo, para manejar un bloque IF - ELSE donde varios subprocesos de un procesador ejecutan diferentes rutas, todos los subprocesos deben procesar ambas rutas (ya que todos los subprocesos de un procesador siempre se ejecutan en el paso de bloqueo), pero el enmascaramiento se usa para deshabilitar y habilitar los distintos subprocesos según corresponda. El enmascaramiento se evita cuando el flujo de control es coherente para los subprocesos de un procesador, es decir, todos siguen el mismo camino de ejecución. La estrategia de enmascaramiento es lo que distingue a SIMT del SIMD ordinario y tiene la ventaja de una sincronización económica entre los subprocesos de un procesador. [6]

Ver también [ editar ]

Referencias [ editar ]

  1. ^ Michael McCool; James Reinders; Arch Robison (2013). Programación paralela estructurada: patrones para una computación eficiente . Elsevier. pag. 52.
  2. ^ "Libro blanco de la arquitectura informática de Nvidia Fermi" (PDF) . www.nvidia.com/ . NVIDIA Corporation. 2009 . Consultado el 17 de julio de 2014 .
  3. ^ Lindholm, Erik; Nickolls, John; Oberman, Stuart; Montrym, John (2008). "NVIDIA Tesla: una arquitectura unificada de gráficos y computación". IEEE Micro . 28 (2): 6 (Se requiere suscripción) . doi : 10.1109 / MM.2008.31 .
  4. ^ Rul, Sean; Vandierendonck, Hans; D'Haene, Joris; De Bosschere, Koen (2010). Un estudio experimental sobre la portabilidad del rendimiento de los núcleos OpenCL . Symp. Aceleradores de aplicaciones en informática de alto rendimiento (SAAHPC). hdl : 1854 / LU-1016024 .
  5. ^ "Temas avanzados en CUDA" (PDF) . cc.gatech.edu . 2011 . Consultado el 28 de agosto de 2014 .
  6. ^ Michael McCool; James Reinders; Arch Robison (2013). Programación paralela estructurada: patrones para una computación eficiente . Elsevier. págs. 209 y sigs.
  7. ^ John L. Hennessy; David A. Patterson (1990). Arquitectura informática: un enfoque cuantitativo (6 ed.). Morgan Kaufmann. págs.  314 y sigs.