Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouFilipe Rocha Alterado mais de 10 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.