• Nenhum resultado encontrado

CAP-387(2016) Tópicos Especiais em

N/A
N/A
Protected

Academic year: 2021

Share "CAP-387(2016) Tópicos Especiais em"

Copied!
18
0
0

Texto

(1)

CAP-387(2016) – Tópicos Especiais em Computação Aplicada:

Construção de Aplicações Massivamente Paralelas

Celso L. Mendes, Stephan Stephany

LAC / INPE

Emails: celso.mendes@inpe.br, stephan.stephany@inpe.br

Aula 11: Caches e Blocagem

(2)

Caches – Relembrando…

• Organização das Caches

• Vários níveis na hierarquia de memória (L1, L2, …)

Níveis mais próximos à CPU têm menor capacidade e maior velocidade

Transferências de dados entre níveis são feitas por blocos (também chamados de cache-lines - exemplo: 64 Bytes)

• Ao carregar uma linha na cache, pode ser necessário remover uma linha previamente carregada

Política comum de remoção: LRU (Least-Recently Used)

Operação de store pela CPU: escrita na memória (via cache)

Write-through cache: dado é escrito na cache e na memória; mais lento

Write-back cache: dado é escrito apenas na cache; mais rápido, porém memória pode ter que ser atualizada posteriormente

(3)

Caches – Santos Dumont

• CPU: Intel Ivy Bridge E5 2695 v2

12 núcleos por chip, rodando a 2.4 GHz

L1 = 32 KB (individual por núcleo)

L2 = 256 KB (individual por núcleo)

L3 = 30 MB (compartilhada por todos os núcleos)

Documentação:

• site da Intel

• página na Wikipedia (procurar “

Ivy Bridge-EP”)

(4)

Caches – Efeito em Programas

• Exemplo Ilustrativo: Transposição de Matrizes

DO J=1,N

DO I=1,N

B(I,J) = A(J,I) ENDDO

ENDDO

Assuma que A e B já foram inicializados e estão em memória

Número total de acessos a elementos de A e B: 2×N2

Loop não tem localidade temporal:

Cada element de A ou de B é acessado uma única vez

Dúvida: podem ocorrer efeitos de cache, em termos de desempenho?

(5)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

DO J=1,N

DO I=1,N

B(I,J) = A(J,I) ENDDO

ENDDO

Taxa de acesso à memória: 2×N2/T onde T é o tempo total dos loops

Execuções em um nó do Santos Dumont:

N 250 500 1.000 2.000 4.000

Taxa (MB/s) 1.655,6 1.231,5 169,4 141,3 107,1

???

(6)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

DO J=1,N

DO I=1,N

B(I,J) = A(J,I) ENDDO

ENDDO

B

A

=

Acessos a B:

endereços contíguos

(Fortran)

Acessos a A:

endereços com saltos de

N posições

(7)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

• Acessos em termos de linhas de cache

B

A

= linhas

de cache linha

de

cache

(8)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

• Supondo que cada linha de cache tenha K palavras de 64 bits, isto é, K elementos de B:

B A cada elemento B(I,J) acessado, ao ser trazido para a cache, outros K-1 elementos vizinhos também

são trazidos!

→ Alta localidade espacial!

(9)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

Por outro lado, com A os acessos são diferentes:

A Ordem de acesso a A no loop:

A(J,I), A(J,I+1), A(J,I+2), …

Porém, os elementos numa linha são A(J,I), A(J+1,I), A(J+2,I), …

Logo, acessos a A(J,I) induzem a

carga de vizinhos da mesma coluna!

(10)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

• Em outras palavras:

A Para cada elemento A(J,I) acessado,

ao ser trazido para a cache, outros K-1 elementos vizinhos (da mesma coluna) também serão trazidos!

→ Nenhum outro elemento da mesma linha de A (azul) é trazido

*

(11)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

• Única possibilidade de re-uso de dados de A em cache:

A Ao acessar A(J,I), A(J+1,I) será

trazido para cache. Ele só será

utlizado quando a próxima linha de A for varrida. Para que, até lá,

A(J+1,I) ainda esteja em cache, a cache deve ser maior que ao

*#

*

#

(12)

Caches – Efeito em Programas

• Exemplo: Transposição de Matrizes (cont.)

• Condição geral para re-uso de todos os elementos de A:

A

→Tamanho da linha de cache (em bytes) vezes N deve caber na cache!

