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

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

ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA DE PROGRAMAS PARALELOS

Apresentações semelhantes


Apresentação em tema: "ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA DE PROGRAMAS PARALELOS"— Transcrição da apresentação:

1

2 ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA DE PROGRAMAS PARALELOS
Hugo Henrique Cassettari Edson Toshimi Midorikawa EPUSP - Escola Politécnica da Universidade de São Paulo PCS - Departamento de Engenharia de Computação e Sistemas Digitais

3 ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA DE PROGRAMAS PARALELOS
Hugo Henrique Cassettari Edson Toshimi Midorikawa EPUSP - Escola Politécnica da Universidade de São Paulo PCS - Departamento de Engenharia de Computação e Sistemas Digitais

4 Escopo Avaliação de Desempenho Ferramenta Desenvolvida
Programação Paralela Padrão de Acessos à Memória Localidade de Referências Visualização e Análise Simulação baseada em Arquivos de Trace Computação de Alto Desempenho Multiprocessamento CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

5 Motivação Memória possui uma limitação teórica - “memory wall”
Alternativa: explorar localidades de referências Técnicas de programação podem levar a uma maior localidade de acessos Visualizar padrões de acesso de programas à memória pode ser um recurso importante CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

6 Contexto Simulação e avaliação de sistemas de memória
Técnicas de otimização Algoritmos de substituição de páginas Influência da propriedade de localidade de acessos Dificuldade em se detectar facilmente padrões de acesso à memória CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

7 Padrões de Acesso à Memória
Refere-se a como os programas endereçam as posições de memória Espaço virtual deve favorecer o funcionamento do sistema Exploração de uma “região” de endereços favorece o desempenho CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

8 Ferramenta de Visualização e Análise
Desenvolvida em Java Módulo de pré-processamento desenvolvido em C Disponível nas plataformas Linux e Microsoft Windows Permite uma abordagem visual do comportamento dos programas em relação aos seus acessos à memória Gráfico informa os endereços de memória acessados no decorrer do tempo de execução CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

9 Janela Principal Todos os acessos do(s) programa(s) selecionado(s)
Cada cor identifica um programa Sobreposição de cores CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

10 Janela Principal CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

11 Janela de Aproximação Janela de aproximação base
Seleção de trecho Aproximação parcial Janela de aproximação sucessiva Aproximação infinita Cópia comparativa temporária na janela de aproximação base CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

12 Janela de Aproximação CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

13 Estudo de Caso: Multiplicação de Matrizes
Três formas básicas de acesso aos elementos: Acesso por linhas Acesso por colunas Acesso por diagonais CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

14 Armazenamento de Matrizes em Memória
Matriz quadrada de ordem 3: a1 a2 a3 A = a4 a5 a6 a7 a8 a9 Armazenamento na memória, em C ou Pascal: a1 a2 a3 a4 a5 a6 a7 a8 a9 Página 1 Página 2 Página (exemplo simplificado) CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

15 Multiplicação de Matrizes
Algoritmo tradicional (ijk): C = A x B, sendo que: MATRIZ A: Acesso por linhas MATRIZ B: Acesso por colunas MATRIZ C: Acesso por linhas C[i][j]=C[i][j] + A[i][k]*B[k][j]; for (i=0; i<N; i++) for (j=0; j<N; j++) for (k=0; k<N; k++) = B A C CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

16 Multiplicação de Matrizes
C = A x B, sendo que: MATRIZ A: MATRIZ B: MATRIZ C: C[i][j]=C[i][j] + A[i][k]*B[k][j]; for (i=0; i<N; i++) for (k=0; k<N; k++) for (j=0; j<N; j++) CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

17 Multiplicação de Matrizes
Versão ikj: C = A x B, sendo que: MATRIZ A: Acesso por linhas MATRIZ B: Acesso por linhas MATRIZ C: Acesso por linhas C[i][j]=C[i][j] + A[i][k]*B[k][j]; for (i=0; i<N; i++) for (k=0; k<N; k++) for (j=0; j<N; j++) = B A C CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

18 Multiplicação de Matrizes
C = A x B, sendo que: MATRIZ A: MATRIZ B: MATRIZ C: C[i][j]=C[i][j] + A[i][k]*B[k][j]; for (j=0; j<N; j++) for (k=0; k<N; k++) for (i=0; i<N; i++) CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

19 Multiplicação de Matrizes
Versão jki: C = A x B, sendo que: MATRIZ A: Acesso por colunas MATRIZ B: Acesso por colunas MATRIZ C: Acesso por colunas C[i][j]=C[i][j] + A[i][k]*B[k][j]; for (j=0; j<N; j++) for (k=0; k<N; k++) for (i=0; i<N; i++) = B A C CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

20 ijk ikj jki jik kij kji Multiplicação de Matrizes
Todas as possíveis permutações: = B A C = B A C ijk ikj = B A C = B A C jki jik = B A C = B A C kij kji CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

21 Padrão de Acessos da Versão ijk
CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

22 Padrão de Acessos da Versão ikj
CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

23 Padrão de Acessos da Versão jki
CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

24 Versão ikj-uj-sr Otimizações no código de forma a explorar ainda mais a hierarquia de memória Transformação unroll-and-jam Reúne vários acessos a uma mesma posição de matriz no loop mais interno Transformação scalar replacement Posições referenciadas são atribuídas a variáveis escalares a cada iteração CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

25 Padrão de Acessos da Versão ikj-uj-sr
CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

26 Padrão de Acessos da Versão ikj-uj-sr
Padrão de acessos praticamente idêntico ao da versão ikj Menor tempo de execução Exploração de registradores do processador CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

27 Tempos de Execução (*) Matrizes de ordem 1500, executadas em uma máquina SMP com 4 processadores Pentium II Xeon de 400 MHz e 256 MB de memória principal, sistema operacional Linux. CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

28 Versão Atual da Ferramenta
Diferenciação entre leitura/gravação e processadores Versão ijk com 2 processadores Proc. 1 - Leitura Proc. 1 - Gravação Proc. 2 - Leitura Proc. 2 - Gravação CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

29 Trabalhos Futuros Utilização de programas de estudo maiores
Análise aprofundada do sistema de memória virtual Suporte a arquivos de trace compactados Suporte a programas MPI (processamento distribuído) CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP

30 Questões? Contato ESCOLA POLITÉCNICA DA USP
Hugo Henrique Cassettari: Edson Toshimi Midorikawa: ESCOLA POLITÉCNICA DA USP Departamento de Engenharia de Computação e Sistemas Digitais Laboratório de Arquitetura e Software Básico Av. Prof. Luciano Gualberto, travessa 3, 158, Cidade Universitária CEP: , São Paulo-SP Questões? CBComp Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP


Carregar ppt "ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA DE PROGRAMAS PARALELOS"

Apresentações semelhantes


Anúncios Google