Cálculo de resultados casi exactos
La computación aproximada es un paradigma emergente para el diseño de alto rendimiento y/o eficiencia energética. [1] Incluye una gran cantidad de técnicas de cálculo que devuelven un resultado posiblemente inexacto en lugar de un resultado preciso garantizado, y que se pueden utilizar para aplicaciones donde un resultado aproximado es suficiente para su propósito. [2] Un ejemplo de tal situación es para un motor de búsqueda donde puede no existir una respuesta exacta para una determinada consulta de búsqueda y, por lo tanto, muchas respuestas pueden ser aceptables. De manera similar, la pérdida ocasional de algunos fotogramas en una aplicación de video puede pasar desapercibida debido a las limitaciones perceptivas de los humanos. La computación aproximada se basa en la observación de que en muchos escenarios, aunque realizar un cálculo exacto requiere una gran cantidad de recursos, permitir una aproximación limitada puede proporcionar ganancias desproporcionadas en rendimiento y energía, al mismo tiempo que se logra una precisión de resultado aceptable. [ aclaración necesaria ] Por ejemplo, en el algoritmo de agrupamiento de k -medias , permitir solo un 5% de pérdida en la precisión de la clasificación puede proporcionar un ahorro de energía 50 veces mayor en comparación con la clasificación completamente precisa.
El requisito clave en el cálculo aproximado es que la aproximación se puede introducir solo en datos no críticos, ya que la aproximación de datos críticos (por ejemplo, operaciones de control) puede llevar a consecuencias desastrosas, como el bloqueo del programa o una salida errónea.
Estrategias
Se pueden utilizar varias estrategias para realizar cálculos aproximados.
- Circuitos aproximados
- Circuitos aritméticos aproximados: [3] sumadores , [4] [5] multiplicadores [6] y otros circuitos lógicos pueden reducir la sobrecarga del hardware. [7] [8] [9] Por ejemplo, un sumador multibit aproximado puede ignorar la cadena de acarreo y, por lo tanto, permitir que todos sus subsumadores realicen operaciones de suma en paralelo. [10] [11]
- Almacenamiento y memoria aproximados
- En lugar de almacenar valores de datos de forma exacta, se pueden almacenar de forma aproximada, por ejemplo, truncando los bits más bajos en datos de punto flotante . Otro método es aceptar una memoria menos confiable. Para esto, en DRAM [12] y eDRAM , las asignaciones de frecuencia de actualización se pueden reducir o controlar. [13] En SRAM , el voltaje de suministro se puede reducir [14] o controlar. [15] Se puede aplicar un almacenamiento aproximado para reducir el alto consumo de energía de escritura de MRAM . [16] En general, se deben deshabilitar todos los mecanismos de detección y corrección de errores .
- Aproximación a nivel de software
- Existen varias formas de aproximarse a nivel de software. Se puede aplicar la memorización o memorización difusa (el uso de una base de datos vectorial para la recuperación aproximada de un caché, es decir , el almacenamiento en caché difuso). Se pueden omitir algunas iteraciones de bucles (lo que se denomina perforación de bucles ) para lograr un resultado más rápido. También se pueden omitir algunas tareas, por ejemplo, cuando una condición de tiempo de ejecución sugiere que esas tareas no van a ser útiles ( omisión de tareas ). Los algoritmos de Monte Carlo y los algoritmos aleatorios intercambian la corrección por garantías de tiempo de ejecución. [17] El cálculo se puede reformular de acuerdo con paradigmas que permitan fácilmente la aceleración en hardware especializado, por ejemplo, una unidad de procesamiento neuronal. [18]
- Sistema aproximado
- En un sistema aproximado, [19] [20] diferentes subsistemas del sistema, como el procesador, la memoria, el sensor y los módulos de comunicación, se aproximan sinérgicamente para obtener una curva de compensación QE a nivel de sistema mucho mejor en comparación con las aproximaciones individuales a cada uno de los subsistemas.
Áreas de aplicación
La computación aproximada se ha utilizado en una variedad de dominios donde las aplicaciones son tolerantes a errores, como el procesamiento multimedia , el aprendizaje automático , el procesamiento de señales y la computación científica . Por lo tanto, la computación aproximada está impulsada principalmente por aplicaciones que están relacionadas con la percepción/cognición humana y tienen una resiliencia inherente a los errores. Muchas de estas aplicaciones se basan en el cálculo estadístico o probabilístico, por ejemplo, se pueden realizar diferentes aproximaciones para adaptarse mejor a los objetivos deseados. [21]
Una aplicación notable en el aprendizaje automático es que Google está utilizando este enfoque en sus unidades de procesamiento Tensor (TPU, un ASIC personalizado). [22]
Paradigmas derivados
El principal problema en la computación aproximada es la identificación de la sección de la aplicación que puede ser aproximada. En el caso de aplicaciones a gran escala, es muy común encontrar personas que tienen experiencia en técnicas de computación aproximada pero que no tienen suficiente experiencia en el dominio de la aplicación (y viceversa). Para resolver este problema, se han propuesto paradigmas de programación [23] . Todos ellos tienen en común la clara separación de roles entre el programador de la aplicación y el experto en el dominio de la aplicación . Estos enfoques permiten la difusión de las optimizaciones y técnicas de computación aproximada más comunes.
Véase también
Referencias
- ^ J. Han y M. Orshansky, "Computación aproximada: un paradigma emergente para el diseño energéticamente eficiente", en el 18º Simposio Europeo de Pruebas IEEE, págs. 1-6, 2013.
- ^ A. Sampson, et al. "EnerJ: Tipos de datos aproximados para computación segura y general de bajo consumo", en ACM SIGPLAN Notices, vol. 46, núm. 6, 2011.
- ^ Jiang et al., "Circuitos aritméticos aproximados: un estudio, caracterización y aplicaciones recientes", Actas del IEEE, vol. 108, n.º 12, págs. 2108-2135, 2020.
- ^ J. Echavarria, et al. "FAU: Unidades sumadoras aproximadas rápidas y optimizadas en función de errores en FPGAs basados en LUT", FPT, 2016.
- ^ J. Miao, et al. "Modelado y síntesis de sumadores aproximados óptimos de calidad-energía", ICCAD, 2012
- ^ Rehman, Semeen; El-Harouni, Walaa; Shafique, Mahoma; Kumar, Akash; Henkel, Jörg (7 de noviembre de 2016). Exploración arquitectónico-espacial de multiplicadores aproximados . ACM. pag. 80. doi :10.1145/2966986.2967005. ISBN 9781450344661. Número de identificación del sujeto 5326133.
- ^ S. Venkataramani, et al. "SALSA: síntesis lógica sistemática de circuitos aproximados", DAC, 2012.
- ^ J. Miao, et al. "Síntesis lógica aproximada bajo restricciones generales de magnitud y frecuencia de error", ICCAD, 2013
- ^ R. Hegde et al. "Procesamiento de señales energéticamente eficiente mediante tolerancia algorítmica al ruido", ISLPED, 1999.
- ^ Camus, Vincent; Mei, Linyan; Enz, Christian; Verhelst, Marian (diciembre de 2019). "Revisión y evaluación comparativa de arquitecturas de unidades de multiplicación-acumulación escalables con precisión para el procesamiento de redes neuronales integradas". IEEE Journal on Emerging and Selected Topics in Circuits and Systems . 9 (4): 697–711. Bibcode :2019IJEST...9..697C. doi : 10.1109/JETCAS.2019.2950386 . ISSN 2156-3357.
La implementación elegida en este estudio supone un multiplicador secuencial de desplazamiento a la derecha, ya que requiere un sumador de primera etapa más pequeño que un diseño de desplazamiento a la izquierda, lo que evita la propagación de acarreo largo y la extensión de bits de signo.
- ^ Nagornov, Nikolay N.; Lyakhov, Pavel A.; Bergerman, Maxim V.; Kalita, Diana I. (2024). "Tendencias modernas en la mejora de las características técnicas de dispositivos y sistemas para el procesamiento de imágenes digitales". IEEE Access . 12 : 44659–44681. Bibcode :2024IEEEA..1244659N. doi : 10.1109/ACCESS.2024.3381493 . ISSN 2169-3536.
La adición y acumulación de bits de orden superior no se realiza hasta la reducción parcial del producto para la siguiente multiplicación en la arquitectura propuesta.
- ^ Raha, A.; Sutar, S.; Jayakumar, H.; Raghunathan, V. (julio de 2017). "DRAM aproximada configurable de calidad". Transacciones IEEE en computadoras . 66 (7): 1172-1187. doi : 10.1109/TC.2016.2640296 . ISSN 0018-9340.
- ^ Kim, Yongjune; Choi, Won Ho; Guyot, Cirilo; Cassuto, Yuval (diciembre de 2019). "Sobre la asignación óptima de energía de actualización para memorias energéticamente eficientes". Conferencia de Comunicaciones Globales IEEE 2019 (GLOBECOM) . Waikoloa, Hola, Estados Unidos: IEEE. págs. 1–6. arXiv : 1907.01112 . doi :10.1109/GLOBECOM38437.2019.9013465. ISBN 978-1-7281-0962-6.S2CID 195776538 .
- ^ Frustaci, Fabio; Blaauw, David ; Sylvester, Dennis; Alioto, Massimo (junio de 2016). "SRAM aproximadas con gestión dinámica de la calidad de la energía". IEEE Transactions on Very Large Scale Integration (VLSI) Systems . 24 (6): 2128–2141. doi :10.1109/TVLSI.2015.2503733. ISSN 1063-8210. S2CID 8051173.
- ^ Kim, Yongjune; Kang, Mingu; Varshney, Lav R.; Shanbhag, Naresh R. (2018). "Relleno de agua generalizado para SRAM energéticamente eficientes que tienen en cuenta la fuente". IEEE Transactions on Communications . 66 (10): 4826–4841. arXiv : 1710.07153 . doi :10.1109/TCOMM.2018.2841406. ISSN 0090-6778. S2CID 24512949.
- ^ Kim, Yongjune; Jeon, Yoocharn; Choi, Hyeokjin; Guyot, Cyril; Cassuto, Yuval (2022). "Optimización de la fidelidad de escritura de las MRAM mediante un algoritmo de llenado de agua alterno". IEEE Transactions on Communications . 70 (9): 5825–5836. doi :10.1109/TCOMM.2022.3190868. ISSN 0090-6778. S2CID 250565077.
- ^ C. Alippi, Inteligencia para sistemas integrados: un enfoque metodológico, Springer, 2014, págs. 283
- ^ Esmaeilzadeh, Hadi; Sampson, Adrian; Ceze, Luis; Burger, Doug (2012). Aceleración neuronal para programas aproximados de propósito general . 45.º Simposio internacional anual IEEE/ACM sobre microarquitectura. Vancouver, BC: IEEE. págs. 449–460. doi :10.1109/MICRO.2012.48.
- ^ Raha, Arnab; Raghunathan, Vijay (2017). "Hacia compromisos entre energía y precisión en todo el sistema". Actas de la 54.ª Conferencia Anual de Automatización del Diseño 2017. DAC '17. Nueva York, NY, EE. UU.: ACM. págs. 74:1–74:6. doi :10.1145/3061639.3062333. ISBN . 9781450349277. Número de identificación del sujeto 2503638.
- ^ Ghosh, Soumendu Kumar; Raha, Arnab; Raghunathan, Vijay (24 de julio de 2023). "Sistemas de inferencia de bordes aproximados energéticamente eficientes". ACM Transactions on Embedded Computing Systems . 22 (4): 77:1–77:50. doi :10.1145/3589766. ISSN 1539-9087.
- ^ Liu, Weiqiang; Lombardi, Fabrizio; Schulte, Michael (diciembre de 2020). "Computación aproximada: de circuitos a aplicaciones". Actas del IEEE . 108 (12): 2103. doi : 10.1109/JPROC.2020.3033361 .
- ^ Liu, Weiqiang; Lombardi, Fabrizio; Schulte, Michael (diciembre de 2020). "Computación aproximada: de circuitos a aplicaciones". Actas del IEEE . 108 (12): 2104. doi : 10.1109/JPROC.2020.3033361 .
- ^ Nguyen, Donald; Lenharth, Andrew; Pingali, Keshav (2013). "Una infraestructura ligera para el análisis de gráficos". Actas del vigésimo cuarto simposio de la ACM sobre principios de sistemas operativos . ACM. págs. 456–471. doi : 10.1145/2517349.2522739 . ISBN . 9781450323888.