La informática 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 exacto 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. Del mismo modo, la caída ocasional de algunos fotogramasen una aplicación de video puede pasar desapercibido debido a las limitaciones de percepción 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. [se necesita aclaración ] Por ejemplo, en el algoritmo de agrupamiento de k- significa , permitir solo un 5% de pérdida en la precisión de la clasificación puede proporcionar 50 veces el ahorro de energía en comparación con la clasificación totalmente precisa.
El requisito clave en la computación aproximada 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 tener consecuencias desastrosas, como fallas del programa o resultados erróneos.
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 aproximado de varios bits puede ignorar la cadena de acarreo y, por lo tanto, permitir que todos sus sumadores secundarios realicen operaciones de suma en paralelo.
- Almacenamiento aproximado
- En lugar de almacenar valores de datos exactamente, se pueden almacenar aproximadamente, por ejemplo, truncando los bits inferiores en datos de coma flotante . Otro método es aceptar una memoria menos confiable. Para ello, en DRAM [10] y eDRAM , la frecuencia de actualización se puede reducir o controlar. [11] En SRAM , la tensión de alimentación se puede reducir [12] o controlar. [13] Se puede aplicar un almacenamiento aproximado para reducir el alto consumo de energía de escritura de MRAM . [14] En general, todos los mecanismos de detección y corrección de errores deben desactivarse.
- Aproximación a nivel de software
- Hay varias formas de realizar una aproximación a nivel de software. Se puede aplicar la memorización . Algunas iteraciones de bucles se pueden omitir (lo que se denomina perforación de bucle ) para lograr un resultado más rápido. Algunas tareas también se pueden omitir, por ejemplo, cuando una condición de tiempo de ejecución sugiere que esas tareas no serán útiles ( omisión de tareas ). Los algoritmos de Monte Carlo y los algoritmos aleatorios intercambian corrección por garantías de tiempo de ejecución. [15] La computación puede reformularse de acuerdo con paradigmas que permitan fácilmente la aceleración en hardware especializado, por ejemplo, una unidad de procesamiento neuronal. [dieciséis]
- Sistema aproximado
- En un sistema aproximado, [17] 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 de QE a nivel del sistema mucho mejor en comparación con las aproximaciones individuales de 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 procesamiento multimedia , aprendizaje automático , procesamiento de señales , 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 resistencia inherente a los errores. Muchas de estas aplicaciones se basan en cálculos estadísticos o probabilísticos, por lo que se pueden realizar diferentes aproximaciones para adaptarse mejor a los objetivos deseados. [18] 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). [19]
Paradigmas derivados
El problema principal en la computación aproximada es la identificación de la sección de la aplicación que se puede aproximar. En el caso de aplicaciones a gran escala, es muy común encontrar personas con experiencia en técnicas de computación aproximadas que no tengan suficiente experiencia en el dominio de la aplicación (y viceversa). Para solucionar este problema, se han propuesto paradigmas de programación [20] . Todos tienen en común la clara separación de roles entre programador de aplicaciones y experto en el dominio de aplicaciones . Estos enfoques permiten la difusión de las optimizaciones más comunes y técnicas de computación aproximadas.
Ver también
- Red neuronal artificial
- Metaheurístico
- PCMOS
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 del IEEE, págs. 1-6, 2013.
- ^ A. Sampson, et al. " EnerJ: Tipos de datos aproximados para cálculos seguros y generales de baja potencia ", en ACM SIGPLAN Notices, vol. 46, no. 6 de 2011.
- ^ Jiang et al., " Circuitos aritméticos aproximados: un estudio, caracterización y aplicaciones recientes ", Actas del IEEE, vol. 108, núm. 12, págs. 2108 - 2135, 2020.
- ^ J. Echavarria, et al. "FAU: Unidades sumadoras aproximadas rápidas y optimizadas para errores en FPGA basadas en LUT", FPT, 2016.
- ^ J. Miao, et al. " Modelado y síntesis de sumadores aproximados óptimos calidad-energía ", ICCAD, 2012
- ^ Rehman, Semeen; El-Harouni, Walaa; Shafique, Muhammad; Kumar, Akash; Henkel, Jörg (7 de noviembre de 2016). Exploración del espacio arquitectónico de multiplicadores aproximados . ACM. pag. 80. doi : 10.1145 / 2966986.2967005 . ISBN 9781450344661.
- ^ 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 y col. " Procesamiento de señales energéticamente eficiente mediante tolerancia algorítmica al ruido ", ISLPED, 1999.
- ^ Raha, A .; Sutar, S .; Jayakumar, H .; Raghunathan, V. (julio de 2017). "Calidad DRAM aproximada configurable" . Transacciones IEEE en computadoras . 66 (7): 1172-1187. doi : 10.1109 / TC.2016.2640296 . ISSN 0018-9340 .
- ^ Kim, Yongjune; Choi, Won Ho; Guyot, Cyril; 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, HI, EE.UU .: IEEE: 1–6. arXiv : 1907.01112 . doi : 10.1109 / GLOBECOM38437.2019.9013465 . ISBN 978-1-7281-0962-6.
- ^ Frustaci, Fabio; Blaauw, David; Sylvester, Dennis; Alioto, Massimo (junio de 2016). "Aproximadamente SRAM con gestión dinámica de la calidad de la energía" . Transacciones IEEE en sistemas de integración a gran escala (VLSI) . 24 (6): 2128–2141. doi : 10.1109 / TVLSI.2015.2503733 . ISSN 1063-8210 .
- ^ Kim, Yongjune; Kang, Mingu; Varshney, Lav R .; Shanbhag, Naresh R. (2018). "Llenado de agua generalizado para SRAM energéticamente eficientes conscientes de la fuente" . Transacciones de IEEE sobre comunicaciones : 1. arXiv : 1710.07153 . doi : 10.1109 / TCOMM.2018.2841406 . ISSN 0090-6778 .
- ^ Kim, Yongjune; Jeon, Yoocharn; Guyot, Cyril; Cassuto, Yuval (junio de 2020). "Optimización de la fidelidad de escritura de MRAM" . Simposio Internacional de Teoría de la Información (ISIT) del IEEE 2020 . Los Ángeles, CA, EE. UU .: IEEE: 792–797. arXiv : 2001.03803 . doi : 10.1109 / ISIT44484.2020.9173990 . ISBN 978-1-7281-6432-8.
- ^ C.Alippi, Inteligencia para sistemas integrados: un enfoque metodológico, Springer, 2014, págs. 283
- ^ Esmaeilzadeh, Hadi; Sampson, Adrian; Ceze, Luis; Hamburguesa, Doug (2012). Aceleración neuronal para programas aproximados de uso 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 las compensaciones de precisión de energía del sistema completo: un estudio de caso de un sistema de cámara inteligente aproximado". Actas de la 54a Conferencia Anual de Automatización del Diseño 2017 . DAC '17. Nueva York, NY, EE. UU .: ACM: 74: 1–74: 6. doi : 10.1145 / 3061639.3062333 . ISBN 9781450349277.
- ^ 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 . Consultado el 26 de mayo de 2021 .
- ^ 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 . Consultado el 26 de mayo de 2021 .
- ^ Nguyen, Donald; Lenharth, Andrew; Pingali, Keshav (2013). "Una infraestructura ligera para análisis de gráficos" . Actas del vigésimo cuarto simposio de ACM sobre principios de sistemas operativos . ACM: 456–471. doi : 10.1145 / 2517349.2522739 . ISBN 9781450323888.