SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
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
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úmero 
de 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 quebrada 
em 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 quantos 
primos existem na lista. 
A complexidade do algoritmo é de O((n log log n)/p), sendo n números de elementos da 
lista 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 em 
trace), D-uniterruptable sleep, Z=zombie, a hora que iniciou o processo (START),o 
tempo total de CPU usado pelo processador (TIME) e o comando usado para 
iniciar o processo (COMMAND). 
Tabela 1: Resultados experimentais para o algoritmo sequencial, 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,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
250 
200 
150 
100 
50 
Número de elementos da lista 
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 paralelo 
foi 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ós 
do 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 
Crivo Sequencial 
Tempo Sequencial 
Tempo (segundos)
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 
35 
30 
25 
20 
15 
10 
Número de elementos da lista 
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ós 
do 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 
0 5 
Crivo Paralelo 
Em 6 nós do Cluster 
Tempo em 6 nós 
Tempo (segundos)
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 
80 
70 
60 
50 
40 
30 
20 
10 
0 
Crivo Paralelo 
Em 3 nós do Cluster 
Número de elementos da lista 
Tempo em 3 nós 
Tempo (segundos) 
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.
160 
140 
120 
100 
80 
60 
40 
20 
Número de lementos da lista 
Figura 5: O gráfico informa o tempo de execução do algoritmo sequencial, paralelo 
utilizando 3 nós do cluster e paralelo utilizando 6 nós do cluster. Podemos ver que a 
queda 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 tempo 
paralelo 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 
0 
Algoritmo sequencial e paralelo 
Tempo Sequencial Tempo em 6 nós Tempo em 3 nós 
Tempo (segundos)
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 
6 
5 
4 
3 
2 
1 
Número de elementos da lista 
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 tempo 
paralelo para 3 nós com n elementos da lista. 
n Speedup n Speedup 
1000000 2,597809294 70000000 2,802890846 
0 
Speedup 
Para execuçãoem 6 nós do Cluster 
Speedup
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 
3 
2,9 
2,8 
2,7 
2,6 
2,5 
2,4 
Speedup 
Para execução em 3 nós do Cluster 
Número de elementos da lista 
Speedup 
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.
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 tempo 
paralelo 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
1 
0,8 
0,6 
0,4 
0,2 
Número de elementos da lista 
Figura 8: O gráfico informa a eficiência do algoritmo paralelo utilizando 6 nós do 
cluster. 
Tabela 6: Resultado da Eficiência para relação do tempo sequencial com o tempo 
paralelo 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 
Eficiência 
Para execução em 6 nós do Cluster 
Eficiência com 6 nós
30000000 0,919672181 900000000 0,960398929 
40000000 0,92544293 1000000000 0,960682706 
50000000 0,929873222 
60000000 0,932681695 
1 
0,95 
0,9 
0,85 
0,8 
Eficiência 
Para execução em 3 nós do Cluster 
Número de elementos da lista 
Eficiência com 3 nós 
Figura 9: O gráfico informa a eficiência do algoritmo paralelo utilizando 3 nós do 
cluster. 
1,2 
1 
0,8 
0,6 
0,4 
0,2 
0 
Comparação de Eficiência 
Número de elementos da lista 
Eficiência com 6 nós Eficiência com 3 nós
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 de 
2014. 
Crivo de Eratóstenes 
<http://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes>Acessado em 18 de 
setembro de 2014.

Mais conteúdo relacionado

Semelhante a Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...
Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...
Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...Eduardo de Lucena Falcão
 
Análise de Disco, I/O e Processamento
Análise de Disco, I/O e ProcessamentoAnálise de Disco, I/O e Processamento
Análise de Disco, I/O e ProcessamentoJohnnatan Messias
 
Testes nao funcionais 1
Testes nao funcionais 1Testes nao funcionais 1
Testes nao funcionais 1Nauber Gois
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
SysSorting Professional
SysSorting ProfessionalSysSorting Professional
SysSorting ProfessionalMichel Alves
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgRegis Magalhães
 
Conceitos e técnicas de programação apostilha algoritmo
Conceitos e técnicas de programação apostilha algoritmoConceitos e técnicas de programação apostilha algoritmo
Conceitos e técnicas de programação apostilha algoritmoRobson Ferreira
 
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NAAula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NACloves da Rocha
 
Comparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de OrdenaçãoComparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de OrdenaçãoLenon Fachiano
 
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortCálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortJohnnatan Messias
 
lista de Estrutura de Dados II
lista de Estrutura de Dados IIlista de Estrutura de Dados II
lista de Estrutura de Dados IIViviane Araujo
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoOrlando Junior
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Giovani Barili
 
Trabalho 01-CEP-UFAM-AM ANO2024/030.docx
Trabalho 01-CEP-UFAM-AM ANO2024/030.docxTrabalho 01-CEP-UFAM-AM ANO2024/030.docx
Trabalho 01-CEP-UFAM-AM ANO2024/030.docxHelderEvangelista1
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfssuser1d8ddd
 

Semelhante a Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial (20)

Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...
Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...
Estudo e Avaliação do Problema de Otimização da Multiplicação de Cadeias de M...
 
Doc estatistica _1198613339
Doc estatistica _1198613339Doc estatistica _1198613339
Doc estatistica _1198613339
 
Análise de Disco, I/O e Processamento
Análise de Disco, I/O e ProcessamentoAnálise de Disco, I/O e Processamento
Análise de Disco, I/O e Processamento
 
Testes nao funcionais 1
Testes nao funcionais 1Testes nao funcionais 1
Testes nao funcionais 1
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
SysSorting Professional
SysSorting ProfessionalSysSorting Professional
SysSorting Professional
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Conceitos e técnicas de programação apostilha algoritmo
Conceitos e técnicas de programação apostilha algoritmoConceitos e técnicas de programação apostilha algoritmo
Conceitos e técnicas de programação apostilha algoritmo
 
