Vous êtes sur la page 1sur 46

Programao Paralela e

Distribuda
Um curso prtico
Mario J. Jnior Gabriel P. Silva
Colaborao: Adriano O. Cru! Julio S. Aude
Curso de "n#orm$ti%a & DCC'"M ( )*+J

,menta
Paradigma de -ro%a de Mensagens

P.M

MP"
Paradigma de Mem/ria Com0artil1ada

O0enMP

P-1reads

,menta
Con%eitos 2$si%os de %on%orr3n%ia e
0aralelismo. Con%eitos de avaliao de
desem0en1o. Modelos de 0rogramao
0aralela. Modelos de 0rogramao 0or tro%a de
mensagens. Programao utiliando P.M e
MP". ,4em0los.
Modelos de 0rogramao %om Mem/ria
Com0artil1ada. Con%eitos de -1read e
Pro%essos. Primitivas de Sin%roniao em
mem/ria %om0artil1ada. Algoritmos 0aralelos
%om mem/ria %om0artil1ada. Programao
utiliando bibliote%as O0enMP e Pt1reads.
,4em0los. *erramentas de avaliao e
de0urao de 0rogramas 0aralelos.

Con%eitos 2$si%os de
Paralelismo

Pro%esso
)m 0ro%esso 5 %riado 0ara e4e%uo de um
0rograma 0elo sistema o0era%ional.
A %riao de um 0ro%esso envolve os seguintes
0assos:

Pre0arar o des%ritor de 0ro%esso6

+eservar um es0ao de endereamento6

Carregar um 0rograma no es0ao reservado6

Passar o des%ritor de 0ro%esso 0ara o es%alonador.


7os sistemas o0era%ionais modernos! um
0ro%esso 0ode gerar %/0ias! %1amadas de
0ro%essos 8#il1os9.

Pro%esso
Os 0ro%essos #il1os %om0artil1am do mesmo
%/digo :ue os 0ro%essos 0ais! %ontudo no
%om0artil1am o mesmo es0ao de
endereamento.
A tro%a de %onte4to entre 0ro%essos 5
normalmente um 0ro%esso lento! :ue e4ige
uma %1amada ao sistema o0era%ional! %om
salvamento dos registradores e tabelas de
ger3n%ia na mem/ria! al5m da restaurao dos
mesmos 0ara o 0ro%esso :ue vai ser
e4e%utado.

-1reads
Muitos dos sistemas o0era%ionais modernos
su0ortam o %on%eito de t1reads! ou se;a!
tare#as inde0endentes dentro de um mesmo
0ro%esso :ue 0odem ser e4e%utadas em
0aralelo ou de #orma inter%alada no tem0o!
%on%orrentemente.
7esses sistemas! uma a0li%ao 5 des%rita 0or
um 0ro%esso %om0osto de v$rias t1reads.
As t1reads de um mesmo 0ro%esso
%om0artil1am o es0ao de endereamento de
mem/ria! ar:uivos abertos e outros re%ursos
:ue %ara%teriam o %onte4to global de um
0ro%esso %omo um todo.

-1reads
Cada t1read! no entanto! tem seu 0r/0rio
%onte4to es0e%#i%o! normalmente
%ara%teriado 0elo %on;unto de registradores
em uso! %ontador de 0rogramas e 0alavra de
status do 0ro%essador.
O %onte4to es0e%#i%o de uma t1read 5
semel1ante ao %onte4to de uma #uno e!
%onse:<entemente! a tro%a de %onte4to entre
t1reads im0li%a no salvamento e re%u0erao
de %onte4tos relativamente leves! a e4em0lo
do :ue o%orre numa %1amada de #uno dentro
de um 0rograma.

-1reads
,ste #ato 5 o 0rin%i0al atrativo em #avor do uso
de t1reads 0ara se im0lementar um dado
%on;unto de tare#as em %ontra0osio ao uso
de mlti0los 0ro%essos.
A %omuni%ao entre tare#as 5 grandemente
sim0li#i%ada numa im0lementao baseada em
t1reads! uma ve :ue neste %aso as tare#as
%om0artil1am o es0ao de endereamento de
mem/ria do 0ro%esso %omo um todo :ue
engloba as t1reads! eliminando a ne%essidade
do uso de es:uemas es0e%iais! mais restritos e!
usualmente! mais lentos de %omuni%ao entre
0ro%essos 0rovidos 0elos sistemas
o0era%ionais.
-1reads
PC PC PC
Dados
Privados
Dados Compartilhados
Thread 1
Thread 2 Thread 3
Dados
Privados
Dados
Privados

