Funciones definidas por el usuario en DaVinci

July 5th, 2006

Las funciones definidas por el usuario son programadas en el lenguage DaVinci y son cargadas desde la interfaz de línea de comandos mediante la función source(). Para manejarlas, se parsean del modo usual en DaVinci, aunque catalogando esa rama del árbol sintáctico como una función definida por el usuario (ufunc).

En un entorno distribuido de alta capacidad de cómputo como el que estoy implementando, ¿cómo hacer para sincronizar este tipo de funciones entre los procesos trabajadores? Las funciones son cargadas únicamente en el proceso maestro, de modo que, en principio, los procesos trabajadores no pueden acceder al fichero fuente.

La solución que he encontrado es francamente sencilla: cuando es necesario sincronizar una función, se transmite el código fuente de la misma al trabajador para que este la interprete con el parser local. ¡Es realmente fácil y rápido! La otra opción consistiría en serialize el árbol sintáctico generado en el maestro al parsear la función, pero ¿es esto mejor que transmitir el código fuente y ejecutar el parser en los trabajadores? La verdad es que haciendo una estimación, esta última opción aunque más compleja no mejoraría ni el tiempo de ejecución ni el de transmisión de los datos.

En primer lugar: serializar el árbol sintáctico puede llevar bastante tiempo ¡tanto como crearlo desde un código fuente! En segundo lugar: transmitir el árbol serializado posiblemente lleve tanto tiempo como el código fuente del mismo. Sólo la información que es necesaria enviar para poder descerializar el árbol en los trabajadores ocuparía más que el propio código fuente.

Leave a Reply

Powered by WP Hashcash