ferramentas para otimização modulo ii. agenda compilador microsoft® compilador intel® intel®...

42
Ferramentas para otimização Modulo II

Upload: internet

Post on 21-Apr-2015

124 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ferramentas para otimização

Modulo II

Page 2: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Agenda

Compilador Microsoft® Compilador Intel® Intel® VTune™

Page 3: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ferramentas

Compilador Microsoft®

Page 4: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Compilador Microsoft® Microsoft EVC 3.0 IDE

IDE padrão para PocketPC/Smartphone 2002 SDK Vem com compilador 3.0 Suporte apenas para ARM genérico

Microsoft EVC 4.2 IDE [Para PocketPC/Smartphone 2003] Possui SDK para PocketPC 2003 e Smartphone 2003 Não possui SDK para PocketPC/Smartphone 2002 Suporte interno para extensões DSP e co-processador iMPT Suporta programação para Intel® XScale™ Não suporta rotinas intrinsecas WMMX nem outras extensões WMMX

Compilador ECV 4.2 pode ser instalado na IDE 3.0 Compilador para microprocessador Intel® XScale™ pode ser

instalado no ambiente EVC 3.0

Page 5: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Suporte interno no compilador eVC 4.2Função interna Instrução Assembly XScale™ Descrição

void _SmulAdd_SL_ACC(

int Arg1,

int Arg2 );

MIA (<cond>) acc0, Rm, Rs MIA multiplica o valor no registrador Rs pelo valor no Registrador Rm e soma o resultado ao acumulador de 40 bits

void _SmulAddPack_2SW_ACC(

int Arg1,

int Arg2 );

MIAPH (<cond>) acc0, Rm, Rs A instrução MIAPH faz duas multiplicações de 4 inteiros de 16 bits dois a dois e soma os resultados ao acumulador de 40 bits

void _SmulAddLo_SW_ACC(

int Arg1,

int Arg2 );

MIABB (<cond>) acc0, Rm, Rs Faz uma multiplicação de 16 bits utilizando as metades menos significativas de Rm e Rs e soma ao acumulador de 40 bits

void _SmulAddHi_SW_ACC(

int Arg1,

int Arg2 );

MIATT (<cond>) acc0, Rm, Rs Faz uma multiplicação de 16 bits utilizando as metades mais significativas de Rm e Rs e soma ao acumulador de 40 bits

void _SmulAddLoHi_SW_ACC(

int Arg1,

int Arg2);

MIABT (<cond>) acc0, Rm, Rs Faz uma multiplicação de 16 bits usando a metade menos significativa de Rm e a metade mais significativa de Rs e soma ao acumulador de 40 bits

Page 6: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Suporte interno no compilador EVC 4.2

Função interna Instrução Assembly XScale™ Descrição

void _SmulAddHiLo_SW_ACC(

int Arg1,

int Arg2 );

MIATB (<cond>) acc0, Rm, Rs Faz uma multiplicação de 16bits usando a metade menos significativa de Rm e a metade mais significativa de Rs e soma ao acumulador de 40 bits

void _WriteCoProcessor(

__int64 Arg1,

int Arg2 );

MAR (<cond>) acc0, Rm, Rs Move os 40 bits menos significativos de Arg1 ao acumulador de 40 bits, Arg2 é o número de co-processador, deve ser 0

__int64 _ReadCoProcessor(

int Arg1 );

MRA (<cond>) acc0, Rm, Rs Retorna o valor do co-processador. O Arg1 é o número do co-processador, deve ser 0

void _PreLoad(

unsigned long *addr );

PLD (<cond>) acc0, Rm, Rs Essa instrução é utilizada para carregar previamente dados na memória Cache

Page 7: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Instalando o Compilador 4.0 no IDE EVC 3.0• Instale IDE Microsoft EVC 3.0• Instale IDE Microsoft EVC 4.2

– Note o diretório de instalação, ele é diferente do IDE 3.0

• Inicie o IDE EVC 3.0, escolha Tools -> Options na barra de menus

• Escolha a aba Directories• Na List Box “Show Directories”,

escolha “Include Files”• Dê um duplo clique no espaço em

branco com a caixa vermelha• Clique no botão “...”• Ache o diretório com os arquivos

de include do compilador 4.2, aperte OK

Desenvolvendo para sistemas

PocketPC/Smartphone 2002

