processamento paralelo exemplo do crivo de erstótenes paralelo e sequencial

15
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Curso de Ciência da Computação Processamento Paralelo Crivo de Erastótenes Fernando Henrique Cândido Jaffer dos Santos Veronezi Poços de Caldas 2014

Upload: jaffer-veronezi

Post on 14-Jul-2015

251 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 2: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 3: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 4: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 5: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

)

Page 6: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

)

Page 7: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

)

Page 8: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

)

Page 9: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 10: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 11: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 12: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 13: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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

Page 14: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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.

Page 15: Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

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.