A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Experiments with Strassen’s Algorithm: from sequential to parallel

Apresentações semelhantes


Apresentação em tema: "Experiments with Strassen’s Algorithm: from sequential to parallel"— Transcrição da apresentação:

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 Experiments With Strassen’s Algorithm: From Sequential to Parallel
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 Paralelização (strassen tradicional):
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

21 Strassen paralelismo de tarefas:
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: 3n+3(n/4) Demais níveis = winograd sequencial;

22 Outro modelo de paralelização:
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 Strassen paralelismo de tarefas:
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: 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 Foi possível obter desempenho teórico similar (uso de memória);
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


Carregar ppt "Experiments with Strassen’s Algorithm: from sequential to parallel"

Apresentações semelhantes


Anúncios Google