PL02_guiao.pdf

1.a)

A matriz A possui localidade espacial e se visse-mos o código assembly haveria saltos de 8 em 8 bits, ao contrário da matriz B. A matriz C, também não possui localidade espacial, pois ela será percorrida coluna a coluna e não linha a linha.

1.b)

Primeiro começa a fazer load do primeiro elemento da matriz A e puxa 64 bits da memória. Ou seja, primeiro tem um miss e depois tem 7 hits. Logo, os acessos à memória são:

1.c)

Estimativa para a versão com a transposta:

Os misses na matriz A não mudaram e na B será a dividir por 8, ou seja:

Ou seja, sempre o primeiro elemento de cada linha haverá um miss e depois haverá 7 hits. Ou seja, $3210^6$ ($15010^6$ ) misses no total

1.d)

Versão normal

  1. gcc -O2 -Dsize=512 -std=gnu99 mmult.c
  2. srun --partition=cpar perf stat -e L1-dcache-load-misses -M cpi ./a.out

Untitled

Versão com a transposta