A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Vetorização MO801/MC972.

Apresentações semelhantes


Apresentação em tema: "Vetorização MO801/MC972."— Transcrição da apresentação:

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?


Carregar ppt "Vetorização MO801/MC972."

Apresentações semelhantes


Anúncios Google