Modulo II Ferramentas para otimizao Agenda Compilador Microsoft

  • Slides: 42
Download presentation
Modulo II Ferramentas para otimização

Modulo II Ferramentas para otimização

Agenda Compilador Microsoft® Compilador Intel® VTune™

Agenda Compilador Microsoft® Compilador Intel® VTune™

Ferramentas Compilador Microsoft®

Ferramentas Compilador Microsoft®

Compilador Microsoft® Microsoft EVC 3. 0 IDE padrão para Pocket. PC/Smartphone 2002 SDK Vem

Compilador Microsoft® Microsoft EVC 3. 0 IDE padrão para Pocket. PC/Smartphone 2002 SDK Vem compilador 3. 0 Suporte apenas para ARM genérico Microsoft EVC 4. 2 IDE [Para Pocket. PC/Smartphone 2003] Possui SDK para Pocket. PC 2003 e Smartphone 2003 Não possui SDK para Pocket. PC/Smartphone 2002 Suporte interno para extensões DSP e co-processador i. MPT 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

Suporte interno no compilador e. VC 4. 2 Função interna Instrução Assembly XScale™ Descrição

Suporte interno no compilador e. VC 4. 2 Função interna Instrução Assembly XScale™ Descrição void _Smul. Add_SL_ACC( int Arg 1, int Arg 2 ); MIA (<cond>) acc 0, Rm, Rs MIA multiplica o valor no registrador Rs pelo valor no Registrador Rm e soma o resultado ao acumulador de 40 bits void _Smul. Add. Pack_2 SW_ACC( int Arg 1, int Arg 2 ); MIAPH (<cond>) acc 0, 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 _Smul. Add. Lo_SW_ACC( int Arg 1, int Arg 2 ); MIABB (<cond>) acc 0, 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 _Smul. Add. Hi_SW_ACC( int Arg 1, int Arg 2 ); MIATT (<cond>) acc 0, 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 _Smul. Add. Lo. Hi_SW_ACC( int Arg 1, int Arg 2); MIABT (<cond>) acc 0, 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

Suporte interno no compilador EVC 4. 2 Função interna Instrução Assembly XScale™ Descrição void

Suporte interno no compilador EVC 4. 2 Função interna Instrução Assembly XScale™ Descrição void _Smul. Add. Hi. Lo_SW_ACC( int Arg 1, int Arg 2 ); MIATB (<cond>) acc 0, 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 void _Write. Co. Processor( __int 64 Arg 1, int Arg 2 ); MAR (<cond>) acc 0, Rm, Rs Move os 40 bits menos significativos de Arg 1 ao acumulador de 40 bits, Arg 2 é o número de co-processador, deve ser 0 __int 64 _Read. Co. Processor( int Arg 1 ); MRA (<cond>) acc 0, Rm, Rs Retorna o valor do co-processador. O Arg 1 é o número do co-processador, deve ser 0 void _Pre. Load( unsigned long *addr ); PLD (<cond>) acc 0, Rm, Rs Essa instrução é utilizada para carregar previamente dados na memória Cache

Instalando o Compilador 4. 0 no IDE EVC 3. 0 • • Instale IDE

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 Pocket. PC/Smartphone 2002

Instalando o Compilador 4. 0 no IDE EVC 3. 0 • Selecione o novo

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

Instalando o Compilador 4. 0 no IDE EVC 3. 0 Vá até o diretório:

Instalando o Compilador 4. 0 no IDE EVC 3. 0 Vá até o diretório: C: Arquivos de ProgramasMicrosoft Embeeded ToolsEVCwce 300 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 wce 300bin 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

Ajustando opções específicas para o microprocessador Intel® XScale™ no compilador 4. 0 Vá até

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

Qual compilador Microsoft está sendo usado? Vá até Project-> Settings na barra de menu

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

Ferramentas Compilador Intel®

Ferramentas Compilador Intel®

Compilador Intel Integrado ao IDE Microsoft e. VC Suporte a Intrínsecas Inclui vector analysis

Compilador Intel Integrado ao IDE Microsoft e. VC Suporte a Intrínsecas Inclui vector analysis (com a chave /QTPxsc 3) 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 2 x Usar o Compilador Intel e as Intrínsecas Wireless MMX é uma maneira fácil de incorporar desempenho Wireless MMX em uma aplicação

Opções do Compilador Intel® XScale™ • Use /O 3 – Digite manualmente na caixa

Opções do Compilador Intel® XScale™ • Use /O 3 – 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 /O 2 • A opção /O 2 é encontrada em File->Settings, aba C++ • Selecione o pushbutton /Qipo – Faz otimizações interprocedurais – Pode causar algum aumento no tamanho do código

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

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

Ferramentas Comparações entre os Compiladores

Ferramentas Comparações entre os Compiladores

Dados de Aplicações sem WMMX Aplicação Gargalo MS 3. 0 MS 4. 0 Intel

Dados de Aplicações sem WMMX 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 Gapi. Draw 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 • O dado é o tempo em segundos • A biblioteca de ponto flutuante faz grande diferença