Page 8: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Instalando o Compilador 4.0 no IDE EVC 3.0

• Selecione o novo diretório adicionado e com a seta para cima carregue este diretório até o topo da lista– Isto fará com que ele

seja procurado primeiro

Page 9: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Instalando o Compilador 4.0 no IDE EVC 3.0

Vá até o diretório: C:\Arquivos de Programas\Microsoft Embeeded Tools\EVC\wce300 Copie o diretório bin Renomeie o diretório copiado para obin

Localize o diretório bin do compilador 4.2 Selecione todos os arquivos bin para serem copiados Copie-os sobre os arquivos do diretório wce300\bin

Se você precisar voltar à versão antiga Renomeie o diretório bin para nbin Renomeie o diretório obin para bin Remova a referência do diretório 4.2 do Include File

Page 10: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ajustando opções específicas para o microprocessador Intel® XScale™ no compilador 4.0

Vá até Project -> Settings Certifique-se de que o

módulo selecionado é o módulo do projeto

As opções do compilador são: /QRxscale – o processador

é o Intel® XScale™ /QRxscalesched – usa

características do pipeline do Intel® XScale™

/QRdsp – usa extensões DSP da ARM

Page 11: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Qual compilador Microsoft está sendo usado? Vá até Project->

Settings na barra de menu

Clique na aba C/C++ Na List Box “Category”

escolha “Customize” Desmarque “Supress

startup banner” Durante a compilação

você verá o texto do compilador Para VCC++ 3.0, a

versão é 12.01.8569 Para VCC++ 4.0, a

versão é 12.20.9615

Page 12: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ferramentas

Compilador Intel®

Page 13: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Compilador Intel Integrado ao IDE Microsoft eVC Suporte a Intrínsecas Inclui vector analysis (com a chave /QTPxsc3) Geralmente produz melhor compilação de todo o

código (ganho de 8 a 10%) Possui bibliotecas superiores – para programas de

algoritmo intensivo, especialmente ponto flutuante, o ganho pode facilmente ser de 2x

Usar o Compilador Intel e as Intrínsecas Wireless MMX é uma maneira fácil de incorporar

desempenho Wireless MMX em uma aplicação

Page 14: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Opções do Compilador Intel® XScale™• Use /O3

– Digite manualmente na caixa “Additional Options”

– Em alguns casos raros, a otimização é tão agressiva que a execução do programa falha – troque por /O2

• A opção /O2 é encontrada em File->Settings, aba C++

• Selecione o pushbutton /Qipo– Faz otimizações inter-

procedurais– Pode causar algum aumento

no tamanho do código

Page 15: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Usando o compilador Intel®

Depois da instalação, 3 novos itens aparecerão no menu “Tools”

“Compiler Options” habilita a seleção de chaves adicionais de otimização que não fazem parte do conjunto Microsoft

Habilita/Desabilita o compilador Intel®

Fornece documentação sobre as opções e outras características do compilador

Page 16: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ferramentas

Comparações entre os Compiladores

Page 17: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dados de Aplicações sem WMMX

• O dado é o tempo em segundos• A biblioteca de ponto flutuante faz grande diferença

Aplicação Gargalo MS 3.0 MS 4.0 Intel 1.1

Prime Memória 7.9909 7.2283 7.3918

Mortgage Calculator

Aritmética de ponto flutuante

11.5017 11.5008 2.8332

GapiDraw Escrita a memória

1.6394 1.5969 1.507

Digital Persona Uso intensivo da CPU

.8857 .7493 .6799

Speechworks Uso intensivo da CPU

sem dados 3.1244 2.80245

Page 18: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Ferramentas

Intel® VTune™

Ferramenta de Análise de Desempenho

Page 19: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune™ – Ferramenta de Análise Estatística de Desempenho para Intel® XScale™• Recolhe amostras em

intervalos regulares de tempo, determinando qual função consome mais recursos da CPU (baseado no tempo)

• Determinando qual função causa a utilização mais ineficiente do processador (baseado em eventos)

• Usa a PMU encontrada apenas nos processadores Intel ®

Page 20: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune™ – Outros benefícios

Mede desempenho sem instrumentação

Apenas depura símbolos necessários

Mostra no código fonte quais são os “HotSpots”

existentes na função

Dá conselhos de ajuste de desempenho

