Logran multiplicar la velocidad de programas de Unix sin aumentar los errores

Logran multiplicar la velocidad de programas de Unix sin aumentar los errores

Comparta este Artículo en:

Investigadores han desarrollado un nuevo sistema que puede hacer que algunos programas informáticos se ejecuten más rápido, garantizando al mismo tiempo que la precisión no disminuya.

El nuevo sistema aumenta la velocidad de los programas que se ejecutan en la shell de Unix, un entorno de programación omnipresente creado hace medio siglo y que sigue siendo ampliamente utilizado en la actualidad.

El método paraleliza estos programas, lo que significa que divide los componentes del programa en piezas que pueden ejecutarse simultáneamente en varios procesadores del computador.

Esto permite que los programas ejecuten tareas como la indexación de webs, el procesamiento del lenguaje natural o el análisis de datos en una fracción de su tiempo de ejecución original.

Hay mucha gente que utiliza este tipo de programas, como analistas de datos, biólogos, ingenieros y economistas.

Ahora pueden acelerar automáticamente sus programas sin temor a obtener resultados incorrectos“, destaca Nikos Vasilakis, científico del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL), adscrito al Instituto Tecnológico de Massachusetts (MIT), en Cambridge, Estados Unidos.

Vasilakis preside un comité de investigadores de todo el mundo que lleva casi dos años trabajando en este sistema.

El nuevo sistema, denominado PaSh, también facilita las cosas a los programadores que desarrollan las herramientas que utilizan los analistas de datos y esos otros usuarios típicos.

Los programadores no necesitan hacer ningún ajuste especial en los comandos de sus programas para permitir esta paralelización automática y sin errores.

PaSh se centra en programas, o scripts, que se ejecutan en la shell de Unix.

Un script es una secuencia de comandos que ordena a un computador realizar un cálculo.

Entre otros motivos, la shell de Unix sigue siendo popular porque es el único entorno de programación que permite que un script se componga de funciones escritas en varios lenguajes de programación.

Hay tareas o tipos de datos específicos para los que resulta idóneo un lenguaje de programación en particular; si un desarrollador utiliza el lenguaje adecuado, la resolución de un problema puede ser mucho más fácil.

Aunque la shell de Unix permite crear scripts multilingües, su estructura flexible y dinámica hace que estos scripts sean difíciles de paralelizar utilizando métodos tradicionales.

Paralelizar un programa suele ser complicado porque algunas partes del programa dependen de otras.

Esto determina el orden en que los componentes deben ejecutarse; si se equivoca el orden, el programa falla.

Cuando un programa está escrito en un único lenguaje, los desarrolladores disponen de información explícita sobre sus características y el lenguaje que les ayuda a determinar qué componentes pueden paralelizarse.

Pero esas herramientas no existen para los scripts en la shell de Unix.

Los usuarios no pueden ver fácilmente lo que ocurre dentro de los componentes ni extraer información que ayude a la paralelización.

Para superar este problema, PaSh utiliza un paso de preprocesamiento que inserta anotaciones simples en los componentes del programa que cree que podrían ser paralelizables.

A continuación, PaSh intenta paralelizar esas partes del script mientras el programa se está ejecutando, en el momento exacto en que llega a cada componente.

Esto evita otro problema en la programación con la shell: es imposible predecir el comportamiento de un programa por adelantado.

Al paralelizar los componentes del programa en el momento preciso de su ejecución, el sistema evita ese problema.

Es capaz de acelerar eficazmente muchos más componentes que los métodos tradicionales que intentan realizar la paralelización por adelantado.

La paralelización en el momento de la ejecución también garantiza que el programa acelerado siga suministrando resultados precisos.

Si PaSh llega a un componente del programa que no puede ser paralelizado (quizás depende de un componente que aún no se ha ejecutado), simplemente ejecuta la versión original y evita causar un error.

Fuente: MIT News

Leave a Reply

Your email address will not be published. Required fields are marked *