Vetorização MO801/MC972.

Slides:



Advertisements
Apresentações semelhantes
Mapeamento de Entrada / Saída em Sistemas Digitais
Advertisements

Software Básico Silvio Fernandes
Parte 1: Organização de Computadores
Introdução a Algoritmos
Parte 1: Organização de Computadores
Conceitos de Programação Paralela
Arquitetura de Computadores
Arquitetura de Computadores
Arquitetura e organização de computadores
Informática Aplicada Prof.: Bruno Rafael de Oliveira Rodrigues.
Paradigmas de Programação
Sistemas Digitais Projeto RTL – Unidade de Execução
Circuitos aritméticos
OpenMP MO801/MC972. Visão geral Biblioteca de mais alto nível para programação paralela Prevê memória compartilhada Requer suporte do compilador Exige.
Daniel M. Aquino, Marcelo C. Perez, Thais A. B. Fernandes
Extensões Multimídia Alunos: Daniel Machado de Faria – RA015783
Problemas com Threads MO801/MC972. Muitas threads Se algumas threads ajudam o programa, muitas threads devem ajudar mais –Certo? O overhead de escalonamento.
CISC e RISC.
Organização e Arquitetura de Computadores I Aritmética para Computadores Parte I Ivan Saraiva Silva.
Universidade Federal do Rio Grande do Sul Programa de Pós-Graduação em Computação Exploração do espaço de projeto para uma arquitetura de processamento.
Multiplicação de valores inteiros
Exemplo: TMS320C6701 Ponto flutuante de 32 bits e de 64 bits
O MICROPROCESSADOR INTEL 8080
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Sistemas Digitais Microprocessados
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
Gustavo Vieira Pereira
Organização da Memória Principal
Autor: Fernando de Mesentier Silva
Como a matemática participa da informática?.
Avaliando e Compreendendo o Desempenho - Respostas
Resolução do exame de 2ª época
CONCEITOS Modelo de Dados
Circuitos Digitais - Somadores e Subtradores SOMADORES E SUBTRADORES.
Aula prática 6 Vetores e Matrizes
Fundamentos da Arquitetura de Computadores
Representação de Instruções
O Fluxo de Implementação
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Qualificadores.
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Projeto de Somador com e sem Sinal Descrição.
Preparação de uma Política de Segurança
Linguagens de programação
My Drivers. O que são drivers do computador? Drivers são softwares específicos que permitem que o hardware se comunique com a placa-mãe O que acontece.
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Arquitetura de computadores
Tópicos em Arquitetura de Computadores João Angelo Martini Universidade Estadual de Maringá Departamento de Informática Mestrado em Ciência.
Davi de Andrade Lima Castro RA:  A plataforma C6000: ◦ Ponto-fixo:  C62x  C64 / C64x+ ◦ Ponto-flutuante:  C67x / C67x+ ◦ Arquitetura VLIW:
Introdução a Banco de dados
Aritmética Computacional Operações Complexas
O Processo de desenvolvimento de software
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Fundamentos de Arquitetura da Computação
Algoritmos e Estrutura de Dados I
8088 Assembly Software Básico Mitsuo Takaki.
Registradores.
Arquitetura de Sistemas Embarcados
Fundamentos de linguagens de programação
Processamento de Alto Desempenho Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Engenharia de Software
MO401 – Trabalho 2 Fábio Augusto Menocci Cappabianco RA:991724
Introdução à lógica de programação
Arquitetura de computadores
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
A linguagem de Máquina – Instruções Básicas
Organização e Arquitetura de Computadores A.L.Lapolli – Organização e Arquitetura de Computadores Objetivo: Objetivo: Realizar as quatro.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 4 (1) Introdução à Programação de Processadores Vetoriais Tópicos: Conceitos Básicos Encadeamento.
Introdução ao Processamento Vetorial
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

Vetorização MO801/MC972

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?

Somador de 1 bit + Como fazer um somador de 8 bits? Carry in Carry out

Somador de 2 bits?

Somador de 2 bits + + A0 B0 C0 Carry in Carry out A1 B1 C1 Carry in

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?

Visão geral + + + + = = = = Registrador de 32 bits

Outras operações úteis Soma com saturação Operações horizontais Empacotamento/desempacotamento

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: 255 + 1 = 0 Com saturação: 255 + 1 = 255 Qual operação é melhor?

Operações horizontais Registrador de 32 bits + + + Registrador de 32 bits

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

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

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

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

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?