• 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: [email protected], [email protected]

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

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

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