Documento de Uemc Universidad Europea Miguel de Cervantes sobre Programación de algoritmos paralelos. El Pdf explora la introducción a la programación paralela, las etapas de diseño y la granularidad, con un enfoque en PVM (Parallel Virtual Machine) para estudiantes universitarios de Informática.
Ver más22 páginas
Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
Ampliación de Sistemas Operativos
GRADO EN INGENIERÍA INFORMÁTICA
Programación de algoritmos paralelos. Autor: Lorena Calavia Domínguez
UEMO universidad online UEMC Universidad Europea Miguel de Cervantes
Tema 3: Programación de algoritmos paralelos
UEMOP universidad online
Este tema comienza con una introducción a la programación paralela que destaca la importancia de comprender el problema que se desea resolver y determinar si realmente se puede paralelizar ya que paralelizar no siempre implica una mejora en la velocidad de ejecución y es importante evaluar si la mejora compensará el esfuerzo a realizar.
Posteriormente se habla de las etapas de diseño en caso de que el algoritmo sea paralelizable. Uno de los primeros pasos es dividir el problema en "trozos" discretos de trabajo que se pueden distribuir en varias tareas. En este punto entra el concepto de granularidad: cómo se divide el problema en muchas tareas pequeñas o pocas tareas grandes. Cada una de estas opciones va a tener sus ventajas e inconvenientes y de manera general, la mejor solución va a ser una intermedia. Una vez definidas las tareas, es necesario establecer las relaciones de comunicación entre ellas para coordinarlas y luego asignar las tareas a los distintos nodos de computación.
Para programar un algoritmo paralelo existen librerías paralelas como Open MP, MPI y PVM que facilitan el trabajo. MPI es de creación estática, mientras que PVM permite la creación y destrucción dinámica de procesos durante la ejecución del programa. En nuestro caso, se estudiará PVM para poder desarrollar nuestros propios algoritmos de ejecución paralela.
El tema se va a dividir en 5 puntos:
No es necesario tener conocimientos previos para tener éxito en el estudio y superación de este tema, aunque sí se recomienda tener conocimientos de programación en C.
UEMOP universidad online
El tema se va a estructurar de la siguiente manera:
Programación de algoritmos paralelos
Introducción a la programación paralela
Etapas del diseño de un algoritmo paralelo
Granularidad
Algoritmos paralelos
PVM (Parallel Virtual Machine)
UEMOP universidad online
Sin duda, el primer paso para desarrollar software en paralelo es comprender primero el problema que se desea resolver en paralelo. Si está comenzando con un programa en serie, esto significa comprender también el código existente.
Antes de dedicar tiempo a intentar desarrollar una solución paralela para un problema, habría que determinar si el problema es o no uno que realmente se puede paralelizar. El nivel de paralelismo va a depender de la independencia de las tareas del problema.
? ¿Si dividimos un programa en n trozos y lo lanzamos en un sistema de n procesadores paralelos, el programa se ejecutaría n veces más rápido que su equivalente secuencial en un solo procesador?
¿Cuándo es conveniente el paralelismo? Paralelizar un programa no implica siempre una mejora o incremento en la velocidad de su ejecución. Lo primero que hay que hacer es identificar las partes independientes de un programa y luego habrá que alterar el código para que este se ejecute en paralelo. En este punto tenemos que evaluar si la mejora del sistema va a compensar el esfuerzo a realizar.
En caso de que se puede paralelizar, en el diseño de un algoritmo paralelo hay que tener en cuenta:
UEMOP universidad online
Uno de los primeros pasos en el diseño de un programa paralelo es dividir el problema en "trozos" discretos de trabajo que se pueden distribuir en varias tareas. Esto se conoce como descomposición o partición.
Hay dos formas básicas de dividir el trabajo computacional entre tareas paralelas: descomposición de dominio y descomposición funcional.
En la descomposición de dominio, se separan los datos asociados a un problema y luego cada tarea paralela trabaja en una parte de los datos.
En la descomposición funcional, la atención se centra en el cálculo que se va a realizar en lugar de en los datos manipulados por el cálculo. El problema se descompone de acuerdo al trabajo que se debe realizar. Luego, cada tarea realiza una parte del trabajo general.
Una vez establecidas las tareas hay que definir las relaciones de comunicación entre tareas para coordinarlas y después asignar las tareas a los nodos de computación
Características Arquitectura Descomposición Asignación Cálculo a paralelizar Descripción tareas + Estructura de Comunicación Correspondencia tareas-procesos
Figura 1. Etapas del diseño de un algoritmo paralelo
En computación paralela, la granularidad determina el grado de descomposición de las tareas y va a ser una medida cualitativa de la relación entre computación y comunicación.
Los períodos de cómputo normalmente están separados de los períodos de comunicación por eventos de sincronización.
Tenemos diferentes opciones al dividir el problema en tareas:
UEMOD universidad online
En una granularidad fina se realizan cantidades relativamente pequeñas de trabajo lo que facilita el balanceo de carga, pero implica una gran sobrecarga de comunicación y menos oportunidades para mejorar el rendimiento. Si la granularidad es demasiado fina, es posible que la sobrecarga requerida para las comunicaciones y la sincronización entre tareas suponga más tiempo que el cálculo.
En una granularidad gruesa se realizan cantidades relativamente grandes de trabajo computacional entre eventos de comunicación/sincronización con lo que habra una alta relación computación/comunicación implicando más oportunidades para aumentar el rendimiento, pero será más difícil de equilibrar la carga de manera eficiente
¿Cuál de las dos es el mejor?
La granularidad más eficiente depende del algoritmo y del entorno de hardware en el que se ejecuta. En la mayoría de los casos, la sobrecarga asociada con las comunicaciones y la sincronización es alta en relación con la velocidad de ejecución, por lo que es ventajoso tener una granularidad gruesa pero el paralelismo de grano fino puede ayudar a reducir los gastos generales debido al desequilibrio de carga.
T = Tiempo de proceso Tiempo de comunicación Nº de tareas
zona óptima
Figura 2. Granularidad óptima
En un algoritmo paralelo lo habitual es que haya un reparto de tareas y datos para un procesamiento paralelo de los mismos y una etapa final de reunion y combinación de las diferentes respuestas para obtener un resultado final único.
Hay diferentes formas de organizar un algoritmo paralelo:
UEMOP universidad online
Los lenguajes de programación para máquinas paralelas más usados son C y Fortran.
Existen además librerías paralelas como Open MP/MPI/PVM (máquina virtual paralela) que facilitan el trabajo.
MPI es de creación estática de manera que todos los procesos son especificados antes de la ejecución. En este caso el sistema ejecutará con un número fijo de procesos cuya creación se realizará a nivel de la línea de comando.
En PVM la creación es dinámica de manera que los procesos pueden ser creados y sus ejecuciones iniciadas durante la ejecución de otros procesos. En este caso los procesos pueden ser destruidos dinámicamente y tanto la creación como la destrucción se realiza mediante constructores o llamadas a librerías que provean la funcionalidad paralela y puede ser realizada condicionalmente, por lo que el número de procesos puede variar durante la ejecución de un programa.
PVM es una librería de rutinas de dominio público para programación paralela mediante el paso de mensajes. Las rutinas de PVM comunican procesos que pueden ejecutarse en el mismo o en diferentes procesadores. Está pensada para ejecutarse en plataformas heterogéneas.
Si los procesos residen en el mismo procesador, se comunicarán a través del sistema operativo, sino se comunican a través de la red de interconexión.
Procesador 1 Red de interconexión Pla pvmd 1 P1b Procesador 2 P2 pvmd 2 Procesador n Pn pvmd n
Figura 3. PVM
UEMOP universidad online