Articulo de referencia

Arquitectura espacial

Descripción general de una arquitectura espacial genérica basada en la multiplicación y acumulación . En informática, las arquitecturas espaciales son un tipo de arquitectura in...

Descripción general de una arquitectura espacial genérica basada en la multiplicación y acumulación .

En informática, las arquitecturas espaciales son un tipo de arquitectura informática que aprovecha muchos elementos de procesamiento (EP) coordinados colectivamente y que se comunican directamente para ejecutar de forma rápida y eficiente núcleos altamente paralelizable . El término "espacial" proviene de que las instancias de los elementos de procesamiento suelen estar dispuestas en una matriz o cuadrícula, tanto lógicamente como en el diseño del silicio. Sus cargas de trabajo más comunes consisten en multiplicaciones de matrices , convoluciones o, en general, contracciones tensoriales . Por ello, las arquitecturas espaciales se utilizan a menudo en aceleradores de IA . [ 1 ] [ 2 ]

El objetivo principal de una arquitectura espacial es reducir la latencia y el consumo de energía al ejecutar kernels muy grandes mediante el aprovechamiento del paralelismo escalable y la reutilización de datos . Consideremos un kernel, es decir, una función que se aplica a varias entradas, expresada como uno o más bucles ; esto implica distribuir sus cálculos entre elementos de procesamiento, asegurando que sus dependencias de datos se encuentren dentro del mismo elemento o la misma región de elementos. [ 3 ] [ 4 ]

Si bien las arquitecturas espaciales pueden diseñarse o programarse para admitir diferentes algoritmos , cada carga de trabajo debe asignarse a los elementos de procesamiento mediante flujos de datos especializados . La formulación de una asignación implica la asignación de cada operación a un elemento de procesamiento y la programación de los movimientos de datos subsiguientes. Todo ello optimizado para maximizar el paralelismo y la reutilización de datos. [ 5 ] [ 2 ]

Las arquitecturas espaciales se pueden clasificar como un procesador de matriz SPMD (o de función única y múltiples datos ), ya que cada elemento de procesamiento ejecuta las mismas operaciones en un subconjunto de datos diferente, pero se programan mediante una única asignación. [ 6 ] La arquitectura de un elemento de procesamiento individual puede pertenecer a cualquier clase de Flynn . En particular, las arquitecturas espaciales son adecuadas para aplicaciones cuyo flujo de datos presenta relaciones productor-consumidor (por ejemplo, reducción paralela ) o que pueden aprovechar el intercambio eficiente de datos entre una región de PE. [ 1 ]

Las arquitecturas espaciales se pueden encontrar típicamente como aceleradores de hardware en sistemas heterogéneos , dentro de la categoría más amplia de procesador multinúcleo . [ 7 ]

Detalles del diseño

El elemento central de la arquitectura espacial es su matriz multidimensional de elementos de procesamiento. Cada elemento de procesamiento es simple, a saber, una unidad funcional de multiplicación y acumulación , un núcleo simplificado o lógica específica de la aplicación. [ 4 ] Los elementos de procesamiento se conectan entre sí y con la jerarquía de memoria a través de buses o una red en el chip , o incluso lógica asíncrona . [ 2 ] [ 8 ] La jerarquía de memoria se gestiona explícitamente y puede constar de múltiples búferes en el chip , como archivos de registro , memorias temporales y FIFOs , respaldados por grandes memorias DRAM externas y memorias no volátiles . [ 1 ]

El número de elementos de procesamiento, el ancho de banda de interconexión y la cantidad de memoria en el chip varían ampliamente entre los diseños y las aplicaciones objetivo. Desde miles de elementos de procesamiento y decenas de megabytes de memoria para computación de alto rendimiento [ 9 ] hasta decenas de elementos y unos pocos kilobytes para el borde [ 10 ] .

Las métricas clave de rendimiento para una arquitectura espacial son su consumo de energía y latencia al ejecutar una carga de trabajo determinada. [ 7 ] Debido a las limitaciones de tecnología y ancho de banda , la energía y la latencia requeridas para acceder a memorias más grandes, como la DRAM, dominan las de computación, siendo cientos de veces mayores que las necesarias para el almacenamiento cerca de los elementos de procesamiento. [ 11 ] [ 12 ] Por eso, la jerarquía de memoria de una arquitectura espacial está diseñada para localizar la mayoría de los accesos repetidos a valores en memorias en chip más rápidas y eficientes, aprovechando la reutilización de datos para minimizar los accesos costosos. [ 4 ]

Reutilización de datos

Ejemplos de los cuatro mecanismos de reutilización de datos en arquitecturas espaciales.

