Caracterização de desempenho em
programas paralelos
Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas
Universidade Estadual de Santa Cruz evalero@uesc.br
Conteúdo
1 Introdução
2 Desempenho em programas paralelos
Conteúdo
1 Introdução
2 Desempenho em programas paralelos
Serial vs Paralelo
Algoritmo serial ou seqüencial: executado em um único processador,
Algoritmo paralelo: executado em dois ou mais processa-dores,
Para cada algoritmo paralelo existe um algoritmo serial que realiza a mesma tarefa,
Antes de criar um algoritmo paralelosempre crie uma
ver-são serial para o mesmo problema. Algoritmo serial:
ponto de partida,
garante a compreensão do problema, auxilia na validação do programa paralelo.
Objetivo de um programa paralelo
Objetivo de um algoritmo paralelo: obter um
desempe-nho superior com relação a versão seqüencial; Desempenho = tempo de execução,
Tempo total de execução = tempo de computação +
Tempo de execução
Tempo de computação: tempo das operações de E/S e
cálculos do programa,
Tempo ocioso ou tempo de sincronização: Dedicado a
sin-cronizar um algoritmo ou a esperar pelos processos mais lentos,
Tempo de comunicação = latência + tempo de
transmis-são,
latência: tempo de preparação da mensagem (pacotes), tempo de transmissão: velocidade real de transmissão (largura de banda).
Fatores
Para obtermos algoritmos paralelos eficientes devemos con-siderar:
Balanceamento de carga: dividir equitativamente o trabalho entre os processadores,
Minimizar as necessidades de comunicação, Minimizar o tempo ocioso,
Sobrepor as operações de comunicação e de computação. Minimizar (concentrar) as operações E/S.
Projeto de programas paralelos
Existem basicamente dois enfoques para projetar progra-mas paralelos:
1 Paralelismo de dados: neste enfoque particionamos os
dados, e associamos um subconjunto de dados a cada pro-cesso, cada processo executa os mesmos comandos sobre seu subconjunto de dados.
2 Paralelismo de controle: dividimos o problema em
tare-fas (etapas) independentes, associamos cada tarefa a um processo, cada processo executa comandos diferentes.
Projeto de programas paralelos
Projeto de programas paralelos
Projeto de programas paralelos
Características do paralelismo de dados:
1 pode ser implementado mais facilmente que o paralelismo de controle,
2 não é prejudicado pela dependência entre as operações,
3 programas deste tipo são facilmente escaláveis (podem ser
utilizados para resolver problemas cada vez maiores, ape-nas colocando mais processos),
Introdução
Desempenho em programas paralelos Lei de Ahmdal
Projeto de programas paralelos
Características do paralelismo de controle:
1 deve considerar a dependência entre as operações,
2 difícil de ser implementado,
3 dificuldades de escalabilidade,
4 grandes necessidades de comunicação.
enfoques (dados e controle),
Projeto de programas paralelos
Características do paralelismo de controle:
1 deve considerar a dependência entre as operações,
2 difícil de ser implementado,
3 dificuldades de escalabilidade,
4 grandes necessidades de comunicação.
A maioria dos programas paralelos envolvem os dois enfoques (dados e controle),
Introdução
Desempenho em programas paralelos Lei de Ahmdal
Projeto de programas paralelos
Como construir um programa paralelo:
1 Estudar, implementar e validar uma solução serial para o problema;
3 Verificar se a solução paralela pode ser alcançada apenas executando o algoritmo serial em cada conjunto de dados (PD);
4 Se o paralelismo de dados não for suficiente, identificar as necessidades de comunicação entre os processos;
Introdução
Desempenho em programas paralelos Lei de Ahmdal
Projeto de programas paralelos
Como construir um programa paralelo:
1 Estudar, implementar e validar uma solução serial para o problema;
2 Dividir os dados do problema entre os processos(PD);
executando o algoritmo serial em cada conjunto de dados (PD);
4 Se o paralelismo de dados não for suficiente, identificar as necessidades de comunicação entre os processos;
Introdução
Desempenho em programas paralelos Lei de Ahmdal
Projeto de programas paralelos
Como construir um programa paralelo:
1 Estudar, implementar e validar uma solução serial para o problema;
2 Dividir os dados do problema entre os processos(PD);
3 Verificar se a solução paralela pode ser alcançada apenas executando o algoritmo serial em cada conjunto de dados (PD);
necessidades de comunicação entre os processos;
Introdução
Desempenho em programas paralelos Lei de Ahmdal
Projeto de programas paralelos
Como construir um programa paralelo:
1 Estudar, implementar e validar uma solução serial para o problema;
2 Dividir os dados do problema entre os processos(PD);
3 Verificar se a solução paralela pode ser alcançada apenas executando o algoritmo serial em cada conjunto de dados (PD);
Projeto de programas paralelos
Como construir um programa paralelo:
1 Estudar, implementar e validar uma solução serial para o problema;
2 Dividir os dados do problema entre os processos(PD);
3 Verificar se a solução paralela pode ser alcançada apenas executando o algoritmo serial em cada conjunto de dados (PD);
4 Se o paralelismo de dados não for suficiente, identificar as necessidades de comunicação entre os processos;
Conteúdo
1 Introdução
2 Desempenho em programas paralelos
Notação
p = número de processos (processadores) ou threads. n = tamanho do problema.
Para avaliar o desempenho de programas seriais se utiliza notação assintótica (O, Ω),
Análises assintóticas não são apropriadas para caracteri-zar o desempenho de programas paralelos.
Parâmetros
Granularidade,
Fator de balanço de carga, Speedup,
Granularidade
Granularidade G(n) expressa a relação entre a quantidade de computação e a quantidade de comunicação em um al-goritmo paralelo
G(n) = Tcp(n)
Tcm(n)
Tcp → Tempo de computação,
Granularidade
A granularidade de um problema é inversamente proporci-onal ao volume de paralelização do problema.
Nro subproblemas Computação Comunicação Granularidade Paralelismo Grande Pouca Alta Fina Alto
Granularidade
A granularidade de um problema é inversamente proporci-onal ao volume de paralelização do problema.
Nro subproblemas Computação Comunicação Granularidade Paralelismo Grande Pouca Alta Fina Alto
Fator de balanço de carga
Fator de balanço de carga ou razão de sincronização (FLB)
FLB(n) =
Tmax(n) − Tmin(n) Tmax(n)
Tmax → Tempo do último processo a terminar,
Tmin → Tempo do primeiro processo a terminar,
Speedup
Tempo de execução de um programa serial: T (n), apenas depende do tamanho do problema;
Tempo de execução de um programa paralelo: T (n, p), de-pende do tamanho do problema e do número de processa-dores utilizados na execução;
T (n, p) → tempo total de execução, tempo transcorrido desde que o primeiro processador começa a execução, até que o último processador completa a execução da última instru-ção.
Speedup
Na maioria dos programas T (n, p) é simplesmente o tempo de execução do processo responsável pelas operações de E/S do programa (processo master),
Consideramos que cada processo é executado em um pro-cessador físico diferente (não existem processos concor-rentes),
Speedup
Speedup: é a razão do tempo de execução do algoritmo
serial T (n) com o tempo de execução do algoritmo paralelo T (n, p),
S(n, p) = T (n)
T (n, p)
T (n) → tempo de execução do algoritmo serial mais rápido executado em um processador da máquina paralela, T (n, p) → tempo de execução do algoritmo paralelo em p processadores da máquina paralela.
Speedup
O algoritmo paralelo pode ser diferente do algoritmo serial mais rápido,
Ospeedup fornece um indicador para o aumento da
velo-cidade por utilizarmos uma maquina paralela. De forma geral: 0 < S(n, p) ≤ p,
Speedup
Se a sobrecarga da paralelização for muito alta, teremos que T (n) < T (n, p) e S(n, p) < 1 esta situação indesejável é chamada de slowdown.
Resumo de speedups:
S(n, p) < 1,slowdown, situação indesejável;
1 < S(n, p) < p,sublinear, comportamento geral;
S(n, p) = p,linear, ideal não existe sobrecarga;
S(n, p) > p,supralinear, situação possível; Gráfico de speedup.
Introdução
Desempenho em programas paralelos
Lei de Ahmdal
Speedup supralinear
Quais são as razões para obtermos speedup supralinear?
+ paginação),
Algoritmos não-determínisticos.
Introdução
Desempenho em programas paralelos
Lei de Ahmdal
Speedup supralinear
Quais são as razões para obtermos speedup supralinear?
Efeitos de memória em sistemas multiprocessados (cache + paginação),
Speedup supralinear
Quais são as razões para obtermos speedup supralinear?
Efeitos de memória em sistemas multiprocessados (cache + paginação),
Algoritmos não-determínisticos.
Speedup supralinear - Busca
Speedup supralinear - Busca
Busca paralela: procura
em cada subespaço em paralelo
Speedup supralinear - Busca
Calculamos o speedup: S(n, p) = T (n) T (n, p) S(n, p) = x ×ts p + ∆t ∆tx - subespaço que contem a chave, ts
p - tempo de busca em um subespaço,
Introdução
Desempenho em programas paralelos
Lei de Ahmdal
Speedup supralinear - Busca
Melhor caso da versão paralela, a chave esta no último su-bespaço, i.e. x = p − 1, S(n, p) = p−1 p ts+ ∆t ∆t , ∆t << p − 1 p ts, S(n, p) → ∞. bespaço, i.e. x = 0, S(n, p) = ∆t ∆t =1,
Introdução
Desempenho em programas paralelos
Lei de Ahmdal
Speedup supralinear - Busca
Melhor caso da versão paralela, a chave esta no último su-bespaço, i.e. x = p − 1, S(n, p) = p−1 p ts+ ∆t ∆t , ∆t << p − 1 p ts, S(n, p) → ∞.
Pior caso da versão paralela, a chave esta no primeiro su-bespaço, i.e. x = 0,
S(n, p) = ∆t
Speedup supralinear - Busca
Melhor caso da versão paralela, a chave esta no último su-bespaço, i.e. x = p − 1, S(n, p) = p−1 p ts+ ∆t ∆t , ∆t << p − 1 p ts, S(n, p) → ∞.
Pior caso da versão paralela, a chave esta no primeiro su-bespaço, i.e. x = 0,
Introdução
Desempenho em programas paralelos
Lei de Ahmdal
Eficiência
Eficiência: é a medida de utilização dos processos em um
programa paralelo em relação ao programa serial.
E (n, p) = S(n, p) p = T (n) pT (n, p) 1 p <E (n, p) < 1, sublinear; E (n, p) = 1, linear; E (n, p) > 1, supralinear.
Eficiência
Eficiência: é a medida de utilização dos processos em um
programa paralelo em relação ao programa serial.
E (n, p) = S(n, p) p = T (n) pT (n, p) E (n, p) < 1p, slowdown; 1 p <E (n, p) < 1, sublinear; E (n, p) = 1, linear;
Tomadas de tempo
Para avaliar o desempenho de programas paralelos deve-mos realizar tomadas de tempo,
Para obtermos tomadas de tempo confiáveis considere as seguintes etapas:
1 Garantir na medida do possível exclusividade na utilização do processador,
2 Sincronizar os processo no inicio do código,
3 Fazer uma tomada de tempo(start),
4 Sincronizar os processo no final do código,
5 fazer uma tomada de tempo(finish),
Tomadas de tempo
Exemplo usando MPI
1 double s t a r t , f i n i s h ; 2 M P I _ B a r r i e r (comm) ; 3 s t a r t = MPI_Wtime ( ) ; 4 . 5 . / ∗ Codigo que se d e s e j a c r o n o m e t r a r ∗ / 6 . 7 M P I _ B a r r i e r (comm) ; 8 s t a r t = MPI_Wtime ( ) ; 9 i f ( rank ==0) p r i n t f ( ‘ ‘ Tempo:% f ’ ’ , f i n i s h −s t a r t ) ;
Conteúdo
1 Introdução
2 Desempenho em programas paralelos
Lei de Ahmdal
A lei de Amdahl, foi formulada por Gene Amdahl em 1967; Estabelece um limite superior para o speedup de um algo-ritmo paralelo;
De forma geral um problema é composto por:
Um conjunto de operações de cálculo, Um conjunto de operações de E/S.
Instruções paralelas
O programa tem uma fração f de instruções que são “per-feitamente paralelizáveis”;
Operações de cálculo;
Independentemente do número de processos envolvidos (p), a fração f do programa apresenta speedup linear; O tempo de execução quando paralelizada com p proces-sos é: rTs/p.
Instruções seriais
Entretanto, temos uma fração (1 − r ) que é inerentemente serial;
Operações de E/S;
Independentemente do número de processos (p) utiliza-dos;
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Speedup
Calculamos o speedup deste programa:
S(n, p) = Ts (1 − f )Ts+fTs/p S(n, p) = 1 (1 − f ) + f /p dS(p) dp = r [(1 − r )p + r ]2 ≥ 0
a derivada sempre positiva indica S(n, p) é uma função
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Speedup
Calculamos o speedup deste programa:
S(n, p) = Ts
(1 − f )Ts+fTs/p
S(n, p) = 1
(1 − f ) + f /p
Derivamos S(n, p) com relação a p, obtemos dS(p)
dp =
r
[(1 − r )p + r ]2 ≥ 0
Speedup
Calculamos o speedup deste programa:
S(n, p) = Ts
(1 − f )Ts+fTs/p
S(n, p) = 1
(1 − f ) + f /p
Derivamos S(n, p) com relação a p, obtemos dS(p)
Speedup
Calculamos o limite de S(n, p) quando p → ∞ lim p→∞S(n, p) = limp→∞ 1 (1 − f ) + f /p = 1 (1 − f )
A função 1/(1 − f ) é um limite superior para o speedup de um programa paralelo.
Lei de Amhdal: o speedup que podemos obter ao
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
Cálculo de speedup máximo segunda a lei de Ahmdal
1 f = 0.50, MS = 1/(1 − f ) = 2, para p > 2, E (n, p) ↓.
3 f = 0.99, MS = 1/(1 − f ) = 100, para p > 100, E (n, p) ↓. 4 Se executarmos o caso 3 com p = 1000 teremos uma
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
Cálculo de speedup máximo segunda a lei de Ahmdal
1 f = 0.50, MS = 1/(1 − f ) = 2, para p > 2, E (n, p) ↓. 2 f = 0.75, MS = 1/(1 − f ) = 4, para p > 4, E (n, p) ↓.
4 Se executarmos o caso 3 com p = 1000 teremos uma eficiência E (n, p) = 0.1.
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
Cálculo de speedup máximo segunda a lei de Ahmdal
1 f = 0.50, MS = 1/(1 − f ) = 2, para p > 2, E (n, p) ↓. 2 f = 0.75, MS = 1/(1 − f ) = 4, para p > 4, E (n, p) ↓. 3 f = 0.99, MS = 1/(1 − f ) = 100, para p > 100, E (n, p) ↓.
Exemplos
Cálculo de speedup máximo segunda a lei de Ahmdal
1 f = 0.50, MS = 1/(1 − f ) = 2, para p > 2, E (n, p) ↓. 2 f = 0.75, MS = 1/(1 − f ) = 4, para p > 4, E (n, p) ↓. 3 f = 0.99, MS = 1/(1 − f ) = 100, para p > 100, E (n, p) ↓. 4 Se executarmos o caso 3 com p = 1000 teremos uma
Exemplos
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
O pintor de estacas
1 Preparo da tinta = 30s
2 Pintura das estacas = 300s
3 Tempo para a tinta secar = 30s
Tarefas paralelas 2
Pintores Tempo Speedup
1 30 +300+ 30 = 360 1.0 2 30 +150+ 30 = 210 1.7
10 30 +30+ 30 = 90 4.0
100 30 +3+ 30 = 63 5.7
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
O pintor de estacas
1 Preparo da tinta = 30s
2 Pintura das estacas = 300s
3 Tempo para a tinta secar = 30s
Tarefas seriais 1 e 3 Tarefas paralelas 2 1 30 +300+ 30 = 360 1.0 2 30 +150+ 30 = 210 1.7 10 30 +30+ 30 = 90 4.0 100 30 +3+ 30 = 63 5.7 ∞ 30 +0+ 30 = 60 6.0
Exemplos
O pintor de estacas
1 Preparo da tinta = 30s
2 Pintura das estacas = 300s
3 Tempo para a tinta secar = 30s
Tarefas seriais 1 e 3 Tarefas paralelas 2
Pintores Tempo Speedup
1 30 +300+ 30 = 360 1.0 2 30 +150+ 30 = 210 1.7
10 30 +30+ 30 = 90 4.0
100 30 +3+ 30 = 63 5.7
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Exemplos
A lei de Ahmdal desencoraja a utilização de paralelismo massivo;
Não devemos utilizar centos ou mieis de processadores para resolver um único problema;
Esta conclusão é correta? O que fazer?
Exemplos
A lei de Ahmdal desencoraja a utilização de paralelismo massivo;
Não devemos utilizar centos ou mieis de processadores para resolver um único problema;
Esta conclusão é correta? O que fazer?
A formulação de Ahmdal é matematicamente correta; Entretanto, devemos discutir suas hipóteses.
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Ahmdal - Hipóteses
Em todo programa existe um conjunto de (1 − f ) instruções que não são paralelizáveis;
truções são perfeitamente paralelizáveis, sempre teremos alguma sobrecarga produto da paralelização;
A principal deficiência da lei de Amdhal é que não consi-dera o tamanho do problema n na formulação.
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Ahmdal - Hipóteses
Em todo programa existe um conjunto de (1 − f ) instruções que não são paralelizáveis;
É excessivamente otimista supor que as restantes f ins-truções são perfeitamente paralelizáveis, sempre teremos alguma sobrecarga produto da paralelização;
Lei de Ahmdal - Hipóteses
Em todo programa existe um conjunto de (1 − f ) instruções que não são paralelizáveis;
É excessivamente otimista supor que as restantes f ins-truções são perfeitamente paralelizáveis, sempre teremos alguma sobrecarga produto da paralelização;
consi-Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Gustavfson
Em um problema qualquer ao aumentarmos o tamanho do problema n, a fração de instruções seriais (1 − f ) fica con-sideravelmente menor;
Exemplos
ter constante a eficiência E (n, p), incrementando o tama-nho do problema n ao mesmo tempo que incrementamos o número de processos p.
Lei de Gustavfson
Em um problema qualquer ao aumentarmos o tamanho do problema n, a fração de instruções seriais (1 − f ) fica con-sideravelmente menor;
Exemplos
Escalabilidade: um programa é escalável se podemos
tama-Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Gustavfson
Conceitos detrabalho (W )esobrecarga (T0);
de execução W (n) = T (n);
O trabalho de um programa paralelo é a soma do trabalho feito por cada processo
W (n, p) = pT (n, p);
A sobrecarga do programa paralelo, é a diferença entre o trabalho feito pelo programa paralelo e o programa serial correspondente
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Gustavfson
Conceitos detrabalho (W )esobrecarga (T0);
O trabalho de um programa serial é justamente seu tempo de execução
W (n) = T (n);
feito por cada processo W (n, p) = pT (n, p);
A sobrecarga do programa paralelo, é a diferença entre o trabalho feito pelo programa paralelo e o programa serial correspondente
Introdução Desempenho em programas paralelos
Lei de Ahmdal
Lei de Gustavfson
Conceitos detrabalho (W )esobrecarga (T0);
O trabalho de um programa serial é justamente seu tempo de execução
W (n) = T (n);
O trabalho de um programa paralelo é a soma do trabalho feito por cada processo
W (n, p) = pT (n, p);
trabalho feito pelo programa paralelo e o programa serial correspondente
Lei de Gustavfson
Conceitos detrabalho (W )esobrecarga (T0);
O trabalho de um programa serial é justamente seu tempo de execução
W (n) = T (n);
O trabalho de um programa paralelo é a soma do trabalho feito por cada processo
W (n, p) = pT (n, p);
Lei de Gustavfson
A eficiência foi definida na forma
E (n, p) = T (n)
pT (n, p),
Escrevemos a eficiência em função da sobrecarga,
Substituímos o denominador pela definição de sobrecarga e obtemos
E (n, p) = 1
T0(n, p)
T (n) +1
Lei de Gustavfson
Ao aumentar o número de processos incrementarmos p
au-menta a sobrecarga T0(n, p);
Se incrementamos n (aumenta T (n)) de forma que a fração
T0(n, p)/T (n) permanece constante;
Podemos então manter a eficiência constante e aumentar o número de processos,
Lei de Gustavfson
Fontes de sobrecarga em programas paralelos:
Comunicação entre processos, Inatividade de processos,
Cálculos adicionais (provocados pela paralelização).
Durante as décadas de 70 e 80, a lei de Amdahl foi ampla-mente aceita nos círculos científicos.
Nos últimos anos o conceito de escalabilidade (Lei de Gufs-tavson) tem aberto novos horizontes ao uso de paralelismo massivo.