Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombres:
Edward Manuel
Apellidos:
Arredondo Maleno
Matricula:
1-17-5078
Materia:
Algoritmo paralelo
Profesor:
Eduardo Arvelo
Fecha:
26/06/2021
ÍNDICE
I. INTRODUCCIÓN.......................................................................................................................3
II. JUSTIFICACIÓN........................................................................................................................4
III. MARCO TEORICO.................................................................................................................5
3.1. DEFINICIÓN DEL ALGORITMOS PARALELOS..............................................................5
3.2. ETAPAS DE LOS ALGORITMOS PARALELOS................................................................5
3.2.1. PARTICIÓN:..................................................................................................................5
3.2.2. COMUNICACIÓN:..........................................................................................................6
3.2.3. AGRUPAMIENTO:........................................................................................................7
3.2.4. ASIGNACIÓN:................................................................................................................7
3.3. TÉCNICAS ALGORITMICAS PARALELAS.......................................................................9
3.4. MODELOS DE ALGORITMOS PARALELOS....................................................................9
IV. CONCLUSIONES..................................................................................................................10
V. LINKOGRAFÍA........................................................................................................................11
I. INTRODUCCIÓN
La mayoría de los algoritmos actuales son secuenciales, es decir, especifican una
secuencia de pasos en los que cada paso consiste en una sola operació n. Estos
algoritmos se adaptan bien a las computadoras actuales, que bá sicamente realizan
operaciones de forma secuencial.
Aunque la velocidad a la que operan las computadoras secuenciales ha mejorado a
una tasa exponencial durante muchos añ os, ahora la mejora tiene un costo cada
vez mayor. Como consecuencia, los investigadores han buscado mejoras má s
rentables mediante la construcció n de computadoras "paralelas": computadoras
que realizan operaciones mú ltiples en un solo paso.
Para resolver un problema de manera eficiente en una má quina paralela,
generalmente es necesario diseñ ar un algoritmo que especifique operaciones
mú ltiples en cada paso, es decir, un algoritmo paralelo
II. MARCO TEORICO
II.3.2. COMUNICACIÓN:
Las tareas generadas por una partició n pueden ejecutarse concurrentemente
pero no pueden, en general, ejecutarse independientemente. Los cá lculos en la
ejecució n de una tarea normalmente requerirá n de datos asociados con otras
tareas. Los datos deben transferirse entre las tareas y así permitir que los cálculos
procedan.
En la descomposició n por dominio, la comunicació n puede ser difícil de
determinar (hay que identificar las operaciones que requieren datos de diferentes
fuentes). En cambio, en la descomposició n funcional, es fá cil de determinar, ya
que las interrelaciones entre las tareas vienen dadas por las funciones que realiza
cada una, y de las cuales quizá s la otra depende. (J. Aguilar, E. Leiss, 2004).
Los tipos de comunicació n está categorizada de la siguiente manera:
Comunicación local y global: Cuando un nú mero pequeñ o de tareas
necesitan valores de otras tareas se crean canales entre las tareas envueltas.
Una tarea se comunica solamente con sus vecinos. Esta es comunicació n local.
Y la comunicació n global ocurre cuando todas o casi todas tareas necesitan
valores de las otras tareas, es decir, cada tarea se comunica con todas, o casi
todas. Así, en una comunicació n global, muchas tareas pueden participar, lo
que puede conllevar a muchas comunicaciones.
Comunicación estructurada y no estructurada: En este tipo de
comunicació n, el patró n de comunicació n de una tarea con sus vecinos forma
una estructura regular, por ejemplo, del tipo á rbol o malla. Las no
estructuradas pueden generar grafos de comunicació n arbitrarios.
Comunicación estática o dinámica: La comunicació n está tica establece
patrones de comunicació n que no cambian en el tiempo, mientras que la
diná mica puede ser solamente determinada durante el tiempo de ejecució n de
la aplicació n.
Comunicación síncrona o asíncrona: La comunicació n síncrona implica que
las tareas se ejecutan coordinadamente (es decir, se deben sincronizar entre
ellas), y la asíncrona significa que cada tarea puede ejecutarse al obtener los
datos que requiere, sin tener que esperar por otras tareas. (J. Aguilar, E. Leiss,
2004).
II.3.3. AGRUPAMIENTO:
Las tareas y las estructuras de comunicació n definidas en las dos primeras etapas
del diseñ o son evaluadas con respecto a los requerimientos de ejecució n y costos
de implementació n: Si es necesario, las tareas son combinadas en tareas má s
grandes para mejorar la ejecució n o para reducir los costos de comunicació n y
sincronizació n.
Reduciendo el nú mero de mensajes, a pesar de que se envíe la misma cantidad de
informació n, se reduce el costo de crear un nuevo canal de comunicació n. (J.
Aguilar, E. Leiss, 2004).
II.3.4. ASIGNACIÓN:
En esta etapa, cada tarea es asignada a un procesador de tal modo que intente
satisfacer las metas de competencia al maximizar la utilizació n del procesador y
minimizar los costos de comunicació n. (J. Aguilar, E. Leiss, 2004).
La asignació n puede ser está tica (se establece antes de la ejecució n del programa)
o en tiempo de ejecució n mediante algoritmos de balanceo de carga.
La asignació n de tareas puede ser realizada de las siguientes maneras:
Asignación estática: Aquí, las tareas son asignadas a un procesador al
comienzo de la ejecució n del algoritmo paralelo y corren ahí hasta el final.
En ciertos casos puede resultar en un tiempo de ejecució n menor respecto
a asignaciones diná micas y también puede reducir el costo de creació n de
procesos, sincronizació n y terminació n.
Asignación dinámica: Se hacen cambios en la distribució n de las tareas
entre los procesadores a tiempo de ejecució n, o sea, hay migració n de
tareas a tiempo de ejecució n. Esto es con el fin de balancear la carga del
sistema y reducir el tiempo de ejecució n. Sin embargo, el costo de
balanceo puede ser significativo y por ende incrementar el tiempo de
ejecució n. (Hoeger Herbert, sf).
Entre los puntos que hay que revisar en esta etapa encontramos:
Si se han considerado algoritmos con un nú mero está tico de tareas y
algoritmos de creació n diná mica de tareas.
Si se usan algoritmos centralizados de balanceo, hay que asegurarse
de que no sea un cuello de botella.
Evaluar los costos de las diferentes alternativas de balanceo diná mico,
en caso de que se usen, y que su costo no sea mayor que los beneficios.
(Hoeger Herbert, sf).
II.4.
TÉCNICAS
ALGORITMICAS PARALELAS
En el diseñ o de algoritmos paralelos existen técnicas generales que se pueden
utilizar una variedad de á reas. Algunos son variantes de técnicas secuenciales
está ndar y otros son nuevos para los algoritmos paralelos
II.4.2. ALEATORIZACION
Los nú meros aleatorios se utilizan en algoritmos paralelos para garantizar que los
procesadores puedan tomar decisiones locales que, con alta probabilidad, se
suman a buenas decisiones globales. Aquí consideramos tres usos de la
aleatoriedad.
Muestreo: Un uso de la aleatoriedad es seleccionar una muestra
representativa de un conjunto de elementos. A menudo, un problema se
puede resolver seleccionando una muestra, resolviendo el problema en
esa muestra y luego usando la solució n para la muestra para guiar la
solució n para el conjunto original. Por ejemplo, supongamos que
queremos ordenar una colecció n de claves enteras. Esto se puede lograr
dividiendo las llaves en cubetas y luego clasificando dentro de cada
cubeta. Para que esto funcione bien, las cubetas deben representar
intervalos no superpuestos de valores enteros, y cada cubeta debe
contener aproximadamente el mismo nú mero de llaves El muestreo
aleatorio se usa para determinar los límites de los intervalos. Primero,
cada procesador selecciona una muestra aleatoria de sus claves. A
continuació n, todas las claves seleccionadas se ordenan juntas.
Finalmente, estas claves se utilizan como límites. Tal muestreo aleatorio
también se usa en muchos algoritmos de comparació n de geometría
computacional, grafos y cadenas en paralelo.
La ruptura de la simetría: otro uso de la aleatoriedad es la ruptura de la
simetría. Por ejemplo, considere el problema de seleccionar un gran
conjunto independiente de vértices en un grafo en paralelo. (Un conjunto
de vértices es independiente si no hay dos vecinos.) Imagine que cada
vértice debe decidir, en paralelo con todos los demá s vértices, si unirse al
conjunto o no. Por lo tanto, si un vértice elige unirse al conjunto, todos sus
vecinos deben elegir no unirse al conjunto. La elecció n es difícil de realizar
simultá neamente por cada vértice si la estructura local en cada vértice es
la misma, por ejemplo, si cada vértice tiene la misma cantidad de vecinos
Como resultado, el punto muerto se puede resolver mediante el uso de la
aleatoriedad para romper la simetría entre los vértices.
Equilibrio de carga: un tercer uso de la aleatoriedad es el equilibrio de
carga. Una forma de dividir rá pidamente una gran cantidad de elementos
de datos en una colecció n de subconjuntos de tamañ o aproximadamente
uniforme es asignar aleatoriamente cada elemento a un subconjunto. Esta
técnica funciona mejor cuando el tamañ o promedio de un subconjunto es
al menos logarítmico en el tamañ o del conjunto original.
II.4.3. TÉCNICAS DE PUNTERO PARALELAS
Muchas de las técnicas secuenciales tradicionales para manipular listas, á rboles y
grafos no se traducen fá cilmente en técnicas paralelas. Por ejemplo, técnicas
como atravesar los elementos de una lista vinculada, visitar los nodos de un á rbol
en postorden o realizar un recorrido en profundidad de un grafo parecen ser
inherentemente secuenciales. Afortunadamente, estas técnicas a menudo pueden
ser reemplazadas por técnicas paralelas con aproximadamente el mismo poder.
Puntero saltando: Una de las má s antiguas técnicas de punteros paralelos es el
puntero saltando [88]. Esta técnica se puede aplicar a listas o á rboles. En cada
paso de salto del puntero, cada nodo en paralelo reemplaza su puntero con el de
su sucesor (o padre). Por ejemplo, una forma de etiquetar cada nodo de una lista
n-nodo (o á rbol) con la etiqueta del ú ltimo nodo (o raíz) es usar el salto del
puntero. Después de la mayoría de los pasos de ⌉log n⌉, cada nodo apunta al
mismo nodo, el final de la lista (o la raíz del á rbol).
Recorrido de Euler: Un recorrido de Euler por un grafo dirigido es una
ruta a través del grafo en el que cada borde se atraviesa exactamente una
vez. En un grafo no dirigido, cada borde se reemplaza típicamente con dos
bordes opuestos. El recorrido por Euler de un á rbol no dirigido sigue el
perímetro del á rbol visitando cada borde dos veces, una vez en el camino
hacia abajo y una vez en el camino hacia arriba. Al mantener una
estructura enlazada que representa el recorrido de Euler por un á rbol, es
posible calcular muchas funciones en el á rbol, como el tamañ o de cada
subá rbol. Esta técnica usa trabajo lineal y profundidad paralela que es
independiente de la profundidad del á rbol. El recorrido de Euler a
menudo se puede utilizar para reemplazar un recorrido está ndar de un
á rbol, como un recorrido transversal en profundidad.
Contracción del grafo: La contracció n del grafo es una operació n en la
cual un grafo se reduce en tamañ o mientras se mantiene parte de su
estructura original. Normalmente, después de realizar una operació n de
contracció n del grafo, el problema se resuelve recursivamente en el grafo
contratado. La solució n al problema en el grafo contratado se usa para
formar la solució n final. Por ejemplo, una forma de dividir un grafo en sus
componentes conectados es primero contraer el grafo fusionando algunos
de los vértices con los vértices vecinos, luego encontrar los componentes
conectados del grafo contratado y finalmente deshacer la operació n de
contracció n. Muchos problemas pueden resolverse contrayendo á rboles,
en cuyo caso la técnica se llama contracció n de á rbol.
Descomposición del oído: Una descomposició n de oído de un grafo es
una partició n de sus bordes en una colecció n ordenada de caminos. El
primer camino es un ciclo, y los otros se llaman orejas. Los puntos finales
de cada oreja está n anclados en caminos anteriores. Una vez que se
encuentra la descomposició n de un grafo en un oído, no es difícil
determinar si dos bordes se encuentran en un ciclo comú n. Esta
informació n puede usarse en algoritmos para determinar biconnectividad,
triconnectividad, 4-conectividad y planaridad. Se puede encontrar una
descomposició n de la oreja en paralelo usando trabajo lineal y
profundidad logarítmica, independientemente de la estructura del grafo.
Por lo tanto, esta técnica se puede utilizar para reemplazar la técnica
secuencial está ndar para resolver estos problemas, bú squeda de
profundidad en primer lugar.
II.4.4. OTRAS
Muchas otras técnicas han demostrado ser ú tiles en el diseñ o de algoritmos
paralelos. Encontrar separadores de grafos pequeñ os es ú til para dividir datos
entre procesadores y reducir la comunicació n. La funció n hash es ú til para
equilibrar la carga y asignar direcciones a la memoria
Paralelización Automática:
Con opció n de compilació n si no hay dependencia de datos o el compilador
detecta que se puede resolver.
Con Pragma (t(n,p)=n/p):
s=0;
#pragma omp parallel for priate(i) reduction(+:s)
for (i=0; i<n; i++)
S=s+a[i]
endfor
Distintas posibilidades de asignació n de los datos a los hilos, con clá usula
Schedule: bloques contiguos, cíclica, diná mica.
Ejemplo:
Método de Montecarlo
Este algoritmo consiste en generar experimentos aleatorios
independientes consistentes en generar N puntos x, y que pertenezcan de 0
a 1 y contabilizar C los nú meros que caen dentro del cuadrante de un
circulo de radio 1.
El á rea del circulo es igual a pi*radio **2, el á rea del cuadrante es pi/4, y la
probabilidad es C/N = pi/4 osea pi = 4C/N.
#!/usr/bin/python
import random
import math
def enCirculo(x, y):
acierta = False
resultado = x ** 2 + y ** 2
if resultado <= 1:
acierta = True
return acierta
def pi(n):
c = 0
for i in range(n):
x = random.random()
y = random.random()
acierta = enCirculo(x,
y)
if acierta:
c = c + 1
return (4.0 * c)/n
Paralelización
Este reparto consiste en la generació n de N experimentos en un conjunto
de P procesadores. Cada procesador puede generar puntos y contar cuales
C caen en el rango del círculo con 1 de radio.
Al iniciar solo el proceso principal conoce cuales son los valores de N, osea
el nú mero de pruebas que se quiere hacer, y cuantos procesadores se van a
tener.
Después se envían a los procesos esclavos la N, para que empiecen a
calcular.
Inicialmente el proceso maestro del programa paralelo conoce los
valores de N y P.
Paso 1: Envío de N y P a los procesos esclavos del programa
paralelo
Condiciones:
-- que se ejecute má s de una vez el mismo problema.
-- que se procese una serie larga de datos.
-- que se pueda pasar datos a la siguiente fase mucho antes del final del
cá lculo de cada fase.
--que el tiempo de proceso asociado a cada fase sea similar (load
balancing).
II.6.3. ELEMENTOS
Tiempo de Ejecución:
Formulas de diapo 12
Ocupación de Memoria
Formulas de diapo 13
Conteo de Instrucciones
Diapos 14 y 15
Notación Asíntota
Diapo 16
Tiempos de comunicación
Diapos 19 y 20
Los algoritmos paralelos son importantes porque es má s rá pido tratar grandes tareas
de computació n mediante la paralelizació n que mediante técnicas secuenciales. Esta
es la forma en que se trabaja en el desarrollo de los procesadores modernos, ya que es
má s difícil incrementar la capacidad de procesamiento con un ú nico procesador que
aumentar su capacidad de có mputo mediante la inclusió n de unidades en paralelo,
logrando así la ejecució n de varios flujos de instrucciones dentro del procesador. Pero
hay que ser cauto con la excesiva paralelizació n de los algoritmos ya que cada
algoritmo paralelo tiene una parte secuencial y debido a esto, los algoritmos paralelos
puedes llegar a un punto de saturació n (ver Ley de Amdahl). Por todo esto, a partir de
cierto nivel de paralelismo, añ adir má s unidades de procesamiento puede só lo
incrementar el coste y la disipació n de calor.
IV. LINKOGRAFÍA
/Users/edwar/Downloads/ALGORITMO%20Y%20COMPUTACIÓN%20PARALELA.pdf
J. Aguilar, E. Leiss (2004). Introducción a la computación paralela. [PDF file]. Mérida,
Venezuela. Disponible en: https://docs.google.com/viewer?url=http%3A%2F
%2Fwww.ing.ula.ve%2F~aguilar%2Fpublicaciones%2Fobjetos%2Flibros%2FICP.pd
Elver Álvarez (2016), ¿Qué son los Algoritmos Paralelos?. Disponible en:
https://prezi.com/8hsxmu4dh47j/que-son-los-algoritmos-paralelos-algoritmos-que-
pueden-s/
Cerverón Vicente (sf). Algoritmos Paralelos. [PDF file]. España. Disponible en:
https://docs.google.com/viewer?url=http%3A%2F%2Finformatica.uv.es%2Fiiguia%2FALP
%2Fmateriales%2F1_2_a_ComputacionParalela.pdf.
Hoeger Herbert (sf). Introducción a la computación paralela. [PDF file]. Mérida, Venezuela.
Disponible en: https://docs.google.com/viewer?url=http%3A%2F%2Fwww.saber.ula.ve
%2Fbitstream%2F123456789%2F15969%2F1%2Fcom_par.pdf
Gilberto Díaz. (2010). Diseñ o de Algoritmos Paralelos [PDF file]. Mérida, Venezuela.
Disponible en: https://docs.google.com/viewer?url=http%3A%2F
%2Fwebdelprofesor.ula.ve%2Fingenieria%2Fgilberto%2Fparalela
%2F08_DisenoDeAlgoritmosParalelos.pdf
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar(sf). Introduction to Parallel
Computing, Second Edition. Disponible en: http://parallelcomp.uw.hu/ch03lev1sec6.html