El grupo ha participado en proyectos propios y en conjunto con otros Institutos de Facultad, asistiendo en la definición de los modelos numéricos, su implementación y estudio y mejora de performance utilizando técnicas de procesamiento paralelo.
En este sentido, es posible mencionar los siguientes proyectos :
-
2002 - Desarrollo del motor genético genérico (versión serial 1.0).
El proyecto consistió en el diseno e implementación de un motor que facilita la aplicación de los algoritmos genéticos a los diversos problemas de optimización. El mismo servirá de base para la aplicación de técnicas de programación paralela.
-
2002 - Paralelización del Solver Frontal para la resolución de Sistemas de Ecuaciones, aplicados a Ecuaciones Diferenciales en Derivadas parciales en un modelo de corrientes.
El proyecto propone la implementación del referido método de resolución de sistemas lineales, para su aplicación a la solución de ecuaciones diferenciales en derivadas parciales. Este trabajo se enmarca dentro de un proyecto conjunto con el Instituto de Mecánica de los Fluidos e Ingeniería Ambiental, propuesto al Conicyt.
-
2001 – Paralelización de código para problema de optimización vinculado con la planificación de carga en la red de energía eléctrica
En conjunto con el Instituto de Matemática y Estadística de la Facultad de Ingeniería, se trabajó en la paralelización de parte de un complejo código que resuelve un problema de optimización para el análisis de demanda en la red de energía eléctrica.
-
2000 – Modelación y simulación del flujo en torno a un objeto no aerodinámico
En conjunto con el Instituto de Mecánica de los Fluidos e Ingeniería Ambiental de la Facultad de Ingeniería, se diseñó un modelo numérico de flujo en torno a un objeto en sus versiones serial y paralela. Complementariamente se diseñó un producto para la visualización de resultados y configuración de parámetros físicos y numéricos del problema
-
1997 – Performance of a shallow water model and a global climate model distributed across homogeneous and heterogeneous parallel architectures under improved pvm dispatch. (Acrónimo : URU-Parallel)
Continuando con la idea del proyecto anterior, nuevamente en conjunto con el Instituto de Mecánica de los Fluidos e Ingeniería Ambiental de la Facultad de Ingeniería, se llevó a cabo un estudio de performance de modelos de corrientes y de clima global sobre plataformas distribuidas compuestas por equipos homogéneos y heterogéneos.
-
1997 – A shallow water model distributed using Domain Decomposition. Tesis de Maestría del Ing. Elías Kaplan
El modelo de mareas utilizado en el proyecto anterior fue desarrollado para ejecutar en un entorno distribuido como tesis de Maestría del Ing. Elías Kaplan.
-
1994 – Proyecto Conicyt-BID 87/94, titulado "Programación de un Modelo Numérico de Corrientes de Marea y Viento para uso distribuido en una red de estaciones de trabajo y calibración de dicho modelo en el Río de la Plata y su plataforma continental"
En conjunto con el Instituto de Mecánica de los Fluidos e Ingeniería Ambiental de la Facultad de Ingeniería, se desarrolló el modelo numérico de corrientes del Río de la Plata para uso serial y distribuido en una red de workstations.
Procesamiento distribuido
Se han llevado a cabo diferentes iniciativas para desarrollar aplicaciones que permitan tomar provecho de las ventajas del procesamiento paralelo sobre una arquitectura de computadores distribuida.
-
1998 – Servidor Web Distribuido
El proyecto consistió desarrollar un servicio de bajo nivel que escucha en un puerto determinado de un equipo, de forma que éste sirva de puerta de entrada a servicios que físicamente estarán instalados en otras maquinas que son las que realmente resuelven las consultas a bases de datos, accesos a discos para leer paginas HTML e imágenes, etc. La maquina que centraliza las solicitudes solamente realiza operaciones de entrada/salida a disco para almacenar estadísticas de acceso al sitio web.
-
1997 – Matlab to C++/PVM Translator
El objetivo de este proyecto consistió en agregar al lenguaje Matlab primitivas de control que permiten al traductor de Matlab a C++ (ver siguiente proyecto) generar código para que los programas Matlab compilados se ejecuten en una red de computadoras en forma paralela.
-
1996 – Matlab to C++ Translator
Se diseñó un traductor de Matlab (lenguaje interpretado) al lenguaje C++, lo cual logró combinar la velocidad de desarrollo de Matlab, la eficiencia del lenguaje C, y la fácil administración del software desarrollado en C++. La propuesta consistió en fusionar a dos grandes lenguajes de programación, cada uno excelente en su área: Matlab en manejo algebraico y de procesamiento numérico, y C++ o C en desarrollo de software de base (ambos en gran crecimiento), para crear un ambiente de desarrollo ágil, dinámico, interactivo, expandible, portable a diferentes hardwares, de fácil comercialización y con un amplio grupo de posibles usuarios.
-
1996 – Automatic detection of parallelizable sections of Matlab programs
El objetivo de este proyecto consistió en diseñar un preprocesador de código capaz de identificar automáticamente (a nivel de funciones, y no a nivel de operaciones) que partes de un programa Matlab pueden ser ejecutadas en forma paralela.
Hardware y software para programación paralela y distribuida
El grupo ha participado en proyectos de estudio de plataformas distribuidas y entornos de programación paralela. A continuación se describen los proyectos llevados a cabo en el área.
-
2002 – Programación paralela sobre arquitecturas de memoria compartida y su aplicación a la resolución del problema de Steiner en grafos.
El proyecto consiste en la investigación de técnicas de programación multithreading en arquitecturas paralelas de memoria compartida, orientadas hacia el desarrollo de aplicaciones sobre el multiprocesador Sun SPARCcenter 2000. El análisis de performance se realiza sobre una resolución del problema de Steiner en grafos.
-
2002 – Puesta a punto y comprensión del mecanismo operativo del equipo multiprocesador Sun SPARCcenter 2000.
El arribo del mencionado equipo, donación del BROU a la Facultad, involucrará a los integrantes del grupo en la comprensión del mecanismo operativo y programación sobre el hardware especializado, de modo de lograr los mejores resultados al aplicarlo a la programación de alto desempeño.
-
2000 – Modelado y construcción de una máquina paralela con componentes de bajo costo (en conjunto con el departamento de Investigación Operativa del Instituto de Computación, Facultad de Ingeniería)
El objetivo de este proyecto apunta al aprovechamiento de la potencia de cálculo ociosa de los equipos PC utilizados en aplicaciones de oficina, mediante el desarrollo de una "máquina paralela virtual" capaz de ejecutar las aplicaciones de cálculo intensivo. Para ello, se plantea analizar y resolver dos aspectos: por un lado el desarrollo de un modelo que permita estimar su potencia de cálculo, dimensionando así la configuración necesaria para cada aplicación en particular y por otro la construcción de la "máquina paralela virtual", que implica el estudio y la adaptación de diversos componentes de hardware y de software para el funcionamiento de la misma.
-
1999 – Proyecto CSIC – Despacho Mejorado de Cálculo Científico Distribuido en Redes de Computadoras no dedicadas usando PVM.
El objetivo del proyecto consistió en utilizar técnicas estadísticas de predicción de parámetros de carga de un conjunto de máquinas para desarrollar métodos optimizados de despacho de tareas distribuidas.
Los métodos desarrollados fueron incluidos en la biblioteca PVM.
-
1997 – Replicación de Carga en Redes de Computadoras
Dada una serie temporal con información de carga de N workstations conectadas en red, el objetivo del proyecto consistió en diseñar un producto que permitiera replicar en cualquier momento la carga que tuvieron esas N workstations según las series históricas.
-
1996 – Migración y checkpoint de Procesos en un Ambiente de Computación Distribuida
Los paquetes de dominio publico que permiten programar en ambientes distribuidos (PVM, P4, CHAMELEON) proveen primitivas para detectar workstations no usadas y ubicar procesos en ellas. Pero ninguno de estos paquetes consideraban que dichas workstations no usadas, pueden llegar a tener mucho uso durante el tiempo que dura la ejecución del proceso recién ubicado en esta. El proyecto consistió en la implementación de primitivas para poder migrar un proceso de una workstation a otra, y el agregado de dicha facilidad al entorno PVM.
Procesamiento paralelo aplicado
En los últimos años, el grupo ha trabajado en la aplicación de las técnicas de procesamiento paralelo a los algoritmos evolutivos y otras aplicaciones. En esta línea de trabajo, se han desarrollado y/o actualmente se llevan a cabo los siguientes proyectos :
-
2002 – Proyecto CSIC – Algoritmos Genéticos Paralelos y su Aplicación al diseño de Redes de Comunicaciones Confiables.
El proyecto propone el estudio del paradigma de algoritmos genéticos, la implementación de diferentes modelos en un ambiente paralelo - distribuido, y su aplicación al caso concreto de problemas que surgen al diseñar redes de comunicaciones de alta conectividad topológica.
-
2002 – Algoritmos genéticos paralelos aplicados al entrenamiento de redes neuronales artificiales.
El proyecto propone el estudio de la utilización de los algoritmos genéticos paralelos como mecanismo de entrenamiento de redes neuronales artificiales. Este proyecto se enmarca dentro de la nueva línea de estudio en temas de inteligencia artificial por parte de integrantes del grupo de trabajo.
-
2002 – HPCChess: Paralelismo en la carga de base de datos de partidas para el programa GNUChess.
El proyecto aplica las técnicas de procesamiento paralelo para implementar la carga de la base de datos de partidas del programa de código abierto GNUChess.
-
2002- Paralelismo de la biblioteca PovRay de Computación gráfica.
Propuesta de mejorar la performance de la biblioteca PovRay de Computación Gráfica, utilizando las técnicas de programación paralela y la biblioteca MPI.
-
2001 – Algoritmos genéticos paralelos.
Este proyecto constituyó el punto de partida para la investigación de las técnicas de programación evolutiva y las aplicaciones del paralelismo para su mejora de performance.