jueves, febrero 28, 2008

Programando en paralelo

Cuando se dispone de una arquitectura de hardware paralela, se puede en ella aplicar esquemas genéricos de paralellización, con la intención de disminuir al máximo, el tiempo total de procesamiento.

De los esquemas existentes, hay tres diferentes según el tipo de problema que se desea resolver.

Los esquemas son: Pipeline, paralelismo geométrico y granja (farmer).

El esquema pipeline funciona cuando se tiene tareas que se pueden divir en tareas consecutivas más pequeñas. Básicamente la idea que se aplica es la misma que la linea de ensamblaje de automóviles. De hecho este esquema se aplica en varios microprocesadores, como los POWERPC.

El paralelismo geométrico se aplica cuando un mismo procedimiento se aplica a diferentes datos. Entonces lo que se hace es subdividir los datos en grupos más pequeños a los que se les aplica el mismo procedimiento a la vez. (Un ejemplo clasico es procesar una imagen con un filtro).

Por ultimo, el esquema de granja es un modelo capataz-trabajadores (master-slave), que se aplica cuando se pueden identificar tareas que son independientes y que trabajan con subgrupos de datos. El propósito es tener un proceso que coordine a procesos que solo se dedican a procesar.

De esta forma se tiene un proceso capataz, que asigna tareas y datos a los procesos trabajadores; y recupera soluciones parciales de los trabajadores. Un ejemplo de esto es el proyecto SETI@home, en donde las màquinas participantes reciben informaciòn a procesar y devuelven los resultados. Todo de manera asincrona.

Etiquetas: