PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAISCurso de Ciência da Computação
Processamento ParaleloCrivo de Erastótenes
Fernando Henrique Cândido Jaffer dos Santos Veronezi
Poços de Caldas2014
Sumário
1.Crivo de Erastótenes sequencial............................................................3
2.Crivo de Erastótenes paralelo................................................................3
3.Análise de desempenho...........................................................................3
3.1Análise de Speedup.................................................................................8
3.2Análise de Eficiência.............................................................................10
4.Referências Bibliográficas....................................................................15
1.Crivo de Erastótenes sequencial
O algoritmo consiste em marcar todos os números não primos de uma lista de 2 a n números. Inicia-se pelo menor fator primo e marca todos números múltiplos dele. O algoritmo só termina quando todos os fatores primos menor ou igual a raiz de n tenham sido utilizados.Quanto a complexidade do algoritmo sequencial temos O(n log log n) sendo n o númerode elementos da lista.
2.Crivo de Erastótenes paralelo
Para confecção do algoritmo paralelo foi utilizada a biblioteca MPI, usada para envio e recebimento de mensagens na computação paralela.O algoritmo utiliza-se do conceito de paralelismo de dados onde atribuímos para cada nó do cluster uma parte da lista dividindo-a pelo número de nós ficando a lista quebradaem partes iguais caso ela seja par ou com diferença de 1 elemento caso seja ímpar. O primeiro nó informa aos outros, qual fator deve ser calculado seus múltiplos, por exemplo, na primeira execução o fator é o número 2, assim todos os nós devem encontrar os múltiplos de 2 e assim sucessivamente até raiz de n. Após marcado todos os números não primos os nós somam os números não marcados que são exatamente os primos e devolve o valor para o primeiro nó que junta esses valores devolvendo quantosprimos existem na lista. A complexidade do algoritmo é de O((n log log n)/p), sendo n números de elementos dalista e p o número de nós do cluster.
3.Análise de desempenho
A análise de desempenho dos algoritmos sequencial e paralelo foram realizadas em um cluster contendo 6 nós disponibilizado para disciplina de Processamento Paralelo do curso de Ciência da Computação da Puc-Minas Campus Poços de Caldas. Contendo 5 máquinas com memória RAM de 1 GB e uma máquina com 768 MB.Durante a execução dos algoritmos sequencial e paralelo detectamos um crescimento linear do tempo até a execução para 100.000.000 de elementos na lista, apartir dai o tempo cresce exponencial isso ocorre pois os algoritmos sequencial e paralelo usam toda a memória RAM disponível, sendo obrigado a fazer uso de memória virtual aumentando o tempo de execução. Ver figura 5.Para comprovarmos isso utilizamos durante a execução do algoritmo o comando ps -aux mostrado pela figura 1 onde temos o VSZ que informa quantidade de memória virtual usada pelo processo e o RSS que mostra a quantidade de memória física usada.
Figura 1: A figura mostra o uso de comando ps -aux, demarcado de vermelho tem-se o processo do crivo sequencial, onde temos a informação sobre o número do
processo (PID), uso de CPU (%CPU), uso de memória RAM (%MEN), o uso de memória virtual (VSZ), uso de memória física (RSS), indicação do terminal onde está a correr (TTY), o (STAT) que mostra S-sleeping, R-running, T-(parado ou emtrace), D-uniterruptable sleep, Z=zombie, a hora que iniciou o processo (START),otempo total de CPU usado pelo processador (TIME) e o comando usado para iniciar o processo (COMMAND).
Tabela 1: Resultados experimentais para o algoritmo sequencial, obtidospela média de 5 execuções para cada tamanho máximo da lista (n) informado.
n Tempo (s) n Tempo (s)
1000000 0,1382206 70000000 13,216312
2000000 0,2976248 80000000 15,2179914
3000000 0,4623606 90000000 17,2957772
4000000 0,629627 100000000 19,281251
5000000 0,7998118 200000000 31,936399
6000000 0,9722752 300000000 61,0759982
7000000 1,14604 400000000 83,0506988
8000000 1,3218716 500000000 104,341204
9000000 1,498136 600000000 126,385547
10000000 1,677839 700000000 148,564059
20000000 3,5074892 800000000 170,938688
30000000 5,3848228 900000000 193,388666
40000000 7,3062668 1000000000 215,897333
50000000 9,2512966
60000000 11,2236908
Figura 2: O gráfico informa o tempo de execução do algoritmo sequencial a medida que se aumenta o número de elementos da lista.
Devido uma máquina conter menos memória que as outras, quando o algoritmo paralelofoi colocado para executar nos 6 nós, o tamanho máximo da lista que se conseguiu executar foi de 700.000.000 ao se ultrapassar esse valor ocorreu um erro de falta de espaço suficiente para alocação de memória.
Tabela 2: Resultados experimentais para o algoritmo paralelo executando em 6 nósdo cluster, obtidos pela média de 5 execuções para cada tamanho máximo da lista
(n) informado.
n Tempo (s) n Tempo (s)
1000000 0,0248534 70000000 2,6698876
2000000 0,065417 80000000 3,0720542
3000000 0,1014278 90000000 3,4733066
4000000 0,135861 100000000 3,877621
5000000 0,1711016 200000000 8,0340748
6000000 0,2054416 300000000 12,3126106
7000000 0,2393662 400000000 16,6344364
8000000 0,2746822 500000000 21,041056
0
50
100
150
200
250
Crivo Sequencial
Tempo Sequencial
Número de elementos da lista
Te
mp
o (
se
gu
nd
os
)
9000000 0,3089062 600000000 25,5244904
10000000 0,3443188 700000000 30,0134466
20000000 0,6996254
30000000 1,0810908
40000000 1,4662968
50000000 1,8589714
60000000 2,270066
Figura 3: O gráfico informa o tempo de execução do algoritmo paralelo utilizando 6 nós do cluster, a medida que se aumenta o número de elementos da lista.
Tabela 2: Resultados experimentais para o algoritmo paralelo executando em 3 nósdo cluster (0, 1 e 2), obtidos pela média de 5 execuções para cada tamanho máximo
da lista (n) informado.
n Tempo (s) n Tempo (s)
1000000 0,0532066 70000000 4,7152432
2000000 0,116091 80000000 5,4314676
3000000 0,1782272 90000000 6,145308
4000000 0,2408796 100000000 6,8554018
05
101520253035
Crivo Paralelo
Em 6 nós do Cluster
Tempo em 6 nós
Número de elementos da lista
Te
mp
o (
se
gu
nd
os
)
5000000 0,3043528 200000000 14,1264802
6000000 0,3679526 300000000 21,5093568
7000000 0,4314076 400000000 29,0377944
8000000 0,4953566 500000000 36,669728
9000000 0,5620698 600000000 44,1835366
10000000 0,6280028 700000000 51,709852
20000000 1,28344 800000000 59,3611028
30000000 1,9517182 900000000 67,1209502
40000000 2,6316288 1000000000 74,9110786
50000000 3,316329
60000000 4,0112616
Figura 4: O gráfico que informa o tempo de execução do algoritmo paralelo utilizando 3 nós do cluster, a medida que se aumenta o número de elementos da lista.
01020304050607080
Crivo Paralelo
Em 3 nós do Cluster
Tempo em 3 nós
Número de elementos da lista
Te
mp
o (
se
gu
nd
os
)
Figura 5: O gráfico informa o tempo de execução do algoritmo sequencial, paraleloutilizando 3 nós do cluster e paralelo utilizando 6 nós do cluster. Podemos ver que aqueda no tempo de execução é relevante a medida que incluímos mais nós.
3.1 Análise de Speedup
O Speedup é a relação entre o tempo para executar um algoritmo em um único processador T e o tempo para executá-lo em P processadores. Assim temos Sp = T/P.O ideal é que tenhamos um speedup P, mais isto nem sempre acontece devido a atrasos pela sobrecarga de sincronização, comunicação, dentre outros.
Tabela 3: Resultado do Speedup para relação do tempo sequencial com o tempoparalelo para 6 nós com n elementos da lista.
n Speedup n Speedup
1000000 5,561436262 70000000 4,950137976
2000000 4,549655288 80000000 4,953685843
3000000 4,558519459 90000000 4,979628692
4000000 4,634346869 100000000 4,972443413
5000000 4,674484634 200000000 3,975118454
6000000 4,732611117 300000000 4,960442605
020406080
100120140160
Algoritmo sequencial e paralelo
Tempo Sequencial Tempo em 6 nós Tempo em 3 nós
Número de lementos da lista
Te
mp
o (
se
gu
nd
os
)
7000000 4,787810476 400000000 4,992696885
8000000 4,812367165 500000000 4,95893381
9000000 4,849808777 600000000 4,951540462
10000000 4,872923 700000000 4,949916648
20000000 5,013381733
30000000 4,980916312
40000000 4,982802118
50000000 4,976567472
60000000 4,944213428
Figura 6: O gráfico informa o speedup para execução do algoritmo a medida que aumentamos o número de elementos da lista. Nesse caso não atingimos o speedup ideal que é igual a 6, provavelmente devido aos atrasos de comunicação, sincronização, entre outros.
Tabela 4: Resultado do Speedup para relação do tempo sequencial com o tempoparalelo para 3 nós com n elementos da lista.
n Speedup n Speedup
1000000 2,597809294 70000000 2,802890846
0123456
Speedup
Para execuçãoem 6 nós do Cluster
Speedup
Número de elementos da lista
2000000 2,56371984 80000000 2,80181942
3000000 2,594220186 90000000 2,81446873
4000000 2,613866014 100000000 2,812563226
5000000 2,62791011 200000000 2,26074709
6000000 2,642392526 300000000 2,839508348
7000000 2,656513237 400000000 2,860089773
8000000 2,66852526 500000000 2,845431881
9000000 2,66539138 600000000 2,860466969
10000000 2,671706241 700000000 2,87303199
20000000 2,732881319 800000000 2,87964138
30000000 2,759016542 900000000 2,881196786
40000000 2,776328789 1000000000 2,882048117
50000000 2,789619667
60000000 2,798045084
Figura 7: O gráfico informa o speedup para execução do algoritmo a medida que aumentamos o número de elementos da lista. Neste caso não obtemos o speedup ideal que é 3.
2,42,52,62,72,82,9
3
Speedup
Para execução em 3 nós do Cluster
Speedup
Número de elementos da lista
3.2 Análise de Eficiência
A eficiência define quanto os processadores estão sendo empregados para o processamento paralelo. Relaciona o speedup (Sp) e o número de processadores (p). Ef = Sp/p. O ideal é que a eficiência seja igual a 1.
Tabela 5: Resultado da Eficiência para relação do tempo sequencial com o tempoparalelo para 6 nós com n elementos da lista.
n Eficiência n Eficiência
1000000 0,926906044 70000000 0,825022996
2000000 0,758275881 80000000 0,825614307
3000000 0,759753243 90000000 0,829938115
4000000 0,772391145 100000000 0,828740569
5000000 0,779080772 200000000 0,662519742
6000000 0,788768519 300000000 0,826740434
7000000 0,797968413 400000000 0,832116148
8000000 0,802061194 500000000 0,826488968
9000000 0,808301463 600000000 0,825256744
10000000 0,812153833 700000000 0,824986108
20000000 0,835563622
30000000 0,830152719
40000000 0,83046702
50000000 0,829427912
60000000 0,824035571
Figura 8: O gráfico informa a eficiência do algoritmo paralelo utilizando 6 nós docluster.
Tabela 6: Resultado da Eficiência para relação do tempo sequencial com o tempoparalelo para 3 nós com n elementos da lista.
n Eficiência n Eficiência
1000000 0,865936431 70000000 0,934296949
2000000 0,85457328 80000000 0,933939807
3000000 0,864740062 90000000 0,938156243
4000000 0,871288671 100000000 0,937521075
5000000 0,875970037 200000000 0,753582363
6000000 0,880797509 300000000 0,946502783
7000000 0,885504412 400000000 0,953363258
8000000 0,88950842 500000000 0,948477294
9000000 0,888463793 600000000 0,95348899
10000000 0,890568747 700000000 0,95767733
20000000 0,91096044 800000000 0,95988046
0
0,2
0,4
0,6
0,8
1
Eficiência
Para execução em 6 nós do Cluster
Eficiência com 6 nós
Número de elementos da lista
30000000 0,919672181 900000000 0,960398929
40000000 0,92544293 1000000000 0,960682706
50000000 0,929873222
60000000 0,932681695
Figura 9: O gráfico informa a eficiência do algoritmo paralelo utilizando 3 nós do cluster.
0,8
0,85
0,9
0,95
1
Eficiência
Para execução em 3 nós do Cluster
Eficiência com 3 nós
Número de elementos da lista
0
0,2
0,4
0,6
0,8
1
1,2
Comparação de Eficiência
Eficiência com 6 nós Eficiência com 3 nós
Número de elementos da lista
Figura 10: O gráfico mostra a comparação da eficiência entre a execução do algoritmo em 3 nós do cluster e a execução em 6 nós do cluster.
4.Referências Bibliográficas
Disciplina de Processamento Paralelo PUC-MINAS Poços de Caldas<http://www.pucpcaldas.br/~55/1669100/> Acessado em 18 de setembro de 2014.
Programação Concorrente e Paralela:Algoritmo paralelo para o Crivo de Eratóstenes<http://www.inf.puc-rio.br/~noemi/pcp-13/primos.pdf> Acessado em 18 de setembro de2014.
Crivo de Eratóstenes<http://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes>Acessado em 18 de setembro de 2014.
Top Related