300 likes | 371 Views
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. ANÁLISE DO PADRÃO DE ACESSOS À MEMÓRIA
E N D
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
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
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • Janela Principal • Todos os acessos do(s) programa(s) selecionado(s) • Cada cor identifica um programa • Sobreposição de cores
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • Janela Principal
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • Janela de Aproximação
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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
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: • 1 2 3 4 5 6 7 8 9 • a1 a2 a3 a4 a5 a6 a7 a8 a9 Página 1 Página 2 Página 3 (exemplo simplificado) CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP
= C A B CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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++)
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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++)
= C A B CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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++)
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP = C A B • 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++)
= = C A B C A B = C A B CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP = C A B = C A B = C A B • Multiplicação de Matrizes • Todas as possíveis permutações: ijk ikj jki jik kij kji
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP Padrão de Acessos da Versão ijk
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP Padrão de Acessos da Versão ikj
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP Padrão de Acessos da Versão jki
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP Padrão de Acessos da Versão ikj-uj-sr
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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.
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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP
CBComp 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • 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 2002 - Análise do Padrão de Acessos à Memória de Programas Paralelos / EPUSP • Contato • Hugo Henrique Cassettari: hugo.cassettari@poli.usp.br • Edson Toshimi Midorikawa:edson.midorikawa@poli.usp.br • 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: 05508-900, São Paulo-SP Questões?