Está en la página 1de 21

Instituto Tecnológico de las Américas

Programación paralela
Wilmer Jose Fariña Piñero
Grupo: 3
Fecha de entrega:
Santo Domingo, Rep.Dom
Los Algoritmos en PP
Como ya sabemos que ejecutar
programas paralelos tienen un
alto coste computacional,
entonces es útil saber que existen
algoritmos que resuelven dicha
Introducción problemática. Dichos algoritmos
tienen como finalidad reducir el
tiempo de ejecución de los
programas paralelos. Dicho esto,
entonces estudiaremos los
conceptos de los algoritmos en
programación paralela.
Ideas Generales

¿Que es un algoritmo paralelo?

Un algoritmo paralelo, es aquel algoritmo que puede ser


ejecutado por partes en el mismo instante de tiempo por varias
unidades de procesamiento, con la finalidad de unir todas las
partes y así obtener el resultado deseado.
Ideas Generales

¿Cual es la función principal de un algoritmo paralelo?

● Reducir el tiempo de ejecución.


Tiempo secuencial

Los programas tienen una característica importante la cual es


llamada tiempo ejecución y este dependerá de los siguientes
aspectos:
● Tamaño de la entrada.
● ● El compilador.
● ● La máquina.
● ● El programador
Tiempo secuencial

El tiempo secuencial es el tiempo desde que empieza la


ejecución del programa hasta que acaba.
Tiempo de ejecución paralela

El tiempo de ejecución paralela es el tiempo que transcurre desde


que empieza la ejecución del primero de los procesadores hasta
que acaba el último de ellos.
Dificultades para estimar el tiempo de ejecución

● No siempre es fácil determinar el orden en que los


procesadores empiezan y acaban.
● A lo largo de la ejecución de un programa paralelo hay puntos
de sincronización de los que no siempre podemos determinar
su duración al no saber el orden en que van a llegar los
distintos procesos o hilos a estos puntos.
Reducción de prestaciones

● Contención de memoria (Mapeo): En la memoria compartida,


el acceso a los datos comunes o que están en el mismo
bloque produce contención.
● Código secuencial: Puede haber partes imposibles de
paralelizar, como I/O.
Reducción de prestaciones

● Tiempo de gestión de procesos o hilos (Agrupación): El costo


de creación del proceso puede ser importante si la
granularidad es pequeña.
Reducción de prestaciones

● Computación extra: Siempre y cuando se obtenga un programa


paralelo a partir de un programa secuencial, entonces son necesarias
computacionales adicionales por:
○ Uso de variables de control.
○ Comprobación de identidades de proceso.
○ Cálculos adicionales
○ comunicacionales para obtener datos calculados por otro
procesador.
Reducción de prestaciones

● Tiempo de sincronización (Comunicación): Cuando un proceso tiene


que esperar a que estén disponibles los datos procesados por otro,
entonces esto conlleva comunicaciones en memoria distribuida.
Reducción de prestaciones

● Desbalanceo de la carga (Agrupación): Cuando el volumen total de la


computación no se distribuye por igual entre todos los procesadores,
entonces puede ser por los siguientes motivos:
○ Trabajan todos los procesadores, pero en los pasos siguientes va
disminuyendo el número de procesadores.
○ También es posible que partamos de una entrada que no se puede
balancear, por ejemplo, si tenemos 12 datos para 8 procesadores.
○ O que el volumen de datos varía a lo largo de la ejecución, con lo que se
necesitará un balance dinámico.
Reducción de prestaciones

● Comunicaciones (Comunicación y Mapeo): En la memoria distribuida, el


tiempo adicional al aritmético puede implicar trabajo de procesadores
intermedios. Mientras que en mapeo se puede producir el coste de las
comunicaciones asignando datos que se comunican frecuentemente a
procesadores vecinos. Se debe evitar comunicaciones, congestión de
la red y las colisiones.
Granularidad

La granularidad de sistema (físico + algoritmo) es la que indica la cantidad


de computación y datos asignados a cada elemento de proceso:
● Grano fino: cuando a cada elemento se le asigna pocos datos o se
realiza poca computación entre comunicaciones.
● Grano grueso: si a cada elemento se le asigna muchos datos o se
realiza mucha computación entre comunicaciones.
Speed-up

● Speed-up mide la ganancia de la velocidad que se obtiene con un


programa paralelo.
● Es el cociente entre el tiempo secuencial y el paralelo. S (n, p) = t (n) / t
(n, p)
● El speed-up será menor que el número de procesadores.
● En algunos casos puede haber speed-up superlineal por la mejor
gestión de la memoria al usar más procesadores.
Conclusión

En conclusión, los algoritmos paralelos nos ayudan a acelerar la resolución


de problemas de alto coste computacional. Vimos que el tiempo de
ejecución secuencial siempre dependerá del tamaño de la entrada, del
compilador, de la máquina y del programador. Además de esto vimos que
no siempre es fácil determinar el orden en que los procesadores empiezan
y acaban.También vimos los pasos para el diseño de un algoritmo paralelo
(Foster) que son los siguientes: particionamiento, comunicación, agrupación
y mapeo.
Glosario

● Tiempo secuencial: es el tiempo desde que empieza la ejecución del


programa hasta que acaba.
● Tiempo de ejecución paralela: es el tiempo transcurrido desde que
empieza la ejecución del primo de los procesadores hasta que acaba el
último de ellos.
● Particionamiento: es descomponer en muchas tareas pequeñas.
● Comunicación: determinar los patrones de comunicación y
sincronización entre tareas.
Glosario

● Agrupación: estudiar formas de agrupar tareas para balancear el


trabajo y reducir comunicaciones.
● Mapeo: asignación de las tareas al sistema computacional.
● Granularidad de un sistema: indica la cantidad de computación y datos
asignados a cada elemento de un proceso.
● Speed-up: mide la ganancia de velocidad que se obtiene con un
programa paralelo.
Bibliografía

Aula virtual ITLA - 0901 Diapositiva Algoritmos en PP

También podría gustarte