Visu alg ref
Visu alg refVisu alg ref
Visu alg ref
 
Apostila visualgv25
Apostila visualgv25Apostila visualgv25
Apostila visualgv25
 
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NAAula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
 
Comparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de OrdenaçãoComparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de Ordenação
 
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortCálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
 
lista de Estrutura de Dados II
lista de Estrutura de Dados IIlista de Estrutura de Dados II
lista de Estrutura de Dados II
 
Perceptron e Multilayer Perceptron
Perceptron e Multilayer PerceptronPerceptron e Multilayer Perceptron
Perceptron e Multilayer Perceptron
 
R - D - DANIEL KAMINSKI DE SOUZA
R - D - DANIEL KAMINSKI DE SOUZAR - D - DANIEL KAMINSKI DE SOUZA
R - D - DANIEL KAMINSKI DE SOUZA
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
 
Trabalho 01-CEP-UFAM-AM ANO2024/030.docx
Trabalho 01-CEP-UFAM-AM ANO2024/030.docxTrabalho 01-CEP-UFAM-AM ANO2024/030.docx
Trabalho 01-CEP-UFAM-AM ANO2024/030.docx
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdf
 

Mais de Jaffer Veronezi

ASPECTOS DA ENGENHARIA DE REQUISITOS
ASPECTOS DA ENGENHARIA DE REQUISITOSASPECTOS DA ENGENHARIA DE REQUISITOS
ASPECTOS DA ENGENHARIA DE REQUISITOSJaffer Veronezi
 
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Jaffer Veronezi
 
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...Jaffer Veronezi
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilJaffer Veronezi
 

Mais de Jaffer Veronezi (6)

A Análise de Negócios
A Análise de NegóciosA Análise de Negócios
A Análise de Negócios
 
ASPECTOS DA ENGENHARIA DE REQUISITOS
ASPECTOS DA ENGENHARIA DE REQUISITOSASPECTOS DA ENGENHARIA DE REQUISITOS
ASPECTOS DA ENGENHARIA DE REQUISITOS
 
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
 
Gerenciando um Projeto
Gerenciando um ProjetoGerenciando um Projeto
Gerenciando um Projeto
 
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...
Aplicativo móvel em Android para monitoramento de rotas dos usuários de trans...
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia Ágil
 

Processamento Paralelo exemplo do Crivo de Erstótenes Paralelo e Sequencial

  • 1. 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
  • 2. 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
  • 3. 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úmero de 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 quebrada em 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 quantos primos existem na lista. A complexidade do algoritmo é de O((n log log n)/p), sendo n números de elementos da lista 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
  • 4. 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 em trace), D-uniterruptable sleep, Z=zombie, a hora que iniciou o processo (START),o tempo total de CPU usado pelo processador (TIME) e o comando usado para iniciar o processo (COMMAND). Tabela 1: Resultados experimentais para o algoritmo sequencial, 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,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
  • 5. 250 200 150 100 50 Número de elementos da lista 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 paralelo foi 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ós do 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 Crivo Sequencial Tempo Sequencial Tempo (segundos)
  • 6. 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 35 30 25 20 15 10 Número de elementos da lista 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ós do 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 0 5 Crivo Paralelo Em 6 nós do Cluster Tempo em 6 nós Tempo (segundos)
  • 7. 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 80 70 60 50 40 30 20 10 0 Crivo Paralelo Em 3 nós do Cluster Número de elementos da lista Tempo em 3 nós Tempo (segundos) 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.
  • 8. 160 140 120 100 80 60 40 20 Número de lementos da lista Figura 5: O gráfico informa o tempo de execução do algoritmo sequencial, paralelo utilizando 3 nós do cluster e paralelo utilizando 6 nós do cluster. Podemos ver que a queda 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 tempo paralelo 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 0 Algoritmo sequencial e paralelo Tempo Sequencial Tempo em 6 nós Tempo em 3 nós Tempo (segundos)
  • 9. 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 6 5 4 3 2 1 Número de elementos da lista 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 tempo paralelo para 3 nós com n elementos da lista. n Speedup n Speedup 1000000 2,597809294 70000000 2,802890846 0 Speedup Para execuçãoem 6 nós do Cluster Speedup
  • 10. 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 3 2,9 2,8 2,7 2,6 2,5 2,4 Speedup Para execução em 3 nós do Cluster Número de elementos da lista Speedup 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.
  • 11. 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 tempo paralelo 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
  • 12. 1 0,8 0,6 0,4 0,2 Número de elementos da lista Figura 8: O gráfico informa a eficiência do algoritmo paralelo utilizando 6 nós do cluster. Tabela 6: Resultado da Eficiência para relação do tempo sequencial com o tempo paralelo 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 Eficiência Para execução em 6 nós do Cluster Eficiência com 6 nós
  • 13. 30000000 0,919672181 900000000 0,960398929 40000000 0,92544293 1000000000 0,960682706 50000000 0,929873222 60000000 0,932681695 1 0,95 0,9 0,85 0,8 Eficiência Para execução em 3 nós do Cluster Número de elementos da lista Eficiência com 3 nós Figura 9: O gráfico informa a eficiência do algoritmo paralelo utilizando 3 nós do cluster. 1,2 1 0,8 0,6 0,4 0,2 0 Comparação de Eficiência Número de elementos da lista Eficiência com 6 nós Eficiência com 3 nós
  • 14. 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.
  • 15. 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 de 2014. Crivo de Eratóstenes <http://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes>Acessado em 18 de setembro de 2014.