La computación inversa es una aplicación de software del concepto de computación reversible .
Debido a que ofrece una posible solución al problema del calor que enfrentan los fabricantes de chips, la computación reversible ha sido ampliamente estudiada en el área de la arquitectura de computadoras. La promesa de la computación reversible es que la cantidad de pérdida de calor para arquitecturas reversibles sería mínima para un número significativamente grande de transistores. [ 1 ] [ 2 ] En lugar de crear entropía (y por lo tanto calor) a través de operaciones destructivas, una arquitectura reversible conserva la energía al realizar otras operaciones que preservan el estado del sistema. [ 3 ] [ 4 ]
El concepto de computación inversa es algo más simple que el de computación reversible, ya que la computación inversa solo requiere restaurar el estado equivalente de una aplicación de software, en lugar de admitir la reversibilidad del conjunto de todas las instrucciones posibles. Los conceptos de computación reversible se han aplicado con éxito como computación inversa en áreas de aplicaciones de software tales como el diseño de bases de datos , [ 5 ] el punto de control y la depuración, [ 6 ] y la diferenciación de código. [ 7 ] [ 8 ]
Computación inversa para simulación de eventos discretos en paralelo

Basándose en la exitosa aplicación de conceptos de computación inversa en otros dominios de software, Chris Carothers, Kalyan Perumalla y Richard Fujimoto [ 9 ] sugieren la aplicación de la computación inversa para reducir la sobrecarga de guardado de estado en la simulación paralela de eventos discretos (PDES). Definen un enfoque basado en códigos de eventos inversos (que se pueden generar automáticamente) y demuestran las ventajas de rendimiento de este enfoque sobre el guardado de estado tradicional para aplicaciones de grano fino (aquellas con una pequeña cantidad de computación por evento). La propiedad clave que aprovecha la computación inversa es que la mayoría de las operaciones que modifican las variables de estado son de naturaleza "constructiva". Es decir, la operación de deshacer para dichas operaciones no requiere historial. Solo se requieren los valores más recientes de las variables para deshacer la operación. Por ejemplo, operadores como ++, ––, +=, -=, *= y /= pertenecen a esta categoría. Cabe señalar que los operadores *= y /= requieren un tratamiento especial en el caso de multiplicación o división por cero, y condiciones de desbordamiento/subdesbordamiento. Aquí también se incluyen operaciones más complejas, como el desplazamiento circular (el intercambio es un caso especial), y ciertas clases de generación de números aleatorios .
Las operaciones de la forma a = b, los cálculos de módulo y a nivel de bits que resultan en la pérdida de datos se denominan destructivos. Normalmente, estas operaciones solo pueden restaurarse utilizando técnicas convencionales de conservación de estado. Sin embargo, observamos que muchas de estas operaciones destructivas son consecuencia de la llegada de datos contenidos en el evento que se está procesando. Por ejemplo, en el trabajo de Yaun, Carothers, et al., con una simulación TCP a gran escala , [ 10 ] el registro de tiempo del último envío registra la marca de tiempo del último paquete reenviado en un proceso lógico del enrutador. La operación de intercambio hace que esta operación sea reversible.
Historia de la computación inversa aplicada a la simulación de eventos discretos en paralelo.

