Las simulaciones por computadora de sistemas físicos son comunes en ciencia, ingeniería y entretenimiento, pero utilizan varios tipos diferentes de herramientas.
Si, por ejemplo, desea explorar cómo se forma una grieta en el ala de un avión, necesita un modelo físico muy preciso de la vecindad inmediata de la grieta. Pero si desea simular la flexión de un ala del avión bajo diferentes condiciones de vuelo, esmás práctico para usar una descripción más simple y de mayor nivel del ala.
Sin embargo, si desea modelar los efectos de la flexión de las alas en la propagación de la grieta, o viceversa, debe alternar entre estos dos niveles de descripción, lo cual es difícil no solo para los programadores de computadoras sino también para las computadoras,también.
Un equipo de investigadores del Laboratorio de Ciencias de la Computación e Inteligencia Artificial del MIT, Adobe, la Universidad de California en Berkeley, la Universidad de Toronto, Texas A&M y la Universidad de Texas han desarrollado un nuevo lenguaje de programación que maneja ese cambio automáticamente.
En los experimentos, las simulaciones escritas en el lenguaje eran docenas o incluso cientos de veces más rápidas que las escritas en los lenguajes de simulación existentes. Pero solo requerían una décima parte del código que las simulaciones meticulosamente optimizadas a mano que podían alcanzar velocidades de ejecución similares.
"La historia de este artículo es que la compensación entre código conciso y buen desempeño es falsa", dice Fredrik Kjolstad, un estudiante graduado del MIT en ingeniería eléctrica y ciencias de la computación y primer autor de un nuevo documento que describe el idioma ".No es necesario, al menos para los problemas a los que esto se aplica. Pero se aplica a una gran clase de problemas ".
De hecho, dice Kjolstad, el lenguaje de los investigadores tiene aplicaciones fuera de la simulación física, en aprendizaje automático, análisis de datos, optimización y robótica, entre otras áreas. Kjolstad y sus colegas ya han usado el lenguaje para implementar una versión del PageRank original de Googlealgoritmo para ordenar resultados de búsqueda, y actualmente están colaborando con investigadores del Departamento de Física del MIT en una aplicación en cromodinámica cuántica, una teoría de la "fuerza fuerte" que mantiene unidos los núcleos atómicos.
"Creo que este es un lenguaje que no solo será para simulaciones físicas para personas gráficas", dice Saman Amarasinghe, asesor de Kjolstad y profesor de ingeniería eléctrica y ciencias de la computación EECS. "Creo que puede hacer unmuchas otras cosas. Por lo tanto, somos muy optimistas acerca de hacia dónde va ".
Kjolstad presentó el documento en julio en la conferencia Siggraph de la Association for Computing Machinery, la conferencia principal en gráficos por computadora. Sus coautores incluyen Amarasinghe; Wojciech Matusik, profesor asociado de EECS; y Gurtej Kanwar, que era un estudiante universitario del MIT cuandoel trabajo se realizó pero ahora es estudiante de doctorado en física del MIT.
Gráficos frente a matrices
Como explica Kjolstad, la distinción entre las descripciones de bajo y alto nivel de los sistemas físicos se describe más adecuadamente como la distinción entre descripciones que usan gráficos y descripciones que usan álgebra lineal.
En este contexto, un gráfico es una estructura matemática que consiste en nodos, típicamente representados por círculos y bordes, típicamente representados como segmentos de línea que conectan los nodos. Los bordes y los nodos pueden tener datos asociados con ellos. En una simulación física, esolos datos pueden describir pequeños triángulos o tetraedros que se unen para aproximar la curvatura de una superficie lisa. La simulación de bajo nivel puede requerir el cálculo de las fuerzas individuales que actúan, por ejemplo, en cada borde y cara de cada tetraedro.
El álgebra lineal en cambio representa un sistema físico como una colección de puntos, que ejercen fuerzas entre sí. Esas fuerzas se describen mediante una gran cuadrícula de números, conocida como matriz. Simular la evolución del sistema en el tiempo implica multiplicar la matrizpor otras matrices, o por vectores, que son filas individuales o columnas de números.
Las manipulaciones matriciales son una segunda naturaleza para muchos científicos e ingenieros, y el software de simulación popular como MatLab proporciona un vocabulario para describirlas. Pero usar MatLab para producir modelos gráficos requiere un código de propósito especial que traduzca las fuerzas que actúan sobre, por ejemplo, tetraedros individualesen una matriz que describe las interacciones entre puntos. Para cada cuadro de una simulación, ese código tiene que convertir tetraedros en puntos, realizar manipulaciones matriciales y luego mapear los resultados nuevamente en tetraedros. Esto ralentiza drásticamente la simulación.
Por lo tanto, los programadores que necesitan tener en cuenta las descripciones gráficas de los sistemas físicos a menudo escriben su propio código desde cero. Pero manipular los datos almacenados en los gráficos puede ser complicado, y el seguimiento de esas manipulaciones requiere mucho más código que la manipulación matricial ". No es soloque es mucho código ", dice Kjolstad." También es un código complicado "
Traducción automática
El lenguaje de Kjolstad y sus colegas, que se llama Simit, requiere que el programador describa la traducción entre la descripción gráfica de un sistema y la descripción de la matriz. Pero luego, el programador puede usar el lenguaje de álgebra lineal para programar la simulación.
Durante la simulación, sin embargo, Simit no necesita traducir gráficos en matrices y viceversa. En cambio, puede traducir instrucciones emitidas en el lenguaje de álgebra lineal al lenguaje de gráficos, preservando la eficiencia de tiempo de ejecución de las simulaciones codificadas a mano.
Sin embargo, a diferencia de las simulaciones codificadas a mano, los programas escritos en Simit pueden ejecutarse en microprocesadores convencionales o en unidades de procesamiento de gráficos GPU, sin cambiar el código subyacente. En los experimentos de los investigadores, el código Simit que se ejecutaba en una GPU eraentre cuatro y 20 veces más rápido que en un chip estándar.
Fuente de la historia :
Materiales proporcionado por Instituto de Tecnología de Massachusetts . Original escrito por Larry Hardesty. Nota: El contenido puede ser editado por estilo y longitud.
Cite esta página :