Los mecanismos que permiten la reutilización en arquitecturas espaciales son la multidifusión y la reducción . La reutilización se puede clasificar además en espacial y temporal. Las interconexiones de las arquitecturas espaciales pueden admitir la multidifusión espacial, donde una lectura de una memoria externa se utiliza para múltiples escrituras en instancias internas, y la reducción espacial, donde las lecturas de memorias internas se acumulan en una única escritura externa. [ 13 ] Estos se pueden implementar con reenvío directo de elemento a elemento, como en los arreglos sistólicos , o en la interconexión durante los accesos a la memoria. [ 7 ] La reutilización temporal ocurre cuando el mismo valor se retiene en una memoria mientras se lee (multidifusión) y/o se actualiza in situ (reducción) varias veces sin que se vuelva a obtener de otra memoria. [ 13 ]

Consideremos el caso de los núcleos que pueden calcularse con elementos de procesamiento paralelos tipo ALU , como multiplicaciones de matrices y convoluciones. La comunicación directa entre elementos de procesamiento puede utilizarse eficazmente para pasar sumas parciales y lograr una acumulación distribuida espacialmente, o para compartir los mismos datos de entrada para el cálculo paralelo sin accesos repetidos a memorias externas. [ 14 ]

Ejemplos de reutilización de datos en convoluciones
Estacionariedad: al iterar sobre la dimensión M(canales de salida), se siguen reutilizando los mismos valores del tensor de entrada.
Halo: cada iteración en la dimensión P(altura de salida) comparte parcialmente los valores del tensor de entrada con la iteración anterior. Esto ocurre porque la iteración Ptambién indexa H(altura de entrada) mediante una suma (transformación afín) con un índice en R(altura de pesos).

La cantidad de reutilización de datos que se puede explotar es una propiedad del kernel que se ejecuta y se puede inferir analizando sus dependencias de datos . Cuando el kernel se puede expresar como un bucle anidado , la reutilización surge de iteraciones posteriores que acceden, en parte, a los mismos valores. Esta superposición es una forma de localidad de acceso y constituye una oportunidad de reutilización para arquitecturas espaciales a menudo llamadas "estacionariedad". [ 15 ] [ 1 ] Para kernels que presentan transformaciones afines de índices, como convoluciones y, más generalmente, patrones de plantilla , la superposición parcial que surge de la ventana deslizante del cálculo también produce una oportunidad de reutilización, que recibe el nombre de "zona fantasma" o "halo". [ 16 ]

Naturalmente, las arquitecturas espaciales son más efectivas cuantas más oportunidades de reutilización existan. Al mismo tiempo, los recursos de hardware limitados implican que no todas las oportunidades pueden aprovecharse simultáneamente, lo que requiere una planificación adecuada del cálculo para explotar las más efectivas. [ 5 ]

Cálculos de mapeo

Para ejecutar un kernel en una arquitectura espacial , se debe construir un mapeo que detalle cómo se desarrollará la ejecución . Mapear una carga de trabajo a una arquitectura espacial requiere vincular cada uno de sus cálculos a un elemento de procesamiento y luego programar tanto los cálculos como los movimientos de datos necesarios para soportarlos. [ 17 ] Una buena elección de mapeo es crucial para maximizar el rendimiento. [ 5 ] El punto de partida para un mapeo es la representación de bucle anidado de un kernel. Para aprovechar el paralelismo y la reutilización de datos simultáneamente, las iteraciones deben dividirse entre elementos de procesamiento, teniendo cuidado de que las dependencias de datos entre iteraciones sean manejadas por el mismo elemento o vecindario de elementos. [ 3 ]

Multiplicación de matrices.

A modo de ejemplo ilustrativo, el siguiente ejemplo de mapeo se centra en una multiplicación de matrices, pero todo es generalizable a cualquier núcleo de paralelismo de datos . Esta elección se debe a que la mayoría de los trabajos sobre arquitecturas espaciales se centran en el soporte de redes neuronales y optimizaciones relacionadas. [ 18 ] [ 19 ] Cabe señalar que también se ha analizado una paralelización similar de la multiplicación de matrices en el contexto de sistemas multiprocesador .

Todas las asignaciones se pueden construir a través de tres transformaciones de bucle del núcleo original: [ 20 ]

  • El teselado de bucles (o bloqueo ) da como resultado matrices de bloques cada vez más pequeñas que caben en las memorias internas. Este proceso se repite para cada memoria en la jerarquía, creando en cada una una copia anidada de los bucles originales. En cualquier momento durante la ejecución, una memoria solo necesita almacenar todos los datos necesarios para las iteraciones en sus copias de los bucles y las memorias internas.
  • La paralelización es similar al teselado, pero en este caso, los diferentes bloques se procesan simultáneamente en múltiples elementos de procesamiento, en lugar de secuencialmente.
  • El orden de los cálculos permite reordenar arbitrariamente los bucles dentro de cada copia del bucle anidado original. Esto altera los patrones de acceso a los datos, modificando qué valores se utilizan en iteraciones consecutivas y cuándo.