En 1985, Jefferson introdujo el protocolo de sincronización optimista, que se utilizó en simulaciones paralelas de eventos discretos, conocido como Time Warp. [ 11 ] Hasta la fecha, la técnica conocida como Computación Inversa solo se ha aplicado en software para simulaciones paralelas de eventos discretos sincronizadas optimistamente.
En diciembre de 1999, Michael Frank se graduó de la Universidad de Florida . Su tesis doctoral se centró en la computación inversa a nivel de hardware, pero incluyó descripciones tanto de una arquitectura de conjunto de instrucciones como de un lenguaje de programación de alto nivel (R) para un procesador basado en computación inversa. [ 12 ] [ notas 1 ]
En 1998, Carothers y Perumalla publicaron un artículo para el taller Principios de Simulación Avanzada y Distribuida [ 13 ] como parte de sus estudios de posgrado bajo la dirección de Richard Fujimoto, introduciendo la técnica de Computación Inversa como un mecanismo de retroceso alternativo en simulaciones de eventos discretos paralelos sincronizadas optimistamente (Time Warp). En 1998, Carothers se convirtió en profesor asociado en el Instituto Politécnico Rensselaer . Trabajando con los estudiantes de posgrado David Bauer y Shawn Pearce, Carothers integró el diseño Time Warp de Georgia Tech en el Sistema de Simulación Optimista (ROSS) de Rensselaer, que solo admitía la computación inversa como mecanismo de retroceso. Carothers también construyó modelos RC para BitTorrent en General Electric, así como numerosos protocolos de red con estudiantes ( BGP4 , TCP Tahoe, Multicast ). Carothers creó un curso sobre Simulación Paralela y Distribuida en el que los estudiantes debían construir modelos RC en ROSS.
Casi al mismo tiempo, Perumalla se graduó del Instituto Tecnológico de Georgia y comenzó a trabajar en el Laboratorio Nacional de Oak Ridge (ORNL). Allí construyó el simulador uSik, un sistema PDES con protocolos optimista y conservador combinados. El sistema era capaz de determinar dinámicamente el mejor protocolo para los LP y reasignarlos durante la ejecución en respuesta a la dinámica del modelo. En 2007, Perumalla probó uSik en Blue Gene/L y descubrió que, si bien la escalabilidad se limita a 8K procesadores para la implementación de Time Warp puro, la implementación conservadora escala a 16K procesadores disponibles. Cabe destacar que la evaluación comparativa se realizó utilizando PHOLD con una tasa de eventos remotos restringida del 10%, donde la marca de tiempo de los eventos se determinó mediante una distribución exponencial con una media de 1.0, y se agregó un anticipo adicional de 1.0 a cada evento. Esta fue la primera implementación de PDES en Blue Gene utilizando computación inversa.
De 1998 a 2005, Bauer realizó estudios de posgrado en RPI bajo la dirección de Carothers, centrándose exclusivamente en la computación inversa. Desarrolló el primer sistema PDES basado únicamente en computación inversa, denominado Sistema de Simulación Optimista de Rensselaer (ROSS) [ 14 ] , para sistemas combinados de memoria compartida y distribuida . De 2006 a 2009, Bauer trabajó con EH Page en Mitre Corporation y, en colaboración con Carothers y Pearce, extendió el simulador ROSS al procesador Blue Gene/P (Intrepid) de 131 072. Esta implementación fue estable para tasas de eventos remotos del 100 % (cada evento enviado a través de la red). Durante su estancia en RPI y MITRE, Bauer desarrolló el sistema de simulación de redes ROSS.Net [ 15 ] , que admite el diseño de experimentos semiautomatizados para la optimización de caja negra de modelos de protocolos de red que se ejecutan en ROSS. Un objetivo principal del sistema era optimizar múltiples modelos de protocolos de red para su ejecución en ROSS. Por ejemplo, la creación de una estructura de capas LP para eliminar los eventos que se transmiten entre protocolos LP de red en la misma máquina simulada optimiza la simulación de nodos de red TCP/IP al eliminar las marcas de tiempo de desplazamiento cero entre los protocolos TCP e IP. Bauer también construyó modelos basados en agentes RC para redes de contacto social para estudiar los efectos de las enfermedades infecciosas , en particular la gripe pandémica, que escalan a cientos de millones de agentes; así como modelos RC para redes móviles ad hoc que implementan la funcionalidad de movilidad (detección de proximidad) y la propagación de ondas electromagnéticas de capa física de alta precisión (modelo de matriz de línea de transmisión). [ 16 ]
Recientemente, la comunidad PDES ha impulsado el desarrollo de la simulación continua. Por ejemplo, Fujimoto y Perumalla, en colaboración con Tang et al. [ 17 ] , implementaron un modelo RC de partícula en celda y demostraron una excelente aceleración con respecto a la simulación continua para modelos de luz como partícula. Bauer y Page demostraron una excelente aceleración para un modelo de matriz de línea de transmisión RC (PB Johns, 1971), que modela la luz como una onda en frecuencias de microondas. Bauer también creó una variante RC de SEIR que genera una mejora considerable con respecto a los modelos continuos en el área de la propagación de enfermedades infecciosas. Además, el modelo RC SEIR es capaz de modelar múltiples enfermedades de manera eficiente, mientras que el modelo continuo crece exponencialmente con respecto al número de combinaciones de enfermedades posibles en la población.
Eventos
- RC '05 – 1er Taller Internacional sobre Computación Reversible
- Ciclo de talleres/conferencias sobre computación reversible
Notas
- ↑ El Dr. Frank mantiene dos sitios web con sus publicaciones sobre computación inversa hasta 2004 y posteriores .
Referencias
- ↑ Landauer, Rolf (julio de 1961). "Irreversibilidad y generación de calor en el proceso de computación". IBM Journal of Research and Development . 5 (3): 183– 191. CiteSeerX 10.1.1.68.7646 . doi : 10.1147/rd.53.0183 .
- ↑ Von Neumann, John (1966). Teoría de los autómatas autorreproductores . University of Illinois Press. pág. 388. Consultado el 6 de abril de 2009 .
- ↑ Bennett, Charles H. (1982). "La termodinámica de la computación: una revisión" (PDF) . International Journal of Theoretical Physics . 21 (12): 905– 940. Bibcode : 1982IJTP...21..905B . CiteSeerX 10.1.1.655.5610 . doi : 10.1007/BF02084158 . S2CID 17471991. Recuperado el 6 de abril de 2009 .
- ↑ Frank, Michael P. (junio de 1999). Reversibilidad para la computación eficiente, tesis doctoral (PDF) . Instituto Tecnológico de Massachusetts, Departamento de Ingeniería Eléctrica y Ciencias de la Computación . Recuperado el 6 de abril de 2009 .
- ↑ Leeman Jr., George B. (1986). "Un enfoque formal para deshacer operaciones en lenguajes de programación" . ACM Transactions on Programming Languages and Systems . 8 (1): 50– 87. doi : 10.1145/5001.5005 .
- ↑ Biswas, Bitan; Mall, R. (1999). "Ejecución inversa de programas" . ACM SIGPLAN Notices . 34 (4): 61– 69. doi : 10.1145/312009.312079 . S2CID 11685971 .
- ↑ Griewank, Andreas; Juedes, David; Utke, Jean (1996). "Algorithm 755: Adolc: a package for the automatic differentiation of algorithms written in c/c++" . ACM Transactions on Mathematical Software . 22 (2): 131– 167. doi : 10.1145/229473.229474 . S2CID 7339428 .
- ↑ Grimm, J; Pottier, L.; Rostaing-Schmidt, N. (1996). "Tiempo óptimo y producto espacio-temporal mínimo para invertir una cierta clase de programas" (PDF) . Informe técnico .
- ↑ Carothers, Christopher D.; Perumalla, Kalyan S.; Fujimoto, Richard M. (1999). "Simulaciones paralelas optimistas eficientes mediante computación inversa" (PDF) . ACM Transactions on Modeling and Computer Simulation . 9 (3): 224– 253. CiteSeerX 10.1.1.113.1702 . doi : 10.1145/347823.347828 . S2CID 969021. Archivado del original (PDF) el 17 de julio de 2011. Recuperado el 6 de abril de 2009 .
- ↑ Yaun, Garrett; Carothers, Christopher D.; Kalyanaraman, Shivkumar (2003). "Modelos TCP a gran escala mediante simulación paralela optimista". Decimoséptimo Taller sobre Simulación Paralela y Distribuida, 2003. (PADS 2003). Actas . págs. 153–162 . CiteSeerX 10.1.1.115.1320 . doi : 10.1109/PADS.2003.1207431 . ISBN 978-0-7695-1970-8. S2CID 6196101 .
- ↑ Jefferson, David R. (1985). "Tiempo virtual" (PDF) . ACM Transactions on Programming Languages and Systems . 7 (3): 404– 425. doi : 10.1145/3916.3988 . S2CID 2654080. Recuperado el 6 de abril de 2009 .
- ↑ Vieri, C.; Ammer, MJ; Frank, M.; Margolus, N. ; Knight, T. (junio de 1998). "Un microprocesador totalmente reversible de energía asintóticamente cero" (PDF) . Taller de microarquitectura impulsada por energía : 138–142 .
- ↑ Taller sobre Principios de Simulación Avanzada y Distribuida, ahora Conferencia ACM SIGSIM sobre Principios de Simulación Discreta Avanzada (PADS)
- ↑ Carothers, Christopher D.; Bauer, DW; Pearce, Shawn O. (2002). "ROSS: Un sistema Time Warp modular, de alto rendimiento y baja memoria". Journal of Parallel and Distributed Computing . 62 (11): 1648– 1669. CiteSeerX 10.1.1.78.3105 . doi : 10.1016/S0743-7315(02)00004-7 .
- ↑ Bauer, David W.; Yaun, Garrett; Carothers, Christopher D.; Yuksel, Murat; Kalyanaraman, Shivkumar (2003). "ROSS.Net: Marco de simulación paralela optimista para modelos de Internet a gran escala". Actas de la Conferencia Internacional de 2003 sobre Aprendizaje Automático y Cibernética (IEEE Cat. No. 03EX693) . Vol. 1. págs. 703–711 . doi : 10.1109/WSC.2003.1261486 . ISBN 978-0-7803-8131-5. S2CID 2735827 .
- ↑ Bauer Jr., David W.; Page, Ernest H. (2007). "Simulación paralela optimista de eventos discretos del método de matriz de línea de transmisión basado en eventos". Actas de la 39.ª Conferencia sobre Simulación de Invierno: ¡40 años! Lo mejor está por venir : 676–684 . CiteSeerX 10.1.1.132.307 .
- ↑ Tang, Y.; Perumalla, KS; Fujimoto, RM; Karimabadi, H.; Driscoll, J.; Omelchenko, Y. (2005). "Simulaciones paralelas optimistas de eventos discretos de sistemas físicos mediante computación inversa". Taller sobre principios de simulación avanzada y distribuida (PADS'05) (PDF) . págs. 26–35 . CiteSeerX 10.1.1.110.5893 . doi : 10.1109/PADS.2005.16 . ISBN 978-0-7695-2383-5. S2CID 802601 . Consultado el 06-04-2009 .
- Simulación
- Eventos (informática)
- Computación reversible