1 / 34

Experiments with Strassen’s Algorithm: from sequential to parallel

Experiments with Strassen’s Algorithm: from sequential to parallel. paralela e. Felipe L. Severino Análise e Desenvolvimento de algoritmos. Sumário. Introdução: Multiplicação de Matrizes; Strassen; Winograd; Proposta do artigo; Trabalho realizado; Paralelização; Análises; Resultados;

toya
Download Presentation

Experiments with Strassen’s Algorithm: from sequential to parallel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Experiments with Strassen’s Algorithm: from sequential to parallel paralela e Felipe L. Severino Análise e Desenvolvimento de algoritmos

  2. Sumário • Introdução: Multiplicação de Matrizes; • Strassen; • Winograd; • Proposta do artigo; • Trabalho realizado; • Paralelização; • Análises; • Resultados; • Considerações finais.

  3. Artigo • Experiments With Strassen’s Algorithm: From Sequential to Parallel • Autores: F. Song, J. Dongarra and S. Moore. • Proceedings: Parallel and Distributed Computing and Systems (PDSC 2006).

  4. Multiplicação de Matrizes • Operação básica em computação científica; • Algoritmo trivial de multiplicação de matrizes consiste em três laços: • Esse algoritmo possui complexidade Θ(n³);

  5. Multiplicação de Matrizes • Pode ser escrito de forma recursiva: • Complexidade permanece Θ(n³); • T(n) = 8T(n/2)+Θ(n²);

  6. Algoritmo de Strassen • Primeiro algoritmo para multiplicação de matrizes a ter complexidade < Θ(n³); • Efetua, recursivamente, 7 multiplicações e Θ(n²) somas e adições; • Algoritmo original: 7 multiplicações e 18 adições;

  7. Algoritmo de Strassen Phase 1 Phase 2 Phase 3 Phase 4

  8. Algoritmo de Strassen • Complexidade: T(n)=7T(n/2)+ Θ(n²); =Θ(nlg 7); =Θ(n2,81); • Melhor que algoritmo clássico para matrizes grandes (estudo indica o ponto de corte 12);

  9. Algoritmo de Winograd • Também chamado de Strassen-Winograd; • Variação do Strassen tradicional; • Utiliza 7 multiplicações e 15 adições/subtrações; • Não altera significativamente a complexidade (continua sendo Θ(nlg 7));

  10. Algoritmo de Winograd

  11. Proposta do Artigo • Comparar implementação Winograd com biblioteca matemática ATLAS DGEMM e verificação do ponto de corte; • Paralelização (strassen tradicional): • NetSolve (Workflow); • MPI: tarefas; • MPI: dados (na verdade, usando ScaLAPACK). • Análise do uso de memória dos algoritmos paralelos acima;

  12. Trabalho realizado • Implementação sequencial de Strassen e Winograd; • Paralelização de tarefas utilizando Strassen e Winograd; • Outro modelo de Paralelização do Strassen e Winograd; • Análises;

  13. Paralelização de tarefas • Strassen

  14. Paralelização de tarefas

  15. Paralelização de tarefas • Winograd

  16. Paralelização de Tarefas

  17. Paralelização • Outro modelo de paralelização é baseado no modelo mestre-escravo; • O processo pai irá enviar duas matrizes para cada filho, que irá processar cada uma dessas matrizes e enviar o resultado de volta ao pai;

  18. Paralelização • Caso seja executado com 7 processos (como foi o caso) é idêntico ao divisão e conquista; • Chamadas recursivas: caso existam processos suficientes, cada filho será pai de novos processos.

  19. Análises • Uso de memória; • Troca de mensagens • Quantidade e tamanho das mensagens em cada uma das implementações;

  20. Uso de memória • Strassen sequencial: • Winograd sequencial: se n > 12 se n < 12 se n > 12 se n < 12

  21. Uso de memória • Strassen paralelismo de tarefas: • Primeiro nível (processo com maior carga): • 2n+3(n/4) • Demais níveis = strassen sequencial; • Winograd paralelismo de tarefas: • Primeiro nível (processo com maior carga): • 3n+3(n/4) • Demais níveis = winograd sequencial;

  22. Uso de memória • Outro modelo de paralelização: • Divisão na carga, varia de acordo com o número de processos; • 7 processos: • Primeiro nível: • Proc 0: 1T(n/2)+(8n+n/4) (Strassen); • Proc 0: 1T(n/2)+(7n+n/2) (Winograd); • Outros processos 2x(n/4); • Demais níveis = strassen sequencial;

  23. Troca de mensagens • Strassen paralelismo de tarefas: • Apenas um nível de troca de mensagens: • 2 mensagens de tamanho n (broadcast); • 11 mensagens de tamanho n/4 (ponto a ponto); • Winograd paralelismo de tarefas: • Apenas um nível de troca de mensagens: • 2 mensagens de tamanho n (broadcast) • 14 mensagens de tamanho n/4 (ponto a ponto);

  24. Troca de mensagens • Outro modelo: • Varia dependendo da quantidade de processos; • Com 7 processos haverão 6 filhos que deverão receber duas matrizes (cada um) do processo 0 e devolver uma matriz de resposta; • Sendo apenas um nível de troca de mensagens: • 18 mensagens de tamanho n/4;

  25. Resultados • Ambiente de teste • Artigo: • Cluster Linux com 32 nodos • Dual PentiumIV Xeon 2.4 GHz • 2 GB RAM; • UFRGS: • 1 Xeon 2.0 GHz (dual core multi-threaded); • 3 GB RAM; • 50 execuções de cada programa, média aritmética simples; • Programas MPI (MPICH2) executados com 7 processos;

  26. Artigo

  27. Artigo

  28. Matriz 256

  29. Matriz 512

  30. Matriz 1024

  31. Matriz 2048

  32. Considerações finais • Não foi apresentado comparativo do paralelo com o sequencial no artigo; • Foi possível obter desempenho teórico similar (uso de memória); • Diferenças de tempo de execução podem ser explicados pela diferença do hardware utilizado além de: • Matrizes pequenas: custo da troca de mensagens; • Matrizes grandes: muita carga sobre o processador;

  33. Considerações finais • Facilidade na descrição da paralelização (exceto de dados); • Dificuldades nas bibliotecas (instalação, compatibilidade com sistema, entre outros) impossibilitaram comparativo com ScaLAPACK e ATLAS;

  34. Experiments with Strassen’s Algorithm: from sequential to parallel paralela e Felipe L. Severino Análise e Desenvolvimento de algoritmos

More Related