Cada nivel de la jerarquía de memoria se encarga de avanzar a través de sus iteraciones asignadas. Tras la paralelización, cada elemento de procesamiento ejecuta los mismos bucles internos sobre datos parcialmente diferentes. La reutilización de datos aprovechados está implícita en este formalismo. El teselado permite la reutilización temporal, mientras que la paralelización permite la reutilización espacial. Finalmente, el orden de cálculo determina qué valores pueden reutilizarse. [ 3 ] [ 13 ]

Consideremos, para este ejemplo, una arquitectura espacial que comprende una gran memoria temporal que almacena los operandos en su totalidad y una matriz de 16x16 elementos de procesamiento, cada uno con un pequeño archivo de registros y una unidad de multiplicación y acumulación. Entonces, sea el núcleo original esta multiplicación de matrices:

M , K , N = 128 , 64 , 256 para m en [ 0 : M ): para k en [ 0 : K ): para n en [ 0 : N ): Salida [ m ][ n ] += W [ m ][ k ] * Entrada [ k ][ n ]

Un mapeo completo, con un núcleo segmentado y paralelizado y un flujo de datos totalmente especificado, se puede escribir de la siguiente manera. Las iteraciones que se distribuyen entre los elementos de procesamiento para ejecutarse simultáneamente están marcadas con pfor:

# ================ memoria externa ================= para m_mem en [ 0 : 8 ): para k_mem en [ 0 : 1 ): para n_mem en [ 0 : 16 ): # ========= entre elementos de procesamiento ========== p para m_par en [ 0 : 16 ): p para k_par en [ 0 : 16 ): # ========= dentro de los elementos de procesamiento ========== para n_pe en [ 0 : 16 ): para m_pe en [ 0 : 1 ): para k_pe en [ 0 : 4 ): m = m_mem * 16 + m_par + m_pe k = k_mem * 16 * 4 + k_par * 4 + k_pe n = n_mem * 16 + n_pe Salida [ m ][ n ] += W [ m ][ k ] * Entrada [ k ][ n ]

La reutilización de datos temporales se puede observar en forma de estacionariedad, con salidas acumuladas in situ durante k_pelas iteraciones y pesos que permanecen estacionarios durante n_memlas mismas. La reutilización espacial se produce como la reducción de salidas k_pary la multidifusión de entradas a lo largo de m_par. Cada elemento de procesamiento ve, en cambio, un mosaico único de pesos. Al inferir las oportunidades de reutilización explotadas por un mapeo, cualquier bucle con una sola iteración debe ignorarse, mientras que, para cada operando, solo es necesario considerar los bucles que afectan a sus dimensiones. [ 15 ]

Optimización de mapas

El número de mapeos posibles varía según el hardware de destino, pero difícilmente es inferior a miles de millones, debido a la gran cantidad de combinaciones posibles que resultan de las decisiones anteriores. [ 21 ] En consecuencia, encontrar el mejor conjunto de transformaciones que produzca la mayor reutilización de datos y, por lo tanto, la menor latencia de ejecución y el menor consumo de energía para una arquitectura espacial y un kernel, es un problema de optimización complejo . [ 17 ] [ 22 ] [ 19 ]

La mayoría de los diseños de arquitectura espacial se han desarrollado junto con una técnica de mapeo adaptada. [ 1 ] Sin embargo, la complejidad del problema ha motivado el desarrollo de herramientas de mapeo específicas que pueden funcionar para una variedad de arquitecturas espaciales e implementar heurísticas generales que encuentran consistentemente buenos mapeos en un tiempo razonable. [ 5 ] Las técnicas aplicadas con éxito al problema incluyen: [ 7 ]

Ejemplos

Plataformas de arquitectura espacial

En 1992, se sugirieron las "máquinas espaciales" como un enfoque para la computación paralela. [ 24 ] En 2013, se propuso un estándar de programación para la "computación espacial". [ 25 ] Científicos informáticos de la ETH Zúrich han propuesto un modelo de "computadora espacial" para la computación paralela energéticamente eficiente. [ 26 ] AMD describe AMD XDNA como una "arquitectura NPU de flujo de datos espaciales". [ 27 ]

Los ASIC , diseños de aceleradores de hardware totalmente personalizados, son la forma más común en que se han desarrollado arquitecturas espaciales. Esto se debe principalmente a que los ASIC se adaptan bien a los objetivos de diseño de eficiencia de las arquitecturas espaciales. [ 7 ]

Las FPGA pueden considerarse arquitecturas espaciales de grano fino y altamente flexibles. Lo mismo se aplica a las CGRA . [ 1 ] Sin embargo, ambas no se limitan a seguir el paradigma de la arquitectura espacial, ya que pueden, por ejemplo, reconfigurarse para ejecutar la mayoría de las tareas arbitrarias. Por lo tanto, solo deben considerarse una arquitectura espacial cuando se configuran para operar como tal. De hecho, se han desarrollado varios diseños de arquitectura espacial para su implementación en FPGA. [ 28 ] [ 19 ]

