Programação
-
-
Códigos da 4a. aula (29-04-2020)
Para executar a ferramenta gprof deve-se:
1) Compilar e linkar o código com a diretiva -pg
gcc -o exemplo exemplo.c -pg
2) Executar normalmente o executável (será gerado o arquivo gmon.out)
./exemplo
3) Executar o gprof para mostrar o resultado do perfilamento em um arquivo texto:
gprof exemplo gmon.out > saida_exemplo.txt
Para poder visualizar o grafo das chamadas as funções (call graph) de maneira gráfica deve-se utilizar:
1) Programa gprof2dot.py, que converte a saída gerada pelo gprof em um arquivo .dot (https://pypi.org/project/gprof2dot/)
python gprof2dot.py saida_exemplo.txt > saida_exemplo.dot
2) Biblioteca grahpviz para gerar uma imagem a partir do .dot
dot -Tpng -o saida_grafo.png saida_exemplo.dot
-
Aula 5 - Descrição da aula e arquivos (06/05/2020)
Análise de um programa com e sem ordenação do vetor
O código kernel11-branch_prediction.c é de autoria do Prof. Edson Borin (UNICAMP) e faz um processamento tendo como base um vetor que pode ou não estar ordenado.
O objetivo da aula foi analisar o impacto da ordenação na execução do código utilizando para isso algumas diretivas de compilação.
O arquivo comandos tem a sequência de compilação e execução de várias versões do código:
1. Sem ordenação:- Sem diretiva nenhuma de compilação
- Com a diretiva -O3
- Com a diretiva -O3 mas sem a opção -if-conversion
- Com a diretiva -O3 mas sem a opção -tree-loop-vectorize
- Com a diretiva -O3 mas sem as duas opções acima (-if-conversion e -tree-loop-vectorize)
- Sem diretiva nenhuma de compilação
- Com a diretiva -O3
- Com a diretiva -O3 mas sem a opção -if-conversion
- Com a diretiva -O3 mas sem a opção -tree-loop-vectorize
- Com a diretiva -O3 mas sem as duas opções acima (-if-conversion e -tree-loop-vectorize)
As métricas analisadas são: cache-references,cache-misses e branches,branch-missesTarefa da aula: executar o arquivo comandos, que irá gerar vários outros arquivos de saída para cada uma das situações descritas acima e para cada conjunto de métricas (cache e desvios). Se a execução for feita em uma máquina que não tem outros processos do usuário sendo executados ao mesmo tempo, pode executar só uma vez para obter os resultados (só dessa vez!) Após a execução, plotar em um gráfico os resultados das 10 execuções de cada conjunto de métricas. Analisar os resultados para concluir qual o impacto de cada alteração feita.