Logo, o desempenho (isto é, a taxa

efetiva de acesso a elementos de A)

depend do tamanho do problema

(N) e das características da cache!

(13)

Caches – Otimizações

• Exemplo: Transposição de Matrizes (cont.)

• Idéia principal para otimização do uso de cache:

Aumentar a probabilidade de re-uso dos valores de A

Novo esquema de execução:

• Mudar o percorrimentodas das matrizes

• Explorar o fato do loop original ter N2 iterações independentes

B

A

= =

A

B

(14)

Caches – Otimizações

• Exemplo: Transposição de Matrizes (cont.)

• Novo esquema de execução: Blocagem de A e B

Dividir A e B em “azulejos” (tiles), operando em um de cada vez

=

A 1 B

2

1 2

→Tamanho dos azulejos:

Deve ser o maior possível (p/ minimizar o overhead dos novos loops)

Deve ser pequeno o bastante para caber na cache do sistema

(15)

Caches – Blocagem

• Códigos: Original e Transformado

DO J=1,N

DO I=1,N

B(I,J) = A(J,I) ENDDO

ENDDO

DO JJ=1,N,strideJ DO II=1,N,strideI

DO J=JJ,min(N,JJ+strideJ-1) DO I=II,min(N,II+strideI-1)

B(I,J) = A(J,I) ENDDO

ENDDO ENDDO

ENDDO

B

=

=

A B

A

(16)

Caches – Blocagem

• Código Transformado

DO JJ=1,N,strideJ DO II=1,N,strideI

DO J=JJ,min(N,JJ+strideJ-1) DO I=II,min(N,II+strideI-1)

B(I,J) = A(J,I) ENDDO

ENDDO ENDDO

ENDDO

→ Quais os valores de strideJ e strideI ideais?

=

A B

strideJ

strideI

strideI

strideJ

(17)

Caches – Blocagem

• Algumas reflexões sobre o exemplo:

Normalmente, strideJ = strideI = stride : ladrilhos quadrados

Escolha ideal do stride

• Busca exaustiva: execuções com diversos valores distintos, busca do tempo mínimo

• Geração de código e execuções automáticas, auto-tuning

Como fica isso num sistema com múltiplos níveis de cache?

Admitindo que strideJ ≠ strideI, qual deve ser maior?

(18)

Caches – Blocagem

• Muitas outras operações podem ter efeitos similares

Exemplo: multiplicação de matrizes

• Localidades temporal e especial, para as duas matrizes:

• Linha de A é acessada múltiplas vezes, para gerar linha de C

• Coluna de B é acessada múltiplas vezes, para gerar coluna de C

• Acessos implicam em carga de linhas de cache, como na transposição

A

B =

× C

Referências

Documentos relacionados

Esta situação pode criar um isolamento reprodutor por alopatria (populações isoladas fisicamente) ou por simpatria (populações em contacto físico). No caso da

3) As seções Produtos Minerais, Celulose e Papel e suas Obras e Produtos das Indústrias Químicas ou da Indústrias Conexas responderam por 51,7% das exportações baianas nos

Comércio Exterior: Bahia e Brasil (Sinopse) é uma publicação mensal da Federação das In- dústrias do Estado da Bahia (FIEB), produzida pela Superintendência de Desenvolvimento

3) As seções Produtos Minerais, Celulose e Papel e suas Obras, Produtos das Indústrias Químicas ou das Indústrias Conexas, Produtos do Reino Vegetal e Metais Comuns e

a princípio a Reforma Trabalhista, foi uma das primeiras que a gente enfrentou, mas efetivamente esse Fórum ele se constituía de vários sindicatos, nós chegamos

Tabela 9: Resumo da análise de variância da taxa de degradação das motilidades subjetiva (Mot) e computadorizada (MT) e integridade total de membranas espermáticas (IMB), no

Teor de sólidos solúveis em tubérculos de batata, cultivar Asterix, sob a aplicação de subletais etílico chlorimuron em dois momentos diferentes, a 37 e 60 dias após o

5 5 GARNELO HERMIDA Pilar CEHE-PO 6 6 GRANDE IZQUIERDO Leyre Mar CEHE-PO 7 7 MEDINA ALVAREZ Iris CEB-M 8 8 GONZALEZ GIL Patricia CEL-M 9 9 ARGIMON LLOBERAS Joana EHB-B 10 10 OTAEGUI