1 felipe l. severinoanálise de algoritmos experiments with strassens algorithm: from sequential to...
TRANSCRIPT
1Felipe L. Severino Análise de algoritmos
Experiments with Strassen’s Algorithm: from sequential to parallel
Felipe L. SeverinoAnálise e Desenvolvimento de algoritmos
paralela e
2
Strassen
Felipe L. Severino Análise de algoritmos
Sumário Introdução: Multiplicação de Matrizes; Strassen; Winograd; Proposta do artigo; Trabalho realizado; Paralelização; Análises; Resultados; Considerações finais.
3
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Multiplicação de Matrizes
• Pode ser escrito de forma recursiva:
• Complexidade permanece Θ(n³);– T(n) = 8T(n/2)+Θ(n²);
hg
fexB
dc
baA
ut
srC
dhcfu
dgcet
bhafs
bgaer
6
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Algoritmo de Strassen
22211022125
1211911214
1121812113
2212722212
2211622111
BBTAAT
BBTAAT
BBTAAT
BBTAAT
BBTAAT
624752
133411
QQUQQU
QQUQQU
8224
10577113
9461122
2235611
xTAQ
xTTQxTAQ
xTTQxBTQ
xBTQxTTQ
43224221
53122111
UUCQQC
QQCUUC
Phase 1 Phase 2
Phase 3 Phase 4
8
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Algoritmo de Winograd
22142124
1222321113
12221112
1112122211
TBTSAS
BBTAAS
TBTASS
BBTAAS
224
4227113
224621122
33511111
xTSQ
xTAQxTSQ
xBSQxBAQ
xTSQxBAQ
522421
712111
UCUC
UCUC
734
667523
326412
335211
QUU
QUUQUU
QUUQQU
xQUUQQU
11
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Paralelização de tarefas
Strassen
14
Strassen
Felipe L. Severino Análise de algoritmos
Paralelização de tarefas
15
Strassen
Felipe L. Severino Análise de algoritmos
Paralelização de tarefas
Winograd
16
Strassen
Felipe L. Severino Análise de algoritmos
Paralelização de Tarefas
17
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Análises
Uso de memória;
Troca de mensagens Quantidade e tamanho das mensagens em cada uma
das implementações;
20
Strassen
Felipe L. Severino Análise de algoritmos
Uso de memória
• Strassen sequencial:
• Winograd sequencial:
n
nnnTnT
3
)4/8()2/(7)(
se n > 12
se n < 12
n
nnnTnT
3
)2/7()2/(7)( se n > 12
se n < 12
21
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
Artigo
27
Strassen
Felipe L. Severino Análise de algoritmos
Artigo
28
Strassen
Felipe L. Severino Análise de algoritmos
Matriz 256
Matriz Ordem 256
0,536161
0,7256110,748136
0,909410
1,124846
0,7911650,816624
0,000000
0,200000
0,400000
0,600000
0,800000
1,000000
1,200000
Tem
po
(s)
Classical
Seq_Strassen
Seq_Winograd
Par_strassen_tasks
Par_w inograd_tasks
Par_strassen
Par_w inograd
29
Strassen
Felipe L. Severino Análise de algoritmos
Matriz 512Matriz Ordem 512
2,4267652,502109 2,472554
1,684460
1,844600
1,630032
1,443875
0,000000
0,500000
1,000000
1,500000
2,000000
2,500000
3,000000
Tem
po
(s)
Classical
Seq_Strassen
Seq_Winograd
Par_strassen_tasks
Par_w inograd_tasks
Par_strassen
Par_w inograd
30
Strassen
Felipe L. Severino Análise de algoritmos
Matriz 1024Matriz Ordem 1024
19,278325
14,66125613,822279
5,275010 5,048708 5,147563 4,833728
0,000000
5,000000
10,000000
15,000000
20,000000
25,000000
Tem
po
(s)
Classical
Seq_Strassen
Seq_Winograd
Par_strassen_tasks
Par_w inograd_tasks
Par_strassen
Par_w inograd
31
Strassen
Felipe L. Severino Análise de algoritmos
Matriz 2048Matriz Ordem 2048
187,539840
99,60430494,396455
28,619605 27,126611 27,878170 26,541546
0,000000
20,000000
40,000000
60,000000
80,000000
100,000000
120,000000
140,000000
160,000000
180,000000
200,000000
Tem
po
(s)
Classical
Seq_Strassen
Seq_Winograd
Par_strassen_tasks
Par_w inograd_tasks
Par_strassen
Par_w inograd
32
Strassen
Felipe L. Severino Análise de algoritmos
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
Strassen
Felipe L. Severino Análise de algoritmos
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;
34Felipe L. Severino Análise de algoritmos
Experiments with Strassen’s Algorithm: from sequential to parallel
Felipe L. SeverinoAnálise e Desenvolvimento de algoritmos
paralela e