Page 21: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune™ - Performance Tuning Advice

Page 22: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

O que é amostragem estatística?

Amostragem significa que a informação é obtida sobre

o processo, a thread e o módulo atual com a

localização no módulo quando o evento ocorre

Eventos ocorrem em algum intervalo Baseado em um intervalo de tempo

Baseado no número de eventos de uso ou travamento de

recursos

Supõe-se que a cada intervalo o código em execução é

o mesmo, ou seja, não mudou desde o último evento

Page 23: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune™ - Hot Spot View

Exibe quais funções usam mais a CPU. Note a escala e a diferença entre o timer e o timer event

Page 24: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune – Análise de eventos

O VTune habilita a captura de dados estatísticos de

eventos

Eventos são capturados pela PMU, tipicamente

representam travamento de recursos, por exemplo:

Travamento por dependência de dados

Perda de cache de instruções

Perda de cache de dados

Buffer de dados não disponível

Page 25: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune – Análise de eventos

Depois de um número de eventos pré-definidos, uma

amostra é obtida

Determinada pela calibração, NÃO PULE ESTE PASSO!

Falha na escolha da calibração apropriada resulta em

interferência entre ISR e a aplicação

Até 2 eventos podem ser capturados em conjunto com

amostras baseadas em tempo. No PXA27x (Bulverde)

até 4 eventos.

Page 26: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Eventos PMU para Intel® XScale™

Número

Definição Número

Definição

0x0 Fracasso na cache de instruções 0x7 Instrução executada

0x1Cache de instruções não pode entregar a instrução 0x8

Travamento devido a lotação da D-Cache

0x2Travamento por dependência de dados 0x9

Sequência contígua do evento 0x8

0x3 Fracasso em instrução TLB 0xa Acesso a Data cache

0x4 Fracasso em dado TLB 0xb Fracasso na Data cache

0x5 Desvio de instrução executado 0xc Data cache write-back

0x6 Fracasso em predição de desvio 0xd Software mudou PC

Page 27: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Hotspots baseados em tempo e eventos

Tempos e eventos são apresentados no mesmo gráfico. A escala em cada é completamente diferente

Page 28: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Preparando seu código para uma execução do VTune™

Em Project->Settings Tenha certeza que

projeto (topo) está selecionado

Pressione a guia C++

Na caixa Debug Info, selecione Program Database

Page 29: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Vá para a guia Link Tenha certeza que a

caixa Generate debug info está marcada

Preparando seu código para uma execução do VTune™

Page 30: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune ™ - Como o Data Collector trabalha

O Data Collector é utilizado para ajustar intervalos de amostra na PMU

Executa-se a aplicação, as interrupções são direcionadas pela PMU para colher dados

ISR coleta um histórico de amostras, informações sobre qual módulo, qual processo, qual linha de execução (thread)

Requer uma construção especial de uma imagem ROM para plataformas baseadas em WinCE

Data Collector

Aplicação em teste com

informações de Debug

Informações ISR

Arquivos da Saída:

Arquivo de amostra (.rsf) – Dados de amostra das interrupções da PMU

Arquivo de módulo (.rmf) – Lista dos módulos e localizações

Page 31: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Depois de coletar os dados

Use o ActiveSync para copiar os arquivos.rsf e .rmf para o Host

Use um diretório próximo à raiz com nome simples, exemplo: c:\vtune

Converta usando buildtbxxsc Será necessário os utilitários de conversão no mesmo

diretório da conversão

Associe o arquivo.tb5 com o VTune C:\Arquivos de programas\Intel\VTune\Shared\Bin\

VtuneEnv.exe

Page 32: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Depois de coletar os dados

Os utilitários de conversão:

Tbsutil.dll

Convert5.exe

Builtbxxsc.exe

Copie estes arquivos de C:\Arquivos de programas\

Intel\VTune\RDC for XSC2\Host para o seu diretório

de conversão

Page 33: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Abrindo o arquivo no VTune

Você terá de responder isto o tempo todo

Marque “Do not import, just view the file” e

pressione OK

Page 34: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Associação com arquivo binário

Quando você entrar nos Hotspots, você será perguntado para associar com o arquivo binário

O VTune usa isto para encontrar a localização das funções junto do módulo

Procure o diretório do seu projeto, então entre no diretório ARMV4Dbg ou ARMV4Rel