,4e%uo %on%orrente est$ asso%iada ao
modelo de um servidor atendendo a v$rios
%lientes atrav5s de uma 0olti%a de
es%alonamento no tem0o.
,4e%uo 0aralela est$ asso%iada ao modelo de
v$rios servidores atendendo a v$rios %lientes
simultaneamente no tem0o.
As linguagens de 0rogramao 0odem ento
ser %lassi#i%adas %omo se:<en%iais!
%on%orrentes e 0aralelas.
,studaremos diversos 0adr=es de bibliote%as
de #un=es :ue 0ermitem a %odi#i%ao de
0rogramas 0aralelos utiliando linguagens
%onven%ionais >C! *O+-+A7! JA.A! et%.?.
Paralelismo 4 Con%orr3n%ia

Paradigmas de
Programao Paralela

Mem/ria Com0artil1ada
Comuni%ao atrav5s de vari$veis em mem/ria
%om0artil1ada.
)so de t1reads e(ou 0ro%essos 0ara
ma0eamento de tare#as.
-1reads ou 0ro%essos 0odem ser %riados de
#orma din@mi%a ou est$ti%a.
Sin%roniao

,4%luso Mtua

2arreira
Alo%ao de Mem/ria Privada e Global.
Modelos de Programao
Ar:uitetura de Comuni%ao

-ro%a de Mensagens
Comuni%ao atrav5s do envio e40l%ito de
mensagens.
-are#as so ma0eadas em 0ro%essos! %ada um
%om sua mem/ria 0rivada.
Pro%essos 0odem ser %riados de #orma est$ti%a
ou din@mi%a.
Sin%roniao 5 #eita de #orma im0l%ita 0ela
tro%a de mensagens ou 0or o0era=es %oletivas
de sin%roniao >barreiras?.
-ro%a de Mensagens ' Modelo
recv(&y, 1);
send(&x, 2);
Processo 1
x
Processo 2
y
Movimento
dos Dados

Comuni%ao Sn%rona
O 0ro%esso :ue dese;a enviar uma mensagem
#a uma re:uisio ini%ial de autoriao 0ara
enviar a mensagem ao 0ro%esso destinat$rio.
De0ois de re%eber essa autoriao! a
o0erao de envio >AsendA? 5 realiada.
A o0erao de envio s/ se %om0leta :uando a
o0erao de re%e0o >8re%eive9?
%orres0ondente retorna uma mensagem de
8a%BnoClegement9.
Portanto! ao se %on%luir a o0erao de envio!
os bu##ers e estruturas de dados utiliados na
%omuni%ao 0odem ser reutiliados.

Comuni%ao Sn%rona
,ste modo de %omuni%ao 5 sim0les e
seguro! %ontudo elimina a 0ossibilidade de
1aver su0er0osio entre o 0ro%essamento da
a0li%ao e o 0ro%essamento da transmisso
das mensagens.
+e:uer um 0roto%olo de :uatro #ases 0ara a
sua im0lementao do lado do transmissor:
0edido de autoriao 0ara transmitir6
re%ebimento da autoriao6 transmisso
0ro0riamente dita da mensagem6 e
re%ebimento da mensagem de
8a%BnoCledgement.
Comuni%ao Sn%rona
Pede para enviar
Confirmao
Mensagem
send();
Processo 1
Processo
Suspenso
empo
recv();
Processo 2
!m"os coninuam
Comuni%ao Sn%rona
Pede para enviar
Confirmao
Mensagem
send();
Processo 1
empo
recv();
Processo 2
!m"os coninuam
Processo
Suspenso

Comuni%ao Assn%rona
2lo:ueante
A o0erao de envio >AsendA? s/ retorna o
%ontrole 0ara o 0ro%esso :ue a %1amou a0/s
ter sido #eita a %/0ia da mensagem a ser
enviada de um bu##er da a0li%ao 0ara um
bu##er do sistema o0era%ional.
Portanto! ao 1aver o retorno da o0erao de
envio! a a0li%ao est$ livre 0ara reutiliar o
seu bu##er! embora no 1a;a nen1uma garantia
de :ue a transmisso da mensagem ten1a
%om0letado ou v$ %om0letar satis#atoriamente.

A operao de envio bloqueante difere da
operao de envio sncrona, uma vez que
no implementado o protocolo de
quatro fases entre os processos origem e
destino.
A operao de recepo ("receive")
bloqueante semelhante operao de
recepo sncrona, s! retornando para o
processo que a chamou ap!s ter
concludo a transfer"ncia da mensagem
do buffer do sistema para o buffer
especificado pela aplicao. A diferena
em relao a operao de recepo
sncrona que a mensagem de
acknowledgement no enviada.
Comuni%ao Assn%rona
2lo:ueante

7a 0rimeira #ase! a o0erao de AsendA retorna
imediatamente! tendo a0enas dado in%io ao
0ro%esso de transmisso da mensagem e a
o0erao de Are%eiveA retorna a0/s noti#i%ar a
inteno do 0ro%esso de re%eber uma
mensagem.
As o0era=es de envio e re%e0o
0ro0riamente ditas so realiadas de #orma
assn%rona 0elo sistema.
O retorno das o0era=es de 8send9 e de
8re%eive9 nada garantem e no autoria a
reutiliao das estruturas de dados 0ara nova
mensagem.
Comuni%ao Assn%rona
7o 2lo:ueante

7a segunda #ase! 5 veri#i%ado se a o0erao de
tro%a de mensagens ini%iada anteriormente
0elas 0rimitivas AsendA eAre%eiveA ;$ #oi
%on%luda.
Somente a0/s esta veri#i%ao 5 :ue o
0ro%esso :ue realiou o envio de dados 0ode
alterar %om segurana sua $rea de dados
original.
,ste modo de %omuni%ao 5 o :ue 0ermite
maior su0er0osio no tem0o entre
%om0uta=es da a0li%ao e o 0ro%essamento
da transmisso das mensagens.
Comuni%ao Assn%rona
7o 2lo:ueante
Comuni%ao Assn%rona
Buffer de
mensagens
send();
Processo 1
empo
recv();
Processo 2
Coninua
o processo
#$ buffer
de mensagen
7e%essita de um bu##er 0ara guardar a mensagem
Comuni%ao Assn%rona
Buffer de
mensagens
send();
Processo 1
empo
recv();
Processo 2
Coninua
o processo
Coninua o
processo
,ta0as da Criao de um
Programa Paralelo

De%om0osio da
Com0utao em -are#as
2us%a e40or su#i%iente 0aralelismo sem
gerar uma sobre%arga de geren%iamento
das tare#as :ue se torne signi#i%ativo
0erante o trabal1o til a ser #eito.
Ou se;a! as tare#as de %omuni%ao e
sin%roniao no 0odem ser mais
%om0le4as :ue as tare#as de
%om0utao. Se isto o%orrer! a e4e%uo
em 0aralelo %ertamente ser$ mais
ine#i%iente do :ue a se:<en%ial.

Ma0eamento nos
Pro%essadores
Os 0ro%essos e t1reads devem ser
ma0eadas 0ara os 0ro%essadores reais
:ue e4istam no sistema.
Para :ue isto se;a #eito de uma maneira
e#i%iente! deve'se e40lorar a lo%alidade
da rede de inter%one4o! mantendo os
0ro%essos rela%ionados alo%ados ao
mesmo 0ro%essador.
Se a rede a0resentar %ustos de
%omuni%ao vari$veis! alo%ar os
0ro%essos %om maior %arga de
%omuni%ao aos n/s %om menor %usto
de %omuni%ao entre si.

Alo%ao de -are#as
As tare#as devem ser alo%adas a
0ro%essos ou t1reads de modo :ue:

Da;a um balan%eamento de %arga ade:uado


e a reduo do tem0o de es0era 0or %onta
da sin%roniao6

Possa 1aver uma reduo da %omuni%ao


entre 0ro%essos ou t1reads6

A sobre%arga do geren%iamento dessa


alo%ao! em tem0o de e4e%uo! se;a a
mais reduida 0ossvel >est$ti%a 4
din@mi%a?.

"m0lementao da
*un%ionalidade
A im0lementao da #un%ionalidade dos
0ro%essos ou t1reads:

De0ende do modelo de 0rogramao adotado e


da e#i%i3n%ia %om :ue as 0rimitivas deste modelo
so su0ortadas 0ela 0lata#orma6

,40lora a lo%alidade dos dados6

+eduo da serialiao no a%esso a re%ursos


%om0artil1ados6

+eduo do %usto de %omuni%ao e da


sin%roniao visto 0elos 0ro%essadores6

,s%alonar as tare#as de modo :ue a:uelas :ue


ten1am uma maior %adeia de de0end3n%ia se;am
e4e%utadas mais %edo.

Avaliao de Desem0en1o

Medidas de Desem0en1o
S0eed'u0 >A%elerao?:

Mede a rao entre o tem0o gasto 0ara


e4e%uo de um algoritmo ou a0li%ao em
um ni%o 0ro%essador e o tem0o gasto na
e4e%uo %om n 0ro%essadores:
S(n) = T(1)/T(n)
,#i%i3n%ia:
E(n) = S(n)/n

S0eedu0

Eei de Amda1l
Seo Serial
Sees Paralelizveis
(a) Um processador
() !"ltiplos
Processadores
ft
s
(1- f)t
s

t
s
(1 # f)t
s
$p
t
p
p processadores

O fator de acelerao dado por:
Esta equao conhecida como Lei de
Amdahl
S(p) =
t
s
p
=
ft
s
+ (1 f )t
s
/p 1 + (p 1)f
Eei de Amda1l

S0eedu0 4 Pro%essadores
4
8
12
16
20
4 8 12 16 20
f = 20%
f = 10%
f = 5%
f = 0%
%"mero de processadores p
&
a
t
o
r

d
e

'
c
e
l
e
r
a

o

S
(
p
)

Mesmo %om um nmero in#inito de
0ro%essadores! o s0eedu0 m$4imo est$
limitado a F(# ! onde # 5 a #rao serial do
0rograma.
,4em0lo:

Com a0enas GH da %om0utao sendo


serial! o s0eedu0 m$4imo 5 IJ! no
interessando o nmero de
0ro%essadores em uso.
S0eedu0 4 Pro%essadores

)m sistema 5 dito es%al$vel :uando sua e#i%i3n%ia
se mant5m %onstante K medida :ue o nmero de
0ro%essadores >n? a0li%ado K soluo do 0roblema
%res%e.
Se o taman1o do 0roblema 5 mantido %onstante e o
nmero de 0ro%essadores aumenta! o 8over1ead9
de %omuni%ao tende a %res%er e a e#i%i3n%ia a
diminuir.
A an$lise da es%alabilidade %onsidera a
0ossibilidade de se aumentar 0ro0or%ionalmente o
taman1o do 0roblema a ser resolvido K medida :ue
n %res%e! de #orma a %ontrabalanar o natural
aumento do 8over1ead9 de %omuni%ao :uando n
%res%e.
,s%alibidade

A an$lise da es%alabilidade %onsidera a
0ossibilidade de se aumentar
0ro0or%ionalmente o taman1o do 0roblema a
ser resolvido K medida :ue n %res%e de #orma a
%ontrabalanar o natural aumento do
8over1ead9 de %omuni%ao :uando n %res%e.
)m 0roblema de taman1o P usando 7
0ro%essadores leva um tem0o - 0ara ser
e4e%utado.
O sistema 5 dito es%al$vel se um 0roblema de
taman1o IP em I7 0ro%essadores leva o
mesmo tem0o -.
,s%alabilidade 5 uma 0ro0riedade mais
dese;$vel :ue o s0eed'u0.
,s%alibidade

Granulosidade
Granulosidade 5 a relao entre o :uantidade
de %om0utao e a :uantidade de %omuni%ao.
L uma medida de :uanto trabal1o 5 realiado
antes dos 0ro%essos se %omuni%arem.
A granulosidade deve estar de a%ordo %om o
ti0o de ar:uitetura:
fine!rained vector"arra#
processors
medium!rained shared memor#
multiprocessor
coarse"lar!e!rained net$or% of
$or%stations

&i'lio!rafia
P.M: Parallel .irtual Ma%1ine & A )serMs Guide
and -utorial #or 7etCorB Parallel Com0uting