Los arreglos sistólicos son una forma de arquitectura espacial, ya que emplean una malla de nodos de computación con una interconexión programable, lo que permite que los cálculos se desarrollen mientras los datos se mueven de forma sincronizada de nodo a nodo. El grafo de flujo computacional de los arreglos sistólicos se alinea naturalmente con las pforasignaciones de la arquitectura espacial. [ 29 ]

Los conjuntos asíncronos de procesadores simples son precursores de las arquitecturas espaciales que siguen el paradigma MIMD y están orientados a cargas de trabajo de procesamiento de señales digitales . [ 1 ] [ 30 ]

Las arquitecturas de flujo de datos también son precursoras de las arquitecturas espaciales como un enfoque de propósito general para explotar el paralelismo entre varias unidades funcionales. Ejecutan un programa iniciando cada cálculo tan pronto como se satisfacen sus dependencias de datos y el hardware requerido está disponible. Las arquitecturas espaciales simplificaron este concepto al dirigirse a núcleos específicos. En lugar de impulsar la ejecución en función de la disponibilidad de datos, utilizan estáticamente las dependencias de datos del núcleo para definir el flujo de datos de toda la arquitectura antes de la ejecución mediante un mapeo. [ 5 ]

No son arquitecturas espaciales

Los procesadores de señales digitales son procesadores altamente especializados con rutas de datos personalizadas para realizar numerosas operaciones aritméticas de forma rápida, concurrente y repetida sobre una serie de muestras de datos. A pesar de las similitudes en los núcleos objetivo, un único procesador de señales digitales no constituye una arquitectura espacial, ya que carece de su paralelismo espacial inherente sobre una matriz de elementos de procesamiento. No obstante, los procesadores de señales digitales se pueden encontrar en FPGA y CGRA, donde podrían formar parte de un diseño de arquitectura espacial más amplio, instanciado en dichas FPGA. [ 19 ]

Los Tensor Core presentes en las GPU de Nvidia desde la serie Volta, si bien aceleran la multiplicación de matrices, tampoco se clasifican como arquitecturas espaciales, ya que son unidades funcionales cableadas que no exponen características espaciales por sí mismas. Asimismo, un multiprocesador de flujo , que contiene múltiples Tensor Core, no es una arquitectura espacial, sino una instancia de SIMT , debido a que su control se comparte entre varios hilos de la GPU. [ 7 ]

Arquitecturas espaciales emergentes o no convencionales

La computación en memoria propone realizar cálculos directamente sobre los datos almacenados en la memoria . Su objetivo es mejorar la eficiencia y la densidad de un cálculo evitando costosas transferencias de datos y reutilizando el hardware de memoria existente. [ 31 ] Por ejemplo, un operando de una multiplicación de matrices podría almacenarse en la memoria, mientras que el otro se carga gradualmente, y la propia memoria produce el resultado final. Si se considera cada grupo de celdas de memoria que realiza un cálculo entre el operando almacenado y uno entrante, como una multiplicación, como un elemento de procesamiento, un banco de memoria con capacidad de computación en memoria puede verse como una arquitectura espacial con un flujo de datos predeterminado. El ancho y la altura del banco forman las características pfors. [ 32 ]

Las computadoras cognitivas desarrolladas como parte de la investigación sobre sistemas neuromórficos son ejemplos de arquitecturas espaciales que buscan acelerar las redes neuronales de impulsos . Cada uno de sus elementos de procesamiento es un núcleo que maneja varias neuronas y sus sinapsis . Recibe impulsos dirigidos a sus neuronas desde otros núcleos, los integra y finalmente propaga los impulsos generados. Los núcleos están conectados a través de una red en chip y generalmente operan de forma asíncrona . Su mapeo consiste en asignar neuronas a los núcleos minimizando la distancia total recorrida por los impulsos, lo que actúa como un indicador de energía y latencia. [ 8 ] [ 33 ]

Implementaciones específicas

Descripción general de la arquitectura de Eyeriss . [ 1 ]
Descripción general de la arquitectura de Simba . [ 2 ]
Descripción general de la arquitectura TPUv1 . [ 9 ]
Descripción general de la arquitectura de Gemmini . [ 28 ]