Ferramentas Intel® VTune™ Ferramenta de Análise de Desempenho

Ferramentas Intel® VTune™ Ferramenta de Análise de Desempenho

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

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 ®

VTune™ – Outros benefícios Mede desempenho sem instrumentação Apenas depura símbolos necessários Mostra no

VTune™ – Outros benefícios Mede desempenho sem instrumentação Apenas depura símbolos necessários Mostra no código fonte quais são os “Hot. Spots” existentes na função Dá conselhos de ajuste de desempenho

VTune™ - Performance Tuning Advice

VTune™ - Performance Tuning Advice

O que é amostragem estatística? Amostragem significa que a informação é obtida sobre o

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

VTune™ - Hot Spot View Exibe quais funções usam mais a CPU. Note a

VTune™ - Hot Spot View Exibe quais funções usam mais a CPU. Note a escala e a diferença entre o timer event

VTune – Análise de eventos O VTune habilita a captura de dados estatísticos de

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

VTune – Análise de eventos Depois de um número de eventos pré-definidos, uma amostra

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 PXA 27 x (Bulverde) até 4 eventos.

Eventos PMU para Intel® XScale™ Núm ero Definição 0 x 0 Fracasso na cache

Eventos PMU para Intel® XScale™ Núm ero Definição 0 x 0 Fracasso na cache de instruções 0 x 7 Instrução executada 0 x 1 Cache de instruções não pode entregar a instrução 0 x 8 Travamento devido a lotação da D-Cache 0 x 2 Travamento por dependência de dados 0 x 9 Sequência contígua do evento 0 x 8 0 x 3 Fracasso em instrução TLB 0 xa Acesso a Data cache 0 x 4 Fracasso em dado TLB 0 xb Fracasso na Data cache 0 x 5 Desvio de instrução executado 0 xc Data cache write-back 0 x 6 Fracasso em predição de desvio 0 xd Software mudou PC

Hotspots baseados em tempo e eventos Tempos e eventos são apresentados no mesmo gráfico.

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

Preparando seu código para uma execução do VTune™ Em Project->Settings Tenha certeza que projeto

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

Preparando seu código para uma execução do VTune™ Vá para a guia Link Tenha

Preparando seu código para uma execução do VTune™ Vá para a guia Link Tenha certeza que a caixa Generate debug info está marcada

VTune ™ - Como o Data Collector trabalha O Data Collector é utilizado para

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) 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 Requer uma construção especial de uma imagem ROM para plataformas baseadas em Win. CE

Depois de coletar os dados Use o Active. Sync para copiar os arquivos. rsf

Depois de coletar os dados Use o Active. Sync 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. tb 5 com o VTune C: Arquivos de programasIntelVTuneSharedBinVtune. Env. exe

Depois de coletar os dados Os utilitários de conversão: Tbsutil. dll Convert 5. exe

Depois de coletar os dados Os utilitários de conversão: Tbsutil. dll Convert 5. exe Builtbxxsc. exe Copie estes arquivos de C: Arquivos de programasIntelVTuneRDC for XSC 2Host para o seu diretório de conversão

Abrindo o arquivo no VTune Você terá de responder isto o tempo todo Marque

Abrindo o arquivo no VTune Você terá de responder isto o tempo todo Marque “Do not import, just view the file” e pressione OK

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

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 ARMV 4 Dbg ou ARMV 4 Rel Selecione o binário do seu projeto

Entendendo os modos de visão do VTune™ O VTune habilita a observação de dados

Entendendo os modos de visão do VTune™ O VTune habilita a observação de dados coletados por Process, Thread, Módulo ou Hot. Spot 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 Hot. Spot é apresentado como todas as amostras estão distribuídas por função para o módulo selecionado

Dicas do VTune™ Associe o arquivo. tb 5 com o VTune Isso torna mais

Dicas do VTune™ Associe o arquivo. tb 5 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

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

Dicas do VTune™ Considere o uso de “Print Screen” para captar marcas significativas Cole no Power. Point 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)

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

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

Dicas do VTune™ - Ligação incorreta ou quebrada de símbolos Seja cuidadoso em recompilações

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, . tb 5, apague os arquivos. sdb (arquivos de símbolo), force o VTune a recriar as informações de símbolos

Dicas do VTune™ - Interrupções imprecisas Sempre tenha em mente como o VTune obtém

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 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

VTune™ - Imagens com Suporte Requer PMU encontrada em XScale™ Não trabalha em SA

VTune™ - Imagens com Suporte Requer PMU encontrada em XScale™ Não trabalha em SA 1110 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 Pocket. PC somente no IPAQ 3950 Viewsonic PC V 35 (PPC 2002) Todos PPC 2003 e Smart. Phones 2003 Axim X 3 PPC 2003 Mitac 8390 Smart. Phome 2003

Módulo II Laboratório Objetivos: - Instalar o compilador Microsoft 4. 2 na IDE do

Módulo II Laboratório Objetivos: - Instalar o compilador Microsoft 4. 2 na IDE do e. VC++ 3. 0 - Usar o Compilador Intel C++ for Intel XScale Processor - Obter métricas iniciais de performance