0
UEM - Universidade Estadual de Maringá
           DIN - Departamento de Informática
               Mestrado em Ciência da ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares

   ESTRUTURA...
Desenvolvimento de Algoritmos Paralelos para
                    Simulador de Multiprocessadores Superescalares
   COMPUTA...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   SIMULADOR ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   SIMULADOR ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   SIMULADOR ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   SIMULADOR ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   PROGRAMAÇÃ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
   AVALIAÇÃO ...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                                   Simulador de Multiprocessadores Superescal...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                                 Simulador de Multiprocessadores Superescalar...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                   Simulador de Multiprocessadores Superescalares
  ALGORITMO...
Desenvolvimento de Algoritmos Paralelos para
                    Simulador de Multiprocessadores Superescalares
ALGORITMO ...
Desenvolvimento de Algoritmos Paralelos para
                                    Simulador de Multiprocessadores Superesca...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO T...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO P...
Desenvolvimento de Algoritmos Paralelos para
                    Simulador de Multiprocessadores Superescalares
  ALGORITM...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO D...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO D...
Desenvolvimento de Algoritmos Paralelos para
                                Simulador de Multiprocessadores Superescalare...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  ALGORITMO D...
Desenvolvimento de Algoritmos Paralelos para
                                    Simulador de Multiprocessadores Superesca...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  SIMULAÇÃO D...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  SIMULAÇÃO D...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  SIMULAÇÃO D...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  SIMULAÇÃO D...
Desenvolvimento de Algoritmos Paralelos para
                                      Simulador de Multiprocessadores Superes...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  TRABALHOS F...
Desenvolvimento de Algoritmos Paralelos para
                 Simulador de Multiprocessadores Superescalares
  CONCLUSÃO

...
Upcoming SlideShare
Loading in...5
×

Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas

