Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Vetorização MO801/MC972
2
Motivação Algumas operações usam muito menos bits que os disponíveis em hardware Ex.: Somas de 8 bits de cores para modificar uma figura O somador em hardware é capaz de somar 32 bits Como aproveitá-lo?
3
Somador de 1 bit + Como fazer um somador de 8 bits?
Carry in Carry out
4
Somador de 2 bits?
5
Somador de 2 bits + + A0 B0 C0 Carry in Carry out A1 B1 C1 Carry in
6
E a volta? Como transformar um somador de 32 bits em 4 de 8 bits?
Isso é válido para todas as operações? Para quais operações é válido? Soma? Subtração? Multiplicação? Operações lógicas? Operações de ponto flutuante?
7
Visão geral + + + + = = = = Registrador de 32 bits
8
Outras operações úteis
Soma com saturação Operações horizontais Empacotamento/desempacotamento
9
Soma com saturação Suponha cada canal de cor representado por 8 bits, o que acontece quando se soma 1 ao valor 255? Sem saturação: = 0 Com saturação: = 255 Qual operação é melhor?
10
Operações horizontais
Registrador de 32 bits + + + Registrador de 32 bits
11
Empacotamento e Desempacotamento
Nem sempre os dados estão no formato correto Empacotamento: Coloca dados quebrados num formato para ser manipulado pelas instruções vetoriais Desempacotamento: Volta ao modo anterior
12
Conjuntos de Instruções
Processadores possuem seus conjuntos de instruções vetoriais Em geral, chamadas de extensões multimídia As vezes é melhor utilizá-las no lugar das instruções convencionais Ex.: Ponto flutuante na arquitetura Intel Ex.: SPE da arquitetura Cell
13
Como programar? Solução óbvia Solução desejada Alternativa
Programas em assembly Solução desejada Detecção e uso automático pelo compilador Portabilidade Alternativa Intrinsics (macros) em linguagens de alto nível Pouca portabilidade Solução atual O compilador já faz algo Recomenda-se que o programador utilize intrinsics
14
Vetorizar ou Paralelizar?
Melhor abordagem Vetorizar primeiro Paralelizar depois Não existe OpenMP para vetorização Geralmente um dos dois já satisfaz o requisito de desempenho Comece pelo mais fácil em cada caso Divida o programa em níveis de granularidade Vetorize o mais baixo Paralelize o mais alto
15
Questões gerais As arquiteturas possuem instruções vetoriais. Por que a vetorização não está sistematizada? Você já trabalhou em algo que precisava de desempenho? Realmente precisamos de mais desempenho? Você tentou vetorizar algum código?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.