Selecione o binário do seu projeto

Page 35: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Entendendo os modos de visão do VTune™

O VTune habilita a observação de dados coletados por Process, Thread, Módulo ou HotSpot

No modo Process (processos), o VTune apresentará as amostras de todos o processos do dispositivo

No modo Thread (linhas de execução), ele apresentará todas as threads dependentes do processo escolhido

No modo Module (módulo), ele apresentará todas as amostras de cada módulo que estavam em execução. Um módulo é um código executável carregado em um local. Quando seu programa chama uma DLL, ele continua no mesmo processo e thread, mas em um módulo diferente

No modo HotSpot é apresentado como todas as amostras estão distribuídas por função para o módulo selecionado

Page 36: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dicas do VTune™

Associe o arquivo .tb5 com o VTune Isso torna mais fácil a abertura do arquivo

Você pode ordenar os dados por ascendência ou

descendência

O VTune permite que você organize os dados em uma

planilha, útil para captar dados para análises futuras Você não pode salvar as informações, mas você pode recortar e

colar em uma outra planilha

Page 37: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dicas do VTune™ Considere o uso de “Print Screen” para captar marcas

significativas Cole no PowerPoint

Antes da otimização Depois da otimização

Certifique-se em qual modo de visão você está Processos - Thread - Módulo

Seja cuidadoso sobre o que foi medido, quando o VTune executa a aplicação a medida funciona melhor Executando a aplicação manualmente, ou executando uma

aplicação que requer interação do usuário com o VTune, gera uma variação nos resultados, aparece VTIdle (VTune fica ocioso)

Page 38: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dicas do VTune™ - Seja cuidadoso na forma de interpretar os dados

Gráficos de barras no módulo Process possuem abscissa com unidades em 100, que não são unidades de medida, nem são porcentagem!

As porcentagens das funções são as porcentagem do módulo, não do processo, e não de tudo; desse modo todas as porcentagens de tempo das funções em um módulo somam 100

Os eventos estão em número de interrupções, é preciso multiplicar esse número pelo número de eventos acontecidos por interrupção

Diferentes eventos são desenhados em escalas completamente diferentes no mesmo gráfico

Os clocks estão em ticks ou em milissegundos, isso pode ser confuso

Page 39: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dicas do VTune™ - Ligação incorreta ou quebrada de símbolos

Seja cuidadoso em recompilações

Separe os diretórios de resultados do VTune para diferentes experimentos, também separe os diretórios de projetos

O VTune utiliza informações do Arquivo executável (.exe)

Diretório do projeto

Copie o arquivo .exe do PDA em um diretório separado, aponte o Vtune para aquele arquivo .exe

Seja cuidadoso ao sobrescrever os arquivos .rsf, .rmf, .tb5, apague os arquivos .sdb (arquivos de símbolo), force o VTune a recriar as informações de símbolos

Page 40: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Dicas do VTune™ - Interrupções imprecisas

Sempre tenha em mente como o VTune obtém o dados É possível que uma função gere 99% dos eventos, mas

após a próxima função ser chamada a interrupção ocorre, ela será responsabilizada por todos os eventos. Ao longo de todo o processo de medida isso não é um problema a não ser que haja coincidência específica entre a amostragem e as chamadas das funções

A natureza imprecisa do VTune faz o ponto exato no fonte ser incerto Considerando as incertezas nas informações obtidas Contínua útil para aproximações

Page 41: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

VTune™ - Imagens com Suporte

Requer PMU encontrada em XScale™ Não trabalha em SA1110

Requer modificação no Windows CE para a BSP A imagem ROM deve ser construída para suportar PMU

Para Windows CE Placa Lubbock, intrínseco Recarga especial no PocketPC somente no IPAQ 3950 Viewsonic PC V35 (PPC 2002) Todos PPC 2003 e SmartPhones 2003 Axim X3 PPC 2003 Mitac 8390 SmartPhome 2003

Page 42: Ferramentas para otimização Modulo II. Agenda  Compilador Microsoft®  Compilador Intel®  Intel® VTune™

Módulo II

Laboratório

Objetivos:Objetivos:

- Instalar o compilador Microsoft 4.2 na IDE do eVC++ 3.0

- Usar o Compilador Intel C++ for Intel XScale Processor

- Obter métricas iniciais de performance