Geist! A.6 2eguelin! A.6Dongarra! J.6 Jiang! N.6


Man%1e%B! 2.6 Sunderam! .. -1e M"- Press! FOOP
Parallel Programming Cit1 MP"

Pa%1e%o! P.S.! Morgan Qau#mann Publis1ers! FOOR.


)sing MP"'I: Advan%ed *eatures o# t1e
Message'Passing "nter#a%e

Gro00! N.6 EusB! ,.6 -1aBur! +. -1e M"- Press! FOOO.


Parallel Com0uting: t1eorS and 0rati%e

Tuinn! Mi%1ael J. & M%GraC'Dill! FOOP.



&i'lio!rafia
Parallel Programming in O0enMP

C1andra! +. et alli6 Morgan Qau#man Publis1ers! IJJF


Pt1reads Programming

7i%1olas! D.6 2utlar! J.6 *arell! P. & OU+eillS and


Asso%iates "n%.! FOOO
Programming Cit1 -1reads

Qleiman! S.6 S1a1! D.6 Smaalders! 2. Sun So#t Press!


Prenti%e'Dall! FOOV
*oundations o# Multit1readed! Parallel and
Distributed Programming

AndreCs! GregorS +. & Addison'NesleS! IJJJ


Designing and 2uilding Parallel Programs

*oster! "an & Addison'NesleS Pub. Co! FOOP



(omepa!e) Listas) Email
1tt0:((CCC.d%%.u#r;.br(Wgabriel(0rog0ar
e'mail: gabriel dot silva at u#r; dot br
gru0o: 0rog0arXlistas.n%e.u#r;.br
1tt0:((CCC.u#r;.br(mailman(listin#o(0rog0ar

Avaliao
Tuatro trabal1os >"ndividual! 0rao de
FG dias?

II(JY

FO(JO

FR(FJ

IF(FF
Tuatro Provas

JG(JO

FJ(FJ

FP(FF

FP(FI

Vous aimerez peut-être aussi