1 felipe l. severinoanálise de algoritmos experiments with strassens algorithm: from sequential to...

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

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 2: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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.

Page 3: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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).

Page 4: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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³);

Page 5: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 6: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 7: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 8: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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);

Page 9: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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));

Page 10: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 11: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 12: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 13: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

13

Strassen

Felipe L. Severino Análise de algoritmos

Paralelização de tarefas

Strassen

Page 14: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

14

Strassen

Felipe L. Severino Análise de algoritmos

Paralelização de tarefas

Page 15: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

15

Strassen

Felipe L. Severino Análise de algoritmos

Paralelização de tarefas

Winograd

Page 16: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

16

Strassen

Felipe L. Severino Análise de algoritmos

Paralelização de Tarefas

Page 17: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 18: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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.

Page 19: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 20: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 21: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 22: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 23: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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);

Page 24: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 25: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 26: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

26

Strassen

Felipe L. Severino Análise de algoritmos

Artigo

Page 27: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

27

Strassen

Felipe L. Severino Análise de algoritmos

Artigo

Page 28: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 29: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 30: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 31: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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

Page 32: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 33: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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;

Page 34: 1 Felipe L. SeverinoAnálise de algoritmos Experiments with Strassens Algorithm: from sequential to parallel Felipe L. Severino Análise e Desenvolvimento

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