AULA # 8
AVALIAO DE DESEMPENHO
EM PROGRAMAS PARALELOS
INTRODUO
Ao criarmos um programa paralelo desejamos
resolver grandes problemas em curtos intervalos
de tempo.
Se nosso programas seriais fossem rpidos o
suficiente para resolver todos os problemas, no
enfrentaramos os desafios e dificuldades dos
programas paralelos.
At agora, temos discutido a criao de
programas paralelos, entretanto temos omitido
uma parte fundamental do processo: a estimao
do desempenho.
INTRODUO
Nesta aula, discutimos alguns mtodos para
estimar o desempenho de programas paralelos.
O desempenho de programas seriais
geralmente
estimado
utilizando
mtodos
asntoticos com resultados satisfatrios.
Infelizmente, mtodos asntoticos no so
apropriados para estimar o desempenho de
programas
paralelos,
porem
formulaes
empricas so geralmente utilizadas.
aproximadamente
iguais
(instrues
aritmticas e de atribuio),
Consideramos ainda, que o nmero de instrues
dentro do lao muito maior que fora do lao
k1n k2 , ento:
T (n ) k1n
na
expresso
anterior,
se
512
1024
1536
2048
T(n) em ms
11.4
22.8
34.2
45.6
k1=22.3x10-6
Em nossa analise temos omitido as operaes
I/O (scanf e printf),
T (n ) = Tcal (n ) + TIO (n )
TIO (n ) = 1.2 ms
T (n ) T (n, p)
T (n, p) , o tempo transcorrido desde que o
primeiro processador comea a execuo, at
que o ltimo processador completa a execuo
da ltima instruo.
grandezas
mais
utilizadas
para
avaliar
T (n )
S (n, p) =
T (n, p)
um
S (n, p)
T (n )
E (n, p) =
=
p
pT (n, p)
Se E (n, p) = 1 , o programa exibe speedup linear
SeE (n, p) = 1 p , o programa exibe slowdown.
de
comunicao:
efetivamente
transmitidos
os
dados
entre
os
so
dois
podemos
utilizar
constantes
ts + ktc
ts chamado de latencia,
e o recproco de tc chamado de largura de
banda.
extremamente
difcil
obter
estimativas
na
maioria
dos
sistemas
as
SO
MAX 1.2.0.2
NX 3.3.2
MPI
Solaris
Vertex
TCP/IP
ta
ts
tc
0.011
0.0042
0.010
0.50
-
21
370
35
83
170
500
0.30
2.9
0.23
0.19
4.7
8.9
tempos em s
fundamentais
do
programa
h = (b-a)/n;
local_n = n/p;
local_a = a + rank * local_n * h;
local_b = local_a + local_n * h;
integral = Trap(local_a, local_b,
local_n, h);
MPI_Reduce(&integral, &total, 1, MPI_FlOAT,
MPI_SUM, 0, MPI_COMM_WORLD);
as
1
2
3
1
2
0
0
1
6 1
c4 log2 (p)[ ts + tc + ta ] + c5
tempo
de
n
T (n, p) = 22.3 + 175 log2 (p)
p
n
512
1024
1536
2048
1.9
2.0
2.0
2.0
2.0
2.0
2.0
2.0
3.6
3.6
3.8
3.8
3.8
3.9
3.9
3.9
5.8
5.7
6.8
6.7
7.1
7.1
7.3
7.4
16
8.1
32
9.3
Speedup
15.0
16
10.0
8
4
5.0
0.0
512
1024
1536
Nmero de trapzios
2048
Exemplo:
double start, finish;
MPI_Barrier(comm);
start = MPI_Wtime();
.
. /* Codigo que se deseja cronometrar */
.
MPI_Barrier(comm);
start = MPI_Wtime();
if(rank==0) printf(Tempo:%f, finish-start);
Lei de Amdahl
A lei de Amdahl, foi formulada por Gene
Amdahl em 1967.
Consideremos a existncia de um problema,
formado por um conjunto de operaes de
clculo, e um conjunto de dados de entrada
que caracterizam operaes I/O.
Considere, que um programa serial leva um
tempo T para resolver o problema.
Lei de Amdahl
O programa tem uma frao r de instrues
que so perfeitamente paralelizveis, isto ,
independentemente do nmero de processos
envolvidos (p), esta frao do programa
apresenta speedup linear e tempo de execuo
rT p
quando
processos.
paralelizada
com
Lei de Amdahl
Entretanto, temos uma frao (1-r) que
inerentemente serial, isto , independentemente
do valor de p, o tempo de execuo destas
instrues (1 r )T, quando paralelizada com p
processos (Ex: operaes I/O).
Avaliamos ento o speedup deste programa ao
ser paralelizado com p processos:
T
1
S (p ) =
=
(1 r )T + r T p
(1 r ) + r p
Lei de Amdahl
Derivamos a expresso anterior em relao a p
dS (p)
r
=
0
2
dp
[ (1 r )p + r ]
Lei de Amdahl
Lei de Amdahl: o speedup que podemos
obter ao paralelizar um programa limitado
por (1-r)-1.
Exemplos:
1. r = 0.50, mximo speedup = 2, para p>2, E diminui
2. r = 0.75, mximo speedup = 4
3. r =0.99, mximo speedup = 100
4. se executarmos o programa do caso 3 com 10000
processos teremos uma eficincia de 0.01.
Lei de Amdahl
A lei de Amdahl desencoraja a utilizao de
paralelismo massivo, i.e. utilizar centos ou
mieis de processos para resolver um
problema.
A formulao da lei de Amdhal
matematicamente correta.
Entretanto, devemos discutir se suas hiptesis
so corretas:
1. em todo
programa
existe um conjunto de
Lei de Amdahl
Lei de Amdahl hiptesis...
2. excessivamente otimista supor que as
restantes
paralelizveis,
instrues
sempre
so
perfeitamente
teremos
alguma
Lei de Amdahl
Exemplo: se no programa da regra do trapzio
aumentarmos n, a frao de instrues seriais
fica consideravelmente menor,
instrues seriais (4), instrues paralelas (4
fora do lao, 2 dentro do lao)
n
256
512
1024
2048
I ser.
4
4
4
4
I par.
516
1028
2052
4100
1-r
0.992
0.996
0.998
0.999
0.008
0.004
0.002
0.001
Lei de Amdahl
Escalavilidade: um programa escalvel se
podemos
manter
constante
eficincia,
fundamentarmos
conceito
de
Lei de Amdahl
O trabalho de um programa serial justamente
seu tempo de execuo
W (n ) = T (n )
Lei de Amdahl
A eficincia do programa paralelo definida
como
T (n )
E (n, p) =
T (n, p)
Escrevemos
eficincia
em
funo
da
1
To (n, p)
+1
T (n )
Lei de Amdahl
Se ao incrementarmos p (aumenta a
sobrecarga) incrementamos n de forma que a
frao To (n, p)/T (n ) permanea constante,
podemos manter a eficincia constante e
aumentar o nmero de processos.
As fontes de sobrecarga em um programa
paralelo so:
1. comunicao entre processos
2. inatividade de processos
3. clculos
adicionais
(provocados
paralelizao)
pela
Lei de Amdahl
Durante as dcadas de 70 e 80, a lei de Amdahl
foi amplamente aceita nos crculos cientficos.
Nos ltimos anos o conceito de escalavilidade
tem
aberto
novos
paralelismo massivo.
horizontes
ao
uso
de