170 likes | 329 Views
Caminho da Apresentao. Viso geralO problemaA implementaoResultadosConcluses. Viso Geral. Objeto do estudo:Um benchmark seqencial (de tipo kernel) obtido no frum Java Grande que calcula o n primeiros coeficientes de Fourier (onde n dado pelo usurio)O que foi feito: O benchmark foi
E N D
1. Paralelização do Cálculo da Série de Fourier usando Java RMI
por
Maurício Moraes
2. Caminho da Apresentação Visão geral
O problema
A implementação
Resultados
Conclusões
3. Visão Geral Objeto do estudo:
Um benchmark seqüencial (de tipo kernel) obtido no fórum Java Grande que calcula o n primeiros coeficientes de Fourier (onde n é dado pelo usuário)
O que foi feito:
O benchmark foi paralelizado utilizando-se a tecnologia Java/RMI
Objetivo:
Verificar as diferenças de desempenho entre as versões sequencial e paralela para demostrar os ganhos e perdas em desempenho das duas soluções
4. O Problema Em 1807, Joseph Fourier submeteu um artigo à Academia de Ciências de Paris. Este artigo continha uma descrição matemática de problemas envolvendo condução térmica
De acordo com Fourier, qualquer função periódica F(t) pode ser representada por um série infinita na forma:
5. Cálculo dos Coeficientes Os coeficientes a0 an e bn são calculados pelas fórmulas:
6. Algoritmo Seqüencial O algoritmo utilizado aqui calcula os primeiros n coeficientes da função (x+1)^x definidos no intervalo [0,2], onde n é um número arbitrário dado como parâmetro:
Entrada: n
Saída: R[2][n]
1: R[0][0]:= cálculo de a0
2: para i= 1 até n faça
3: R[0][i]:= cálculo de an
4: R[1][i]:= cálculo de bn
5: fim para
6: retorna R
7. Paralelização
8. Algoritmo Paralelo Entrada: n, SERV_NAMES[k]
Saída: R[2][n]
1: t:= (n/k)
2: para i:= 1 até t faça
3: cria thread T
4: T executa remotamente calc(Iinicial, Ifinal)
5: fim para
6: espera por todas as threads (join)
7: R = resultados organizados remote R[2][If-Ii] calc(int Ii,int If)::
0: x:= If - Ii
1: se (Ii==0) então
R[0][0]:= cálculo de a0
2: para i= 1 até x faça
3: R[0][i]:= cálculo de ax
4: R[1][i]:= cálculo de bx
5: fim para
6: retorna R
9. Implementação Paralela Paralelizar o algoritmo seqüencial implicou em:
sincronizar o acesso às variáveis globais
Adaptar o método calculador dos coeficientes para reber um intervalo parametrizado
Criar uma estrutura para execução RMI:
disparar os servidores
particionar o problema
distribuir tarefas
coletar todos os resultados
fornecer a resposta
10. Configurações e Speed-up Poncho: SparcStation 20
guaiaca: UltraSparc 10
coisa: Athlon 1 Ghz
andrews: Pentium III 1GHz
Indiana: Pentium III 1GHz
11. Resultados: 50 coeficientes
12. Resultados: 100 coeficientes
13. Resultados: 500 coeficientes
14. Resultados: 1000 coeficientes
15. Resultados: 2000 coeficientes
16. Resultados do Primos Dados de apenas uma máquina (sem paralelização)
17. Considerações Finais e Observações O resultados obtidos mostram que o aumento de desempenho que se espera obter pela divisão do problema depende, entre outros (velocidade/carga da rede, utilização dos nodos), de 2 fatores:
a capacidade computacional dos nodos remotos em relação à capacidade da máquina disponível para o cálculo seqüencial
o número de coeficientes a ser calculado. O desempenho é prejudicado se o tamanho das tarefas for pequeno (menor que aproximadamente 50 coeficientes calculados por máquina)
Além disso, observou-se que a sobrecarga imposta pelo mecanismo de RMI (SUN/JDK 1.4.1) é de aproximadamente 4,1s para a máquina mais lenta e de 0,9s para a máquina mais rápida