stringtranslate.com

Cálculo inverso

La computación inversa es una aplicación de software del concepto de computación reversible .

La computación reversible se ha estudiado ampliamente en el área de la arquitectura informática porque ofrece una posible solución al problema del calor al que se enfrentan los fabricantes de chips. La promesa de la computación reversible es que la cantidad de pérdida de calor para arquitecturas reversibles sería mínima para cantidades significativamente grandes de transistores. [1] [2] En lugar de crear entropía (y, por lo tanto, calor) mediante operaciones destructivas, una arquitectura reversible conserva la energía realizando otras operaciones que preservan el estado del sistema. [3] [4]

El concepto de computación inversa es algo más simple que la computación reversible, ya que la computación inversa solo se requiere para restaurar el estado equivalente de una aplicación de software, en lugar de respaldar 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 como diseño de bases de datos, [5] puntos de control y depuración, [6] y diferenciación de código. [7] [8]

Computación inversa para simulación de eventos discretos en paralelo

Lista de operaciones que son computables inversamente y sus costos.

Basándose en la aplicación exitosa de los conceptos de computación inversa en otros dominios de software, Chris Carothers, Kalyan Perumalla y Richard Fujimoto [9] sugieren la aplicación de computación inversa para reducir los costos de ahorro de estado en la simulación de eventos discretos en paralelo (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 ahorro de estado tradicional para aplicaciones de grano fino (aquellas con una pequeña cantidad de computación por evento). La propiedad clave que explota 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 tales operaciones no requiere historial. Solo se requieren los valores más actuales de las variables para deshacer la operación. Por ejemplo, operadores como ++, ––, +=, -=, *= y /= pertenecen a esta categoría. Tenga en cuenta 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 pertenecen operaciones más complejas, como el desplazamiento circular (siendo el intercambio un caso especial) y ciertas clases de generación de números aleatorios .

Las operaciones de la forma a = b, cálculos módulo y bit a bit que resultan en la pérdida de datos, se denominan destructivas. Por lo general, estas operaciones solo se pueden restaurar utilizando técnicas convencionales de recuperación de estado. Sin embargo, observamos que muchas de estas operaciones destructivas son una 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 simulación TCP a gran escala, [10] la hora del último envío registra la marca de tiempo del último paquete reenviado en un proceso lógico de 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 paralelos

Taxonomía de simulación digital.

En 1985, Jefferson introdujo el protocolo de sincronización optimista, que se utilizó en simulaciones de eventos discretos paralelos, conocido como Time Warp. [11] Hasta la fecha, la técnica conocida como Computación Inversa solo se ha aplicado en software para simulación de eventos discretos paralelos y sincronizados de manera optimista.

En diciembre de 1999, Michael Frank se graduó en 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 Principles of Advanced and Distributed Simulation [13] como parte de sus estudios de posgrado con Richard Fujimoto, introduciendo la técnica de Computación Inversa como un mecanismo alternativo de reversión en simulaciones de eventos discretos paralelos sincronizados de manera optimista (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 de Georgia Tech Time Warp en el Sistema de Simulación Optimista (ROSS) de Rensselaer, que solo admitía computación inversa como mecanismo de reversión. 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 se requería que los estudiantes construyeran modelos RC en ROSS.

Casi al mismo tiempo, Perumalla se graduó de Georgia Tech y fue a trabajar al Laboratorio Nacional Oak Ridge (ORNL). Allí construyó el simulador uSik, que era un PDES de protocolo optimista/conservador combinado. 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 está limitada a procesadores de 8K para la implementación de Time Warp pura, la implementación conservadora escala a 16K procesadores disponibles. Tenga en cuenta 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 un lookahead adicional de 1.0 agregado a cada evento. Esta fue la primera implementación de PDES en Blue Gene utilizando computación inversa.

De 1998 a 2005, Bauer realizó un trabajo de posgrado en RPI bajo la dirección de Carothers, centrándose únicamente en la computación inversa. Desarrolló el primer sistema PDES basado únicamente en computación inversa, llamado Sistema de Simulación Optimista de Rensselaer (ROSS). [14] para sistemas combinados de memoria compartida y distribuida . De 2006 a 2009, Bauer trabajó bajo la dirección de EH Page en Mitre Corporation y, en colaboración con Carothers y Pearce, llevó el simulador ROSS al procesador 131.072 Blue Gene/P (Intrepid). Esta implementación fue estable para tasas de eventos remotos del 100 % (cada evento enviado a través de la red). Durante su tiempo en RPI y MITRE, Bauer desarrolló el sistema de simulación de red ROSS.Net [15] que admite el diseño de experimentos semiautomatizados para la optimización de caja negra de modelos de protocolo de red que se ejecutan en ROSS. Un objetivo principal del sistema era optimizar múltiples modelos de protocolo de red para su ejecución en ROSS. Por ejemplo, la creación de una estructura de capas de LP para eliminar los eventos que se transmiten entre los LP de protocolo de red en la misma máquina simulada optimiza la simulación de los 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 se escalan a cientos de millones de agentes; así como modelos RC para redes ad-hoc móviles que implementan la funcionalidad de movilidad (detección de proximidad) y 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 también ha dado un impulso al ámbito de la simulación continua. Por ejemplo, Fujimoto y Perumalla, en colaboración con Tang et al. [17], han implementado un modelo RC de partícula en célula y han demostrado 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 RC de matriz de línea de transmisión (PB Johns, 1971), que modela la luz como una onda a frecuencias de microondas. Bauer también creó una variante RC de SEIR que genera una enorme mejora con respecto a los modelos continuos en el área de 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 explota exponencialmente con respecto al número de combinaciones de enfermedades posibles en toda la población.

Eventos

Notas

  1. ^ El Dr. Frank mantiene dos sitios web de sus publicaciones sobre computación inversa hasta 2004 y posteriormente.

Referencias

  1. ^ 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. 
  2. ^ Von Neumann, John (1966). Teoría de los autómatas autorreproductores. University of Illinois Press. p. 388. Consultado el 6 de abril de 2009 .
  3. ^ Bennett, Charles H. (1982). "La termodinámica de la computación: una revisión" (PDF) . Revista internacional de física teórica . 21 (12): 905–940. Código bibliográfico :1982IJTP...21..905B. CiteSeerX 10.1.1.655.5610 . doi :10.1007/BF02084158. S2CID  17471991 . Consultado el 6 de abril de 2009 . 
  4. ^ Frank, Michael P. (junio de 1999). Reversibilidad para computación eficiente, tesis doctoral (PDF) . Instituto Tecnológico de Massachusetts, Departamento de Ingeniería Eléctrica y Ciencias de la Computación . Consultado el 6 de abril de 2009 .
  5. ^ 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 .
  6. ^ Biswas, Bitan; Mall, R. (1999). "Ejecución inversa de programas". Avisos ACM SIGPLAN . 34 (4): 61–69. doi : 10.1145/312009.312079 . S2CID  11685971.
  7. ^ Griewank, Andreas; Juedes, David; Utke, Jean (1996). "Algoritmo 755: Adolc: un paquete para la diferenciación automática de algoritmos escritos en c/c++". ACM Transactions on Mathematical Software . 22 (2): 131–167. doi : 10.1145/229473.229474 . S2CID  7339428.
  8. ^ Grimm, J; Pottier, L.; Rostaing-Schmidt, N. (1996). "Tiempo óptimo y producto espacio-temporal mínimo para revertir una cierta clase de programas" (PDF) . Informe técnico .
  9. ^ Carothers, Christopher D.; Perumalla, Kalyan S.; Fujimoto, Richard M. (1999). "Simulaciones paralelas optimistas eficientes usando 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 desde el original (PDF) el 2011-07-17 . Consultado el 2009-04-06 . 
  10. ^ Yaun, Garrett; Carothers, Christopher D.; Kalyanaraman, Shivkumar (2003). "Modelos TCP a gran escala utilizando 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.S2CID6196101  .​
  11. ^ 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 . Consultado el 6 de abril de 2009 .
  12. ^ Vieri, C.; Ammer, MJ; Frank, M.; Margolus, N .; Knight, T. (junio de 1998). "Un microprocesador totalmente reversible de energía asintóticamente cero" (PDF) . Power Driven Microarchitecture Workshop : 138–142.
  13. ^ Taller sobre los principios de la simulación avanzada y distribuida, ahora ACM SIGSIM Conferencia sobre los principios de la simulación discreta avanzada (PADS)
  14. ^ Carothers, Christopher D.; Bauer, D. W.; Pearce, Shawn O. (2002). "ROSS: Un sistema modular de deformación temporal 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. 
  15. ^ 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. Número de identificación del sujeto  2735827.
  16. ^ 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 invernal: ¡40 años! Lo mejor está por venir : 676–684. CiteSeerX 10.1.1.132.307 . 
  17. ^ Tang, Y.; Perumalla, KS; Fujimoto, RM; Karimabadi, H.; Driscoll, J.; Omelchenko, Y. (2005). "Simulaciones paralelas optimistas de eventos discretos de sistemas físicos utilizando computación inversa". Taller sobre principios de simulación avanzada y distribuida (PADS'05) (PDF) . pp. 26–35. CiteSeerX 10.1.1.110.5893 . doi :10.1109/PADS.2005.16. ISBN.  978-0-7695-2383-5. S2CID  802601 . Consultado el 6 de abril de 2009 . {{cite book}}: |journal=ignorado ( ayuda )