2,034

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,034
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas"

  1. 1. UEM - Universidade Estadual de Maringá DIN - Departamento de Informática Mestrado em Ciência da Computação Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares Mestrando: Luiz Arthur Feitosa dos Santos Orientador: Prof. Dr. João Angelo Martini
  2. 2. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ESTRUTURA DO TRABALHO COMPUTAÇÃO PARALELA SIMULADOR DE ARQUITETURAS PROGRAMAÇÃO PARALELA E ALGORITMOS PARALELOS AVALIAÇÃO DE DESEMPENHO ALGORITMOS PARALELOS PARA O SMS TRABALHOS FUTUROS CONCLUSÃO Mestrando: Luiz Arthur Feitosa dos Santos 2
  3. 3. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares COMPUTAÇÃO PARALELA PROCESSAMENTO SEQÜENCIAL Memória Dispositivo de entrada Unidade Aritmética MÁQUINA DE VON NEUMANN lógica Dispositivo (TANEMBAUM 2001) Unidade de de saída controle Acumulador (a) ARQUITETURAS PARALELAS COM MEMÓRIA COMPARTILHADA E DISTRIBUÍDA Processador 1 Cache Processador 1 Memória Memória Rede de Interconexão Cache Barramento Processador 2 Processador 2 Disp. Cache Entrada/S Cache aída Memória Disp. Processador N Entrada/ Processador N Cache Saída Cache (b) Memória (c) Mestrando: Luiz Arthur Feitosa dos Santos 3
  4. 4. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULADOR DE ARQUITETURAS Simuladores de arquiteturas: MINT (MIPS Interpreter) (VEENSTRA, 1993) utiliza threads para simular um ambiente multiprocessador, conta com sistema de interconexão e hierarquia de memória. O MINT roda executáveis compilados para plataformas MIPS (R3000). RSIM (Rice Simulator) (PAI, 1997) implementa um modelo de processador detalhado para arquitetura superescalar. Simula um sistema multiprocessador de memória compartilhada. O RSIM roda nas plataformas SPARC e Solaris. ABSS (SPARC Simulator) (SUNADA, 1998) empregado principalmente nas simulações de memória. O ABSS usa threads para simular multiprocessadores. Ele roda apenas nas plataformas SPARC e possui interface gráfica derivada do MINT. Proteus (BREWER, 1991) permite a simulação de multiprocessadores com interconexões do tipo: bus, k-ary, n-cube e butterfly. Possui biblioteca para passagem de mensagens, gerenciamento de memória e threads, além de coleta de dados e interface gráfica sofisticada para representar as saídas da simulação. Mestrando: Luiz Arthur Feitosa dos Santos 4
  5. 5. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULADOR DE ARQUITETURAS Augmint (NGUYEN, 1996) usa threads para simular um sistema multiprocessador com espaço de memória compartilhada e privada (para determinadas variáveis). Ele roda aplicações escritas em C e C++ com macros-m4. Ele roda em arquiteturas Intel x86. Tango Lite (HERROD, 1993) simula um ambiente multiprocessador com memória compartilhada. Ao contrário do seu predecessor o Tango, o Tango Lite usa threads ao invés de Unix Process. O Tango Lite roda em plataforma MIPS (R3000). MulSim (MATLOFF, 2005) é um simulador para ambiente multiprocessador com memória compartilhada, dispondo de vários tipos de interconexão entre memória e processador. Multiprocessor Enhancements of the SimpleScalar Tool Set (MANJIKIAN, 2001). Simulador funcional (não detalhado) e simulador de cache baseados na ferramenta SimpleScalar, usam threads para simular um ambiente multiprocessador. Conta com suporte à visualização gráfica do conteúdo da cache. SMINT ou Superescalar MINT (LU, 1998) é um simulador de multiprocessadores superescalares baseado no simulador MINT. Mestrando: Luiz Arthur Feitosa dos Santos 5
  6. 6. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULADOR DE ARQUITETURAS SIMPLESCALAR O SimpleScalar foi desenvolvido em 1992 na Universidade de Wisconsin sob coordenação de Gurindar S. Sohi e pode emular diversos conjuntos de instruções como por exemplo: ARM, Alpha, PowerPC e x86, e devido à sua arquitetura aberta ele pode ser estendido a outros conjuntos de instruções. SMS (SIMULADOR DE MULTIPROCESSADORES SUPERESCALAR) O SMS tem como base o núcleo do simulador SimpleScalar. Atualmente a ferramenta dispõe de memória distribuída, primitivas de comunicação (Send e Receive) para troca de mensagens e uso de uma rede de interconexão com topologia de barramento compartilhado e viabiliza o desenvolvimento de aplicações e análise de desempenho de computadores paralelos. Mestrando: Luiz Arthur Feitosa dos Santos 6
  7. 7. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULADOR DE ARQUITETURAS Interface Gráfica Interface para passagem de parâmetros da simulação Interface Simulador Disparador e Coletor Programas Programa Programa Programa ... Programa do Usuário 1 2 3 N Simulador Bibliotecas – Send e Receive Gerenciador de Memória Paralelo Protocolo Topologia Processador Processador Processador ... Processador 1 2 3 N Mestrando: Luiz Arthur Feitosa dos Santos 7
  8. 8. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares PROGRAMAÇÃO PARALELA E ALGORITMOS PARALELOS Um algoritmo paralelo pode ser definido como um conjunto de processos (partes de um programa) que podem ser executados simultaneamente, tais processos podem se comunicar uns com os outros a fim de resolver um determinado problema. Já um algoritmo seqüencial é executado passo a passo de forma seqüencial como foi definido durante a sua programação (ZARGHAN, 1995). A construção de um algoritmo paralelo segue basicamente os seguintes passos: •Identificar pontos do programa que podem ser executados de forma paralela; •Distribuir as entradas e saídas de dados pertinentes à aplicação, bem como os dados intermediários gerados durante a execução das tarefas e que estão associados ao programa; •Gerenciar da melhor forma possível o acesso aos dados compartilhados pelos processadores, para execução de um dado problema, reduzindo a comunicação entre processos; •Sincronizar eficientemente os processadores nos mais diversos estágios de execução de um programa paralelo, de forma que os processadores não fiquem com uma carga de trabalho muito elevada ou muito baixa. Mestrando: Luiz Arthur Feitosa dos Santos 8
  9. 9. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares AVALIAÇÃO DE DESEMPENHO Historicamente o tempo de execução ou o tempo decorrido (elapsed time) é uma das métricas mais populares para verificar a performance em um dado sistema. O speedup é a referência de quão melhor é um sistema paralelo em relação ao sistema seqüencial ou outro sistema podendo ser até mesmo outro paralelo. TempoExecuçãoSeqüencial TempoExecuçãoParalelo1 Aceleração = Aceleração = TempoExecuçãoParalelo TempoExecuçãoParalelo N Speedup Absoluto Speedup Relativo Eficiência é uma medida da fração de tempo na qual um processador é realmente usado. A eficiência é considerada uma métrica que investiga a escalabilidade dos algoritmos. Tal métrica é obtida pela fórmula E = S/p, sendo S o speedup e p o número de processadores. Mestrando: Luiz Arthur Feitosa dos Santos 9
  10. 10. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO DE MULTIPLICAÇÃO DE MATRIZES Mestre Escravos 01. #include </usr/sms/com.h> 01. struct _matriz matriz; 02. struct _matriz matriz; 02. struct _vetor vetor; 03. struct _vetor vetor; 03. void main(void){ 04. void main(void) { 04. openchanel(); 06. openchanel(); 05. /*recebe matriz B para suas colunas serem multiplicadas 07. sendbc(((char *)&matriz),sizeof(_matriz)); 06. recv_be(((char *)&matriz),sizeof(_matriz)); 08. recv_be(((char *)&matriz),sizeof(_matriz)); 07. for (;;){ 09. for (i=0;i<N;++i){ 08. for(i=0;i<N;++i){ 10. for (t=0;t<N; ++t){vetor.X[t]=A[i][t];} 09. vtaux[i]=0;} 11. vetor.linha=i; 10. recv_be(((char *)&vetor), sizeof(_vetor)); 12. send(((char *)&vetor), sizeof(_vetor),p); 11. /* realiza a multiplicacao */ 13. if (p==P) p=1;else p++; 12. for (t=0;t<N;++t){ 14. } 13. for (i=0;i<N;++i){ 15. /*recebe e monta vetores nas matrizes*/ 14. vtaux[t]=vtaux[t]+(vetor.X[i]*matriz.B[i][t]);} 16. for (i=0;i<N;++i){ 15. } 17. recv_be(((char *)&vetor), sizeof(_vetor)); 16. /*atribui os calculos ao vetor para devolver ao mestre*/ 18. for (t=0;t<N;++t) { 17. for (t=0;t<N;++t){vetor.X[t]=vtaux[t];} 19. C[vetor.linha][t]=vetor.X[t]; 18. /*Envia vetor calculado ao mestre*/ 20. } 19. send(((char *)&vetor), sizeof(_vetor),0); Mestrando: Luiz Arthur Feitosa dos Santos 10
  11. 11. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO DE MULTIPLICAÇÃO DE MATRIZES # total simulation time in seconds sim_elapsed_time 53410 # total number of instructions executed sim_total_insn_00 23773083318 sim_total_insn_01 12126038543 # total simulation time in cycles sim_cycle 11878967426 # total number of ocupance cycles inet_ocupance_cycles_00 2560800 inet_ocupance_cycles_01 320400 # total number of bytes received inet_received_bytes_00 5123200 inet_received_bytes_01 3841600 # total number of bytes sended inet_sended_bytes_00 10243200 inet_sended_bytes_01 1281600 Saída reduzida de uma simulação no SMS Mestrando: Luiz Arthur Feitosa dos Santos 11
  12. 12. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO DE MULTIPLICAÇÃO DE MATRIZES Multiplicação de Matrizes 50x50 Multiplicação de Matrizes 100x100 16 160 14 140 Tempo em segundos Tempo em segundos 1 1 12 120 2 2 10 100 4 4 8 80 8 8 6 60 16 16 4 40 32 32 2 20 0 0 Processadores Processadores Multiplicação de Matrizes 600x600 Multiplicação de Matrizes 800x800 40000 90000 35000 80000 Tempo em segundos Tempo em segundos 1 70000 1 30000 2 60000 2 25000 4 50000 4 20000 8 40000 8 15000 16 30000 16 10000 20000 32 32 5000 10000 0 0 Processadores Processadores Tempo de execução do algoritmo de multiplicação de matrizes Mestrando: Luiz Arthur Feitosa dos Santos 12
  13. 13. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO DE MULTIPLICAÇÃO DE MATRIZES Multiplicação de Matrizes Speedup apresentado 30 pelo algoritmo 25 paralelo de 50x50 20 multiplicação de Speedup 100x100 15 matrizes 600x600 10 800x800 5 0 1 2 4 8 16 32 Processadores Multiplicação de Matrizes 1,8 1,6 1,4 50x50 Eficiência apresentada 1,2 Eficiência 1 100x100 pelo algoritmo paralelo 0,8 600x600 de multiplicação de 0,6 800x800 0,4 matrizes 0,2 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 13
  14. 14. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO PARA CÁLCULO DO π O π é um número irracional expresso por uma dízima infinita não periódica. A busca incansável por esse número surgiu devido ao fato dele estar ligado a dois problemas fundamentais do universo matemático. Existem diversas maneiras de se calcular o π, tais como: série de Fourier, Mclaurin, Taylor e via integração. O método utilizado para a construção do algoritmo aqui proposto será o de integração 1 4 π =∫ 0 1+ x2 Entrada: Nº iterações N, Total de Entrada: Número do processador NP. processadores TP. Saída: Valor parcial de Saída: Valor global de pi_global recv_be(N,TP) send_bc(N,TP) w = 1.0/n for (x=1; x<=TP; x++) for (i=NP; i<=N; i=i+TP) recv_be(pi) x = w * (i – 0,5) pi_global=pi_global+pi pi = pi + (4.0 / (1.0 + (x * x))) mostra (pi_global) pi = pi * w send(pi) Mestre Escravo Mestrando: Luiz Arthur Feitosa dos Santos 14
  15. 15. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO PARA CÁLCULO DO π Cálculo do pi (n=10.000) Cálculo do pi (n=20.000) 70 140 60 120 Tempo em segundos Tempo em segundos 1 1 50 2 100 2 40 4 80 4 30 8 60 8 20 16 40 16 32 32 10 20 0 0 Processadores Processadores Cálculo do pi (n=100.000) Cálculo do pi (n=1.000.000) 700 8000 600 7000 Tempo em segundos Tempo em segundos 1 1 500 6000 2 2 5000 400 4 4 4000 300 8 8 3000 200 16 16 2000 32 32 100 1000 0 0 Processadores Processadores Tempo de execução do algoritmo do cálculo do π Mestrando: Luiz Arthur Feitosa dos Santos 15
  16. 16. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARALELO PARA CÁLCULO DO π Cálculo do pi 16 14 12 10.000 Speedup 10 20.000 8 100.000 6 4 1.000.000 2 0 1 2 4 8 16 32 Processadores Cálculo do pi 1,2 1 0,8 10.000 Eficiência 20.000 0,6 100.000 0,4 1.000.000 0,2 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 16
  17. 17. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO TRAPEZOIDAL RULE Para demonstrar a semelhança entre a biblioteca SMS de passagem de mensagem e o MPI, foi desenvolvido o algoritmo Trapezoidal Rule. Sendo que tal algoritmo determina a integral de um ponto a para b em uma função não negativa f(x) através da área restrita por um eixo x. y y f(x) f(x) b ∫ a f ( x)dx a b x (a) (b) Uma forma de se estimar a área ou integral é dividir a região em figuras geométricas, neste caso em trapézios, sendo que cada trapézio é a base do eixo x, e em seu ápice existem dois pontos que juntam a figura. Mestrando: Luiz Arthur Feitosa dos Santos 17
  18. 18. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO TRAPEZOIDAL RULE 02. #include </usr/sms/com.h> 03. struct _rank { // estrutura que informa passar o número do processador 2. #include "mpi.h" 05. int meu; } _rank; 3. double Trap(double local_a, double local_b, int local_n, double h); 07. struct _integral 4. double f(double x); 08. { double num; /* intervalo integral - local */ } _integral; 5. int main(int argc, char** argv) { 13. double Trap(double local_a, double local_b, int local_n, double h); … 14. double f(double x); 20. MPI_Status status; 15. int main(int argc, char** argv) { 21. MPI_Init(&argc, &argv); 30. openchanel(); /*sincroniza os processos mestre e escravo*/ 22. MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); 31. p=2; //numero do processador 23. MPI_Comm_size(MPI_COMM_WORLD, &p); 32. for (i=0; i<p; i++) 24. h = (b-a)/n; /* h é o mesmo em todos os processadores */ 33. {// determinar o rank de cada processador 25. local_n = n/p; /* número de trapezoids por nós */ 34. rank.meu=i; 26. local_a = a + my_rank*local_n*h; 35. send(((char *)&rank), sizeof(_rank),i); 27. local_b = local_a + local_n*h; 36. recv(((char *)&rank), sizeof(_rank)); 28. integral = Trap(local_a, local_b, local_n, h); 37. } 29. if (my_rank == 0) { 38. my_rank=rank.meu; 30. total = integral; 41. recv(((char *)&rank), sizeof(_rank)); 31. for (source = 1; source < p; source++) { 42. h = (b-a)/n; 32. MPI_Recv(&integral, 1, MPI_DOUBLE, source, tag, 43. local_n = n/p; 33. MPI_COMM_WORLD, &status); 44. local_a = a + my_rank*local_n*h; 34. total = total + integral; 45. local_b = local_a + local_n*h; 35. } 46. integral.num = Trap(local_a, local_b, local_n, h); 36. } else { 47. if (my_rank == 0) { 37. MPI_Send(&integral, 1, MPI_DOUBLE, dest, 48. total = integral.num; tag, MPI_COMM_WORLD); 49. for (source = 1; source < p; source++) { 38. } 50. recv_be(((char *)&integral), sizeof(_integral)); 39. if (my_rank == 0) { 51. total = total + integral.num; 40. printf("With n = %d trapezoids, our estimaten",n); 52. } 41. printf("of the integral from %f to %f = %23.16en", 53. } else {send(((char *)&integral), sizeof(_integral),dest);} a, b, total); 56. if (my_rank == 0) { 42. } 57. printf("With n = %d trapezoids, our estimaten", n); 43. MPI_Finalize(); 58. printf("of the integral from %f to %f = %23.16en", a, b, total); 44. return 0; 59. } 45. } 60. return 0; 61. } /* main */ MPI SMS 18
  19. 19. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO TRAPEZOIDAL RULE Trapezoidal Rule (n=250.000) Trapezoidal Rule (n=750.000) 25 70 60 Tempo em Segundos Tempo em Segundo 20 1 1 2 50 2 15 40 4 4 10 8 30 8 16 20 16 5 32 32 10 0 0 Processadores Processadores Trapezoidal Rule (n=1.000.000) 90 80 Tempo em Segundos 70 1 60 2 50 4 40 8 30 16 20 32 10 0 Processadores Trapezoidal Rule (n=2.000.000) Trapezoidal Rule (n=4.000.000) 180 400 160 350 Tempo em Segundos Tempo em Segundos 140 1 1 300 120 2 2 250 100 4 4 200 80 8 8 150 60 16 16 40 100 32 32 20 50 0 0 Processadores Processadores Mestrando: Luiz Arthur Feitosa dos Santos 19
  20. 20. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO TRAPEZOIDAL RULE Trapezoidal Rule 35 30 250.000 25 750.000 Speedup 20 1.000.000 15 2.000.000 10 4.000.000 5 0 1 2 4 8 16 32 Processadores Trapezoidal Rule 1,4 1,2 250.000 1 Eficiência 750.000 0,8 1.000.000 0,6 2.000.000 0,4 4.000.000 0,2 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 20
  21. 21. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARA TESTES DA REDE DE INTERCONEXÃO DO SIMULADOR SMS Numa arquitetura paralela, a rede de interconexão tem papel fundamental sobre o desempenho de todo sistema paralelo. Neste contexto, é relevante que a ferramenta de simulação viabilize a investigação da arquitetura simulada em função da rede de interconexão. Portanto, o estudo sobre as tecnologias de transmissão de dados em redes de interconexão é extremamente relevante em ambientes paralelos, pois a rede tem influência direta sobre o desempenho das aplicações. Tornando necessário que existam algoritmos que viabilizem testes para a rede de interconexão utilizada na ferramenta SMS. O primeiro algoritmo implementado com este fim é chamado de Round- Trip, que é um algoritmo que mede a taxa de transferência dos dados na rede de interconexão do simulador. Entrada: Tamanho em bytes da mensagem. Entrada: msg (mensagem do mestre) Saída: Taxa de transmissão da rede de Saída: msg (mensagem par o mestre) interconexão em bytes por segundo (bps) Recv_be(msg); Send (msg, mestre); T1=tempo inicial; Msg= 1000; // bytes Send (msg, escravo); Recv_be(msg); T2=tempo final; Tempo_total=T2-T1; Calcula taxa de taxa de trasferencia(); Mostra taxa de transferência em bps. (a) (b) Mestrando: Luiz Arthur Feitosa dos Santos 21
  22. 22. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO PARA TESTES DA REDE DE INTERCONEXÃO DO SIMULADOR SMS Bytes msg 1.000 2.000 Bytes msg 4.000 fc 1 10.243.802 11.046.794 11.794.191 fc 2 5.799.589 5.829.884 6.308.472 3 4.086.971 4.193.892 4.302.806 4 3.013.319 3.084.535 3.208.439 5 2.535.703 2.557.434 2.541.619 10 1.312.808 1.283.974 1.313.513 20 0.650653 0.667792 0.627479 30 0.440441 0.437780 0.444038 100 0.135112 0.137166 0.112469 200 0.067977 0.068447 0.069002 bps Mestrando: Luiz Arthur Feitosa dos Santos 22
  23. 23. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO DE ORDENAÇÃO ODD-EVEN É muito comum tanto em aplicações científicas quanto comerciais a utilização de métodos de ordenação de dados. Define-se como um algoritmo de ordenação, o que contenha funções para rearranjar uma lista desordenada de elementos de maneira que tais elementos fiquem ordenados de forma crescente ou decrescente. O algoritmo Odd-Even ordena n elementos em n fases (sendo n ímpar), cada qual requer n/2 operações de comparação e troca. Mestrando: Luiz Arthur Feitosa dos Santos 23
  24. 24. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO DE ORDENAÇÃO ODD-EVEN O algoritmo de ordenação Odd-Even proposto para o simulador SMS, segue o mesmo princípio. Com a diferença de que o arranjo será dividido pelo número de processadores (n/p), em que n e p são múltiplos de dois. Cada nó então conterá um sub-arranjo, durante a fase ímpar, os nós irão enviar seus sub-arranjos para seus vizinhos à direita e os seus vizinhos à direita irão da mesma forma enviar seus sub-arranjos para seus vizinhos ímpares da esquerda. Em posse desses sub- arranjos cada nó que compõe a operação ímpar irá ordenar os dois sub-arranjos. Mestrando: Luiz Arthur Feitosa dos Santos 24
  25. 25. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO DE ORDENAÇÃO ODD-EVEN Odd-Even Sort (n=2048) Odd-Even Sort (n=4096) Odd-Even Sort (n=8192) 8 16 40 7 14 35 Tempo em Segundos Tempo em Segundos Tempo em Segundos 1 1 1 6 12 30 2 2 2 5 10 25 4 4 4 4 8 20 8 8 8 3 6 15 16 16 16 2 4 10 32 32 32 1 2 5 0 0 0 Processadores Processadores Processadores Odd-Even Sort (n=16384) Odd-Even Sort (n=32768) Odd-Even Sort (n=65536) 90 200 450 80 400 Tempo em Segundos Tempo em Segundos Tempo em Segundos 70 1 1 350 1 150 60 2 2 300 2 50 4 4 250 4 100 40 8 8 200 8 30 16 16 150 16 20 50 100 32 32 32 10 50 0 0 0 Processadores Processadores Processadores Mestrando: Luiz Arthur Feitosa dos Santos 25
  26. 26. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO DE ORDENAÇÃO ODD-EVEN Odd-Even Sort 10 8 2048 4096 Speedup 6 8192 4 16384 32768 2 65536 0 1 2 4 8 16 32 Processadores Odd-Even Sort 1,2 1 2048 0,8 4096 Eficiência 8192 0,6 16384 0,4 32768 0,2 65536 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 26
  27. 27. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares ALGORITMO DE ORDENAÇÃO ODD-EVEN Como o algoritmo Odd-Even tem como objetivo principal o teste da rede de interconexão, tal algoritmo atinge este objetivo claramente. Para isto basta comparar o fluxo da rede de interconexão dos algoritmos Odd-Even e do π. Envio de mensagens cálculo do pi Recebimento de mensagens cálculo do pi 0 0 Processadores Processadores 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 20 40 60 80 100 120 0 10 20 30 40 50 60 70 8 8 Bytes Bytes Uso da rede de interconexão do algoritmo de cálculo do π Envio de Mensagens do Odd-Even Sort Recebimento de Mensagens do Odd-Even Sort 0 Processadores 0 Processadores 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 50000 100000 150000 200000 250000 300000 0 50000 100000 150000 200000 250000 300000 8 8 Bytes Bytes Uso da rede de interconexão do algoritmo Odd-Even sort Mestrando: Luiz Arthur Feitosa dos Santos 27
  28. 28. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULAÇÃO DE OUTRAS ARQUITETURAS COM O SMS O SMS possibilita a alteração de inúmeros itens de hardware de um processador superescalar, de forma que é possível configurar e simular vários aspectos. Um exemplo de alteração de simulação é trocar o tamanho da memória cache, tal experimento foi feito com o algoritmo do π /usr/sms/sms 3 -cache:dl1_00 dl1:4096:32:1:l -cache:dl1_01 dl1:4096:32:1:l -redir:sim PIParalelo-d4096-10.000-3.sim PIP Linha de comando para executar o programa de cálculo do π com cache de dados de tamanho de 4096 No exemplo do algoritmo do π foi modificado o tamanho da memória cache de dados de todos os processadores, sendo então colocada em cada processador uma cache de dados com o tamanho de 4096 bytes (ver figura 39), sendo que o simulador tem como padrão uma cache de dados com tamanho de 128 bytes, que foi o tamanho utilizado nas simulações com o algoritmo do cálculo do π anteriormente. Mestrando: Luiz Arthur Feitosa dos Santos 28
  29. 29. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULAÇÃO DE OUTRAS ARQUITETURAS COM O SMS Algoritmo cálculo do pi com cache alterada 25 20 10.000 cache 128 Speedup 15 100.000 cache 128 10 10.000 cache 4096 100.000 cache 4096 5 0 1 2 4 8 16 32 Processadores Algoritmo cálculo do pi com cache alterada 1,4 1,2 1 10.000 cache 128 Eficiência 0,8 100.000 cache 128 0,6 10.000 cache 4096 0,4 100.000 cache 4096 0,2 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 29
  30. 30. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULAÇÃO DE OUTRAS ARQUITETURAS COM O SMS Outro algoritmo submetido a uma mudança de arquitetura simulada foi o Trapezoidal rule. Para este algoritmo foi alterado o previsor de desvios, trocando o bimod (padrão do simulador) para o algoritmo 2lev. Tal modificação foi realizada em todos os processadores, mas poderia ser feita individualmente simulando ambientes heterogêneos, para isso seria necessário especificar via linha de comando, por exemplo: sms 2 –bpred_00 bimod –bpred_01 2lev trapezoide. #sms 2 -bpred_00 2lev -bpred_01 2lev -redir:sim trapezoide-2lev-44440.000-2.sim trapezoide Mestrando: Luiz Arthur Feitosa dos Santos 30
  31. 31. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULAÇÃO DE OUTRAS ARQUITETURAS COM O SMS Alteração do sistema de previsão de desvio do algoritmo Trapezoidal rule 30 1.000.000 2lev 25 2.000.000 2lev Speedup 20 4.000.000 2lev 15 1.000.000 bimod 10 2.000.000 bimod 5 4.000.000 bimod 0 1 2 4 8 16 32 Processadores Alteração do sistema de previsão de desvio do algoritmo Trapezoidal rule 1,2 1.000.000 2lev 1 2.000.000 2lev Eficiência 0,8 4.000.000 2lev 0,6 1.000.000 bimod 0,4 2.000.000 bimod 0,2 2.000.000 0 1 2 4 8 16 32 Processadores Mestrando: Luiz Arthur Feitosa dos Santos 31
  32. 32. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares SIMULAÇÃO DE OUTRAS ARQUITETURAS COM O SMS O algoritmo de ordenação Odd-Even proposto tem como característica marcante o intenso uso da rede de interconexão, foram realizadas simulações com duas arquiteturas, uma com uma rede de interconexão com 1Mb/s de largura de banda e outra com 10Mb/s. Odd-Even sort com rede de interconexão de Odd-Even sort com rede de interconexão de 1 Mb/s(n=32768) 10 Mb/s (n=32768) 200 200 Tempo em segundos Tempo em segundos 1 1 150 150 2 2 4 4 100 100 8 8 50 16 16 50 32 32 0 0 Processadores Processadores Odd-Even sort com rede de interconexão de Odd-Even sort com rede de interconexão de 1 Mb/s (n=65536) 10 Mb/s (n=65536) 500 500 Tempo em segundos Tempo em segundos 400 1 1 400 2 2 300 4 300 4 200 8 200 8 16 16 100 100 32 32 0 0 Processadores Processadores Mestrando: Luiz Arthur Feitosa dos Santos 32
  33. 33. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares TRABALHOS FUTUROS Memória Compartilhada: O desenvolvimento de tal modulo tornará o SMS uma ferramenta de simulação completa, simulando ambientes de memória distribuída e compartilhada; Desenvolvimento de Algoritmos Paralelos para memória compartilhada: Com a implementação do modulo de memória compartilhada faz se necessário o desenvolvimento de algoritmos para testes neste ambiente; Interface Gráfica: A criação de tal modulo possibilitará uma melhor interação entre o usuário e a ferramenta, e facilitará o controle das simulações; Redes de Interconexão: Outras redes de interconexão devem ser implementadas com diferentes topologias e protocolos de controle. Mestrando: Luiz Arthur Feitosa dos Santos 33
  34. 34. Desenvolvimento de Algoritmos Paralelos para Simulador de Multiprocessadores Superescalares CONCLUSÃO Foram executados intensos exercícios de simulação. Esses exercícios de simulação mostraram que a ferramenta viabiliza a implementação de algoritmos paralelos e a análise de desempenho de arquiteturas paralelas. A ferramenta permite realizar simulações, nas quais é possível alterar características físicas de baixo nível e alto nível. Os algoritmos implementados permitem ainda que usuários que estejam iniciando suas pesquisas em computação paralela, possam primeiramente analisar os algoritmos já implementados, estudando- os e alterando-os, para posteriormente desenvolver seus próprios algoritmos. Tais algoritmos também permitiram validar a ferramenta, mostrando que ela é uma ótima alternativa para testes de avaliação de desempenho em ambientes paralelos e como ferramenta de auxílio ao ensino e pesquisa em Arquiteturas Paralelas. Mestrando: Luiz Arthur Feitosa dos Santos 34
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×