Paralelo vs serial

Anuncio
M.A.
Rodríguez‐Meza
Ins$tuto
Nacional
de
Inves$gaciones
Nucleares
Correo
electrónico:
mar@nuclear.inin.mx
h<p://www.astro.inin.mx/mar
Paralelo vs serial
18/08/09
UAEH
1
•  Dia
–
noche
•  nos
levantamos
–
desayunamos
–
vamos
a
trabajar
–
comemos
–
regresamos
a
trabajar
–
nos
vamos
al
antro
‐
...
•  Hablamos
secuencialmente
•  En
cualquier
parte
de
la
naturaleza
y
en
la
vida
humana,
las
acPvidades
se
desarrollan
y
expresan
a
si
mismas
a
través
del
principio
secuencial.
•  Es
natural,
por
lo
tanto,
que
los
algorítmos
y
programas
de
cómputo
se
hayan
formulado
de
acuerdo
al
concepto
de
secuencia.
De
hecho
el
concepto
de
algorítmo,
antes
del
nacimiento
de
las
computadoras
fue
definido
como
una
secuencia
finita
de
operaciones.
2
¿Dónde
comenzo
todo?
3.1415 * 3 2.772345 /234.4567 sin(3.1415 /4)
•  Era
del
hielo:
•  Edad
de
piedra
•  Edad
de
bronce
€
•  El
oscuranPsmo:
Bill
Gates
y
MicrosoY
•  La
manzana,
pero
no
de
Newton
•  El
renacimiento:
Linux
y
GNU
3
Serial
Vs.
Paralelo:
¿Qué
vemos
a
nuestro
alrededor?
•  Las
colas
COUNTER 2
COUNTER
COUNTER 1
Q
Please
•  Restaurant
Pero
...
eso
es
sólo
una
parte
de
la
historia
• 
La
acPvidad
humana
y
la
ley
natural
no
sólo
son
secuenciales
sino
altamente
paralelas.
La
acción
no
es
sólo
secuencial
sino
que
hay
acción
en
todas
partes.
• 
El
paralelismo
es
tan
importante
como
lo
secuencial.
• 
Los
individuos
son
secuenciales
pero
los
individuos
son
parte
de
organizaciones
o
de
colecPvidades,
actuando
en
paralelo.
• 
Lo
mismo
es
cierto
en
la
naturaleza
• 
Las
leyes
de
la
naturaleza
muchas
veces
se
expresan
como
campos
asicos,
funciones
definidas
en
todos
lados
a
un
Pempo
dado.
• 
Por
lo
tanto,
una
descripción
completa
de
la
acPvidad
humana
y
de
la
acción
en
la
naturaleza
requiere
de
los
dos
conceptos,
paralelismo
y
secuencialidad.
5
El
concepto
básico
de
la
programación
en
paralelo
•  El
proceso:
una
secuencia
de
operaciones
que
pueden
ser
realizadas
por
procesador
individual.
t
x
•  Intercambio
de
información
entre
procesos
paralelos.
•  Sincronización
entre
procesos.
6
El
arte
de
la
programación
de
procesos
paralelos
 Procesos:
–  Proceso
secuencial
–  Proceso
paralelo
  Clústers:
  Memoria compartida
  Memoria distribuida
 Rank
Sort
ComputaPon:
UNSORTED
LIST RANK
15 4 10 3 39 7 8 2 22 6 4 0 19 5 6 1 7
Patrones
o
categorias
–  Paralelismo
de
datos.
Un
número
grande
de
datos
es
sujeto
a
un
proceso
idénPco
o
similar.
(RC‐Catalogo
de
galaxias)
–  Par7ción
de
los
datos.
El
espacio
de
datos
es
parPcionado
naturalmente
en
regiones
adjacentes,
cada
una
de
las
cuales
es
operada
en
paralelo
por
un
procesador
diferente.
–  Algorítmo
relajado.
Cada
proceso
paralelo
cálcula
de
una
manera
auto‐suficiente
sin
sincronización
o
comunicación
entre
procesadores.
El
ordenamiento
por
rango
en
paralelo
es
un
ejemplo
de
un
algorítmo
relajado.
–  Iteración
sincrónica.
Cada
procesador
realiza
el
mismo
cálculo
iteraPvo
en
una
porción
diferente
de
los
datos.
Sin
embargo,
el
procesador
debe
ser
sincronizado
al
final
de
cada
iteración.
–  Replicated
workers.
Un
pool
central
de
tareas
similares
es
mantenida.
Hay
un
número
grandes
de
trabajadores
que
sacan
tareas
del
pool,
llevan
a
cabo
el
cálculo
requerido,
y
posiblemente
agreguen
una
nueva
tarea
al
pool.
Todo
el
cálculo
termina
cuando
el
pool
se
vacia.
–  Pipelined
computa7on.
Los
procesos
son
arreglados
en
alguna
estructura
regular
tal
como
un
anillo
o
malla
bidimensional.
Los
datos
entonces
fluyen
a
través
de
toda
la
estructura
del
proceso,
con
cada
proceso
realizando
cierta
fase
del
cálculo
total.
8
DegradaPon
sources
• 
• 
• 
• 
• 
• 
Memory
contenPon.
Excessive
sequenPal
code.
Process
creaPon
Pme.
CommunicaPon
delay.
SynchronizaPon
delay.
Load
imbalance.
9
10
Paralelizando
la
evolución
de
un
sistema
de
N‐cuerpos
•  Ring
topology
PROCESS 1
PROCESS 2
PROCESS 3
PROCESS 4
PROCESS 5
AA
BB
CC
DD
EE
AE
BA
CB
DC
ED
AD
BE
CA
CB
EC
AC
BD
CE
DA
EB
AB
BC
CD
DE
EA
TO 1
11
Protocolo
Message‐Passing
Interface
(MPI)
• 
pnbody:
–  Funciones
1. 
2. 
3. 
4. 
5. 
6. 
7. 
8. 
9. 
10. 
11. 
12. 
13. 
14. 
15. 
MPI_Bcast
MPI_Finalize
MPI_Barrier
MPI_Allreduce
MPI_Allgather
MPI_Sendrecv
MPI_Reduce
MPI_Send
MPI_Recv
MPI_Ssend
MPI_Abort
MPI_Gather
MPI_Init
MPI_Comm_Rank
MPI_Comm_size
  pnbody:
  Parámetros
1. 
2. 
3. 
ThisTask
NTask
Ptask
  Tipos
1.  MPI_Status
12

Descargar