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