Arquitecturas espaciales producidas o prototipadas como aceleradores independientes :

  • Eyeriss : [ 1 ] un acelerador de aprendizaje profundo desarrollado por el laboratorio CSAIL del MIT , en particular por el equipo de Vivienne Sze , y presentado en 2016. Emplea una memoria temporal de 108 KB y una cuadrícula de 12x14 elementos de procesamiento, cada uno con un archivo de registro de 0,5 KB. También se ha diseñado una versión sucesora, Eyeriss v2 [ 14 ] , que implementa una interconexión jerárquica entre los elementos de procesamiento para compensar la falta de ancho de banda de la versión original.  
  • DianNao : [ 10 ] una familia de aceleradores de aprendizaje profundo desarrollados en ICT que ofrece variantes orientadas tanto a la computación de borde como a la computación de alto rendimiento. Su arquitectura base utiliza matrices reconfigurables de multiplicadores , sumadores y unidades funcionales específicas de activación para paralelizar la mayoría de las capas de aprendizaje profundo .
  • Simba : [ 2 ] una arquitectura espacial experimental de módulo multichip desarrollada por Nvidia . Cada chip tiene aproximadamente 110  KB de memoria y cuenta con 16 elementos de procesamiento, cada uno con una unidad de multiplicación y acumulación de vectores capaz de realizar un producto escalar entre vectores de 8 elementos. Se han instalado hasta 6x6 chips en el mismo módulo.
  • NVDLA : [ 34 ] una matriz unidimensional, paramétrica y de código abierto de elementos de procesamiento especializados para convoluciones, desarrollada por Nvidia .
  • Unidad de Procesamiento Tensorial (TPU): desarrollada por Google e implementada internamente en sus centros de datos desde 2015, su primera versión empleaba una gran matriz sistólica de 256x256 capaz de 92 TeraOps/segundo y una gran memoria en chip de 28 MB administrada por software. [ 9 ] Se han desarrollado varias versiones posteriores con capacidades crecientes. [ 12 ] 
  • TrueNorth : [ 8 ] un chip neuromórfico producido por IBM en 2014. Cuenta con 4096 núcleos, capaces de manejar 256 neuronas simuladas y 64 000 sinapsis. No tiene un reloj global y los núcleos funcionan según eventos, utilizando lógica síncrona y asíncrona.

Arquitecturas espaciales integradas en productos o plataformas existentes :

  • Gemmini : [ 28 ] [ 29 ] acelerador de aprendizaje profundo basado en matriz sistólica desarrollado por UC Berkeley como parte de su ecosistema RISC-V de código abierto . [ 35 ] Su configuración base es una matriz de 16x16 con 512 KB de memoria, y está diseñado para ser controlado a través de un núcleo estrechamente acoplado. 
  • Motor de IA : [ 36 ] un acelerador desarrollado por AMD e integrado en su serie de productos Ryzen AI . En él, cada elemento de procesamiento es un núcleo VLIW con capacidad SIMD , lo que aumenta la flexibilidad de la arquitectura espacial y le permite explotar también el paralelismo de tareas .

Las cargas de trabajo que se ha demostrado que se ejecutan en estas arquitecturas espaciales incluyen: AlexNet , [ 1 ] ResNet , [ 2 ] [ 28 ] BERT , [ 21 ] [ 28 ] Computación científica . [ 18 ]

Véase también

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 Chen, Yu-Hsin; Emer, Joel; Sze, Vivienne (2016). "Eyeriss: Una arquitectura espacial para el flujo de datos energéticamente eficiente para redes neuronales convolucionales". 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA) . pp. 367–379 . doi : 10.1109/ISCA.2016.40 . ISBN  978-1-4673-8947-1.
  2. 1 2 3 4 5 6 Shao, Yakun Sophia; Cemons, Jason; Venkatesan, Rangharajan; Zimmer, Brian; Fojtik, Matthew; Jiang, Nan; Keller, Ben; Klinefelter, Alicia; Pinckney, Nathaniel; Raina, Priyanka; Tell, Stephen G.; Zhang, Yanqing; Dally, William J.; Emer, Joel; Gray, C. Thomas; Khailany, Brucek; Keckler, Stephen W. (2021). "Simba: Escalando la inferencia de aprendizaje profundo con arquitectura basada en chiplets" . Communications of the ACM . 64 (6). Nueva York, NY, EE. UU.: Association for Computing Machinery: 107–116 . doi : 10.1145/3460227 . ISSN 0001-0782 . 
  3. 1 2 3 Kao, Sheng-Chun; Kwon, Hyoukjun; Pellauer, Michael; Parashar, Angshuman; Krishna, Tushar (2022). "Un formalismo de la flexibilidad del acelerador DNN" . Actas de la ACM sobre medición y análisis de sistemas informáticos . 6 (2). Nueva York, NY, EE. UU.: Association for Computing Machinery: 1–23 . doi : 10.1145/3530907 .
  4. 1 2 3 Sze, Vivienne; Chen, Yu-Hsin; Yang, Tien-Ju; Emer, Joel (2017). "Procesamiento eficiente de redes neuronales profundas: un tutorial y una revisión". Actas del IEEE . 105 (12): 2295– 2329. arXiv : 1703.09039 . doi : 10.1109/JPROC.2017.2761740 .
  5. 1 2 3 4 5 6 Parashar, Angshuman; Raina, Priyanka; Shao, Yakun Sofía; Chen, Yu-Hsin; Ying, Víctor A.; Mukkara, Anurag; Venkatesan, Rangharajan; Khailany, Brucek; Keckler, Stephen W.; Emer, Joel (2019). "Timeloop: un enfoque sistemático para la evaluación del acelerador DNN". Simposio internacional IEEE 2019 sobre análisis del rendimiento de sistemas y software (ISPASS) . págs. 304– 315. doi : 10.1109/ISPASS.2019.00042 . ISBN  978-1-7281-0746-2.
  6. Quinn, Michael J. (2003). Programación paralela en C con MPI y OpenMP . McGraw-Hill Education Group. ISBN 0071232656.
  7. 1 2 3 4 5 6 Silvano, Cristina; Ielmini, Daniele; Ferrandi, Fabricio; Fiorín, Leandro; Curzel, Serena; Benini, Luca; Conti, Francisco; Garófalo, Ángel; Zambelli, Cristian; Calore, Enrico; Schifano, Sebastián; Palesi, Mauricio; Ascia, Giuseppe; Patti, Davide; Petra, Nicola; De Caro, Davide; Lavagno, Luciano; Urso, Teodoro; Cardellini, Valeria; Cardarilli, Gian Carlo; Birke, Robert; Perri, Stefania (2025). "Una encuesta sobre aceleradores de hardware de aprendizaje profundo para plataformas HPC heterogéneas" . Encuestas de Computación ACM . 57 (11). Nueva York, NY, EE. UU.: Association for Computing Machinery: 1– 39. doi : 10.1145/3729215 . hdl : 2108/406544 . ISSN 0360-0300 . 
  8. 1 2 3 Akopyan, Filipp; Sawada, junio; Cassidy, Andrés; Álvarez-Icaza, Rodrigo; Arturo, Juan; Merolla, Paul; Imam, Nabil; Nakamura, Yutaka; Datta, Pallab; Nam, Gi-Joon; Taba, Brian; Beakes, Michael; Brezzo, Bernardo; Kuang, Jente B.; Manohar, Rajit; Riesgo, William P.; Jackson, Bryan; Modha, Dharmendra S. (2015). "TrueNorth: diseño y flujo de herramientas de un chip neurosináptico programable de 65 mW y 1 millón de neuronas". Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados . 34 (10): 1537– 1557. Bibcode : 2015ITCAD..34.1537A . doi : 10.1109/TCAD.2015.2474396 .
  9. 1 2 3 Jouppi, Norman P.; Young, Cliff; otros (2017). "Análisis del rendimiento en un centro de datos de una unidad de procesamiento tensorial" . ACM SIGARCH Computer Architecture News . 45 (2). Nueva York, NY, EE. UU.: Association for Computing Machinery: 1– 12. doi : 10.1145/3140659.3080246 . ISSN 0163-5964 . 
  10. 1 2 Chen, Yunji; Chen, Tianshi; Xu, Zhiwei; Sun, Ninghui; Temam, Olivier (2016). "Familia DianNao: aceleradores de hardware de bajo consumo energético para aprendizaje automático" . Communications of the ACM . 59 (11). Nueva York, NY, EE. UU.: Association for Computing Machinery: 105–112 . doi : 10.1145/2996864 . ISSN 0001-0782 . 
  11. Horowitz, Mark (2014). "1.1 El problema energético de la computación (y qué podemos hacer al respecto)". 2014 IEEE International Solid-State Circuits Conference Digest of Technical Papers (ISSCC) . pp. 10–14 . doi : 10.1109/ISSCC.2014.6757323 . ISBN  978-1-4799-0920-9.
  12. 1 2 Jouppi, Norman P.; Yoon, Doe Hyun; otros (2021). "Diez lecciones de tres generaciones dieron forma al TPUv4i de Google: producto industrial" . 2021 ACM/IEEE 48.º Simposio Internacional Anual sobre Arquitectura de Computadoras (ISCA) . ISCA '21. Evento virtual, España: IEEE Press. págs. 1–14 . doi : 10.1109/ISCA52012.2021.00010 . ISBN  9781450390866.
  13. 1 2 3 Kwon, Hyoukjun; Chatarasi, Prasanth; Sarkar, Vivek; Krishna, Tushar; Pellauer, Michael; Parashar, Angshuman (2020). "MAESTRO: un enfoque centrado en datos para comprender la reutilización, el rendimiento y el costo del hardware de las asignaciones DNN". Micro IEEE . 40 (3): 20– 29. Bibcode : 2020IMicr..40c..20K . doi : 10.1109/MM.2020.2985963 .
  14. 1 2 Chen, Yu-Hsin; Yang, Tien-Ju; Emer, Joel; Sze, Vivienne (2019). "Eyeriss v2: Un acelerador flexible para redes neuronales profundas emergentes en dispositivos móviles". IEEE Journal on Emerging and Selected Topics in Circuits and Systems . 9 (2): 292– 308. arXiv : 1807.07928 . Bibcode : 2019IJEST...9..292C . doi : 10.1109/JETCAS.2019.2910232 . hdl : 1721.1/134768 .
  15. 1 2 Mei, Linyan; Houshmand, Pouya; Jain, Vikram; Giraldo, Sebastian; Verhelst, Marian (2021). "ZigZag: Ampliación de la exploración del espacio de diseño de mapeo de arquitectura conjunta para aceleradores DNN". IEEE Transactions on Computers . 70 (8): 1160– 1174. Bibcode : 2021ITCmp..70.1160M . doi : 10.1109/TC.2021.3059962 .
  16. Hagedorn, Bastian; Stoltzfus, Larisa; Steuwer, Michel; Gorlatch, Sergei; Dubach, Christophe (2018). «Generación de código de plantilla de alto rendimiento con Lift» . Actas del Simposio Internacional de Generación y Optimización de Código de 2018. CGO '18. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 100–112 . doi : 10.1145/3168824 . ISBN  9781450356176.
  17. 1 2 3 Huang, Qijing; Kang, Minwoo; Dinh, Grace; Norell, Thomas; Kalaiah, Aravind; Demmel, James; Wawrzynek, John; Shao, Yakun Sophia (2021). "CoSA: Planificación mediante optimización restringida para aceleradores espaciales". 2021 ACM/IEEE 48.º Simposio Internacional Anual sobre Arquitectura de Computadoras (ISCA) . págs. 554–566 . doi : 10.1109/ISCA52012.2021.00050 . ISBN  978-1-6654-3333-4.
  18. 1 2 Moon, Gordon Euhyun; Kwon, Hyoukjun; Jeong, Geonhwa; Chatarasi, Prasanth; Rajamanickam, Sivasankaran; Krishna, Tushar (2022). "Evaluación de arquitecturas de aceleradores espaciales con multiplicación de matriz en mosaico". IEEE Transactions on Parallel and Distributed Systems . 33 (4): 1002– 1014. Bibcode : 2022ITPDS..33.1002M . doi : 10.1109/TPDS.2021.3104240 . OSTI 1820407 . 
  19. 1 2 3 4 Serena, Curzel; Fabricio, Ferrandi; Leandro, Fiorin; Daniele, Ielmini; Cristina, Silvano; Francisco, Conti; Luca, Bompani; Luca, Benini; Enrico, Calore; Sebastián, Fabio; Cristian, Zambelli; Maurizio, Palesi; Giuseppe, Ascia; Enrico, Ruso; Valeria, Cardellini; Salvatore, Filippone; Francisco, Lo; Stefanía, Perri (2023). "Una encuesta sobre metodologías de diseño para acelerar el aprendizaje profundo en arquitecturas heterogéneas". arXiv : 2311.17815 [ cs.AR ].
  20. 1 2 Kao, Sheng-Chun; Krishna, Tushar (2020). "GAMMA: Automatización del mapeo de hardware de modelos DNN en aceleradores mediante algoritmo genético" . Actas de la 39.ª Conferencia Internacional sobre Diseño Asistido por Computadora . ICCAD '20. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 1–9 . doi : 10.1145/3400302.3415639 . ISBN  9781450380263.
  21. 1 2 Sehoon, Kim; Coleman, Hooper; Thanakul, Wattanawong; Minwoo, Kang; Ruohan, Yan; Hasan, Genc; Grace, Dinh; Qijing, Huang; Kurt, Keutzer; Michael, W.; Yakun, Sophia; Amir, Gholami (2023). "Optimización de pila completa de la inferencia de transformadores: una revisión". arXiv : 2302.14017 [ cs.CL ].
  22. 1 2 Symons, Arne; Mei, Linyan; Verhelst, Marian (2021). "LOMA: Planificación automática rápida en aceleradores DNN mediante asignación de memoria basada en el orden de los bucles". 2021 IEEE 3rd International Conference on Artificial Intelligence Circuits and Systems (AICAS) . pp. 1–4 . doi : 10.1109/AICAS51828.2021.9458493 . ISBN  978-1-6654-1913-0.
  23. Jung, Victor JB; Symons, Arne; Mei, Linyan; Verhelst, Marian; Benini, Luca (2023). "SALSA: Planificador de ordenación de bucles basado en recocido simulado para aceleradores de DNN". 2023 IEEE 5.ª Conferencia Internacional sobre Circuitos y Sistemas de Inteligencia Artificial (AICAS) . págs. 1–5 . doi : 10.1109/AICAS57966.2023.10168625 . hdl : 11585/958507 . ISBN  979-8-3503-3267-4.
  24. Yosee Feldman y Ehud Shapiro, CACM , 35(10), páginas 61 a 73, 1992.
  25. HPCWire, el consorcio OpenSPL presenta un nuevo estándar de programación para computación espacial .
  26. Lukas Gianinazzi, y otros, 2023 .
  27. AMD, Arquitectura AMD XDNA .
  28. 1 2 3 4 5 Genc, ​​Hasan; Kim, Seah; Amid, Alon; Haj-Ali, Ameer; Iyer, Vighnesh; Prakash, Pranav; Zhao, Jerry; Grubb, Daniel; Liew, Harrison; Mao, Howard; Ou, Albert; Schmidt, Colin; Steffl, Samuel; Wright, John; Stoica, Ion; Ragan-Kelley, Jonathan; Asanovic, Krste; Nikolic, Borivoje; Shao, Yakun Sophia (2021). "Gemmini: Habilitación de la evaluación sistemática de la arquitectura de aprendizaje profundo mediante la integración de pila completa". 2021 58.ª Conferencia de Automatización del Diseño ACM/IEEE (DAC) . págs. 769–774 . arXiv : 1911.09925 . doi : 10.1109/DAC18074.2021.9586216 . ISBN  978-1-6654-3274-0.
  29. ^ " Tutorial de Géminis en IISWC 2021" . berkeley.edu . 2025-07-07.
  30. Baas, Bevan; Yu, Zhiyi; Meeuwsen, Michael; Sattari, Omar; Apperson, Ryan; Work, Eric; Webb, Jeremy; Lai, Michael; Mohsenin, Tinoosh; Truong, Dean; Cheung, Jason (marzo-abril de 2007). "AsAP: una plataforma multinúcleo de grano fino para aplicaciones DSP". IEEE Micro . 27 (2): 34– 45. Bibcode : 2007IMicr..27b..34B . doi : 10.1109/MM.2007.29 . S2CID 18443228 . 
  31. Jaiswal, Akhilesh; Chakraborty, Indranil; Agrawal, Amogh; Roy, Kaushik (2019). "Celda SRAM 8T como motor de producto escalar multibit para computación más allá de Von Neumann". IEEE Transactions on Very Large Scale Integration (VLSI) Systems . 27 (11): 2556– 2567. arXiv : 1802.08601 . Bibcode : 2019ITVL...27.2556J . doi : 10.1109/TVLSI.2019.2929245 .
  32. Andrulis, Tanner; Emer, Joel S.; Sze, Vivienne (2024). "CiMLoop: Una herramienta de modelado de computación en memoria flexible, precisa y rápida". Simposio Internacional IEEE de 2024 sobre Análisis de Rendimiento de Sistemas y Software (ISPASS) . págs. 10–23 . arXiv : 2405.07259 . doi : 10.1109/ISPASS61541.2024.00012 . ISBN  979-8-3503-7638-8.
  33. ^ Davies, Mike; Srinivasa, Narayan; Lin, Tsung-Han; Chinya, Gautham; Cao, Yongqiang; Choday, Sri Harsha; Dimou, Georgios; Joshi, Prasad; Imam, Nabil; Jainista, Shweta; Liao, Yuyun; Lin, Chit-Kwan; Líneas, Andrés; Liu, Ruokun; Mathaikutty, Deepak; McCoy, Steven; Pablo, Arnab; Tse, Jonathan; Venkataramanan, Guruguhanathan; Weng, Yi-Hsin; Salvaje, Andrés; Yang, Yoonseok; Wang, Hong (2018). "Loihi: un procesador neuromórfico de muchos núcleos con aprendizaje en chip". Micro IEEE . 38 (1): 82– 99. Bibcode : 2018IMicr..38a..82D . doi : 10.1109/MM.2018.112130359 .
  34. ^ "Introducción a NVDLA" . nvdla.org . 2025-07-07.
  35. «Astillero» . rebanada.eecs.berkeley.edu . 2025-07-07.
  36. "Tecnología AMD AI Engine" . amd.com . 7 de julio de 2025.

Lecturas adicionales

  • Sze, Vivienne; Chen, Yu-Hsin; Yang, Tien-Ju; Emer, Joel S. (2022). Procesamiento eficiente de redes neuronales profundas . Morgan & Claypool Publishers. ISBN 978-3-031-01766-7.
  • Proyecto Eyeriss (MIT)
  • Tutorial sobre aceleradores de hardware para redes neuronales profundas (MIT)
  • Descripción general de Timeloop/Accelergy
  • Investigación de Nvidia: Simba
Obtenido de " https://en.wikipedia.org/w/index.php?title=Spatial_architecture&oldid=1339691466 "