Você está na página 1de 78

Arquitetura de Computadores

Exploração de DLP

Prof. Denis Franco

denisfranco@furg.br

Julho 2013

Universidade Federal do Rio Grande


Centro de Ciências Computacionais
Programa de Pós-Graduação em Computação
Mestrado em Engenharia de Computação

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 1 / 43


Outline

1 Introdução

2 Processadores vetoriais

3 Extensões SIMD

4 Graphics processing units

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 2 / 43


Introdução

Outline

1 Introdução

2 Processadores vetoriais

3 Extensões SIMD

4 Graphics processing units

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 3 / 43


Introdução

Data-level parallelism
Data-level vs task-level parallelism

Categorias de processamento: Flynn, 1966


Single instruction stream, single data stream - SISD
Processador sequencial tradicional
Pode explorar ILP
Single instruction stream, Multiple data stream - SIMD
Exploração de DLP
Multiple instruction stream, single data stream - MISD
Não comercial
Multiple instruction stream, multiple data stream - MIMD
Pode explorar DLP
Explora TLP
Explora request-level parallelism

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 4 / 43


Introdução

Data-level parallelism
O interesse por DLP

Aplicações cientı́ficas baseadas em matrizes


Processamento de áudio e vı́deo
Maior eficiência energética de SIMD em relação à MIMD
Programação sequencial com ganho via paralelismo dos dados
Variações comerciais
Arquiteturas vetoriais
Extensões SIMD
GPUs

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 5 / 43


Processadores vetoriais

Outline

1 Introdução

2 Processadores vetoriais

3 Extensões SIMD

4 Graphics processing units

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 6 / 43


Processadores vetoriais

Arquiteturas vetoriais
As pioneiras

Illiac IV, 1966


CDC STAR-100, 1972
TI ASC, 1972
Cray-1, 1976
Seymour Cray
Cray Research
Vector-register
Arquitetura escalar mais rápida da época

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 7 / 43


Processadores vetoriais

Arquiteturas vetoriais
Caracterı́sticas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 8 / 43


Processadores vetoriais

Arquiteturas vetoriais
Caracterı́sticas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 9 / 43


Processadores vetoriais

Arquiteturas vetoriais
Operação

Bloco básico de dados: vetor


Vetor de comprimento n: V → V[0], V[1], V[2], V[3], .., V[n-1].

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 10 / 43


Processadores vetoriais

Arquiteturas vetoriais
Operação

Bloco básico de dados: vetor


Vetor de comprimento n: V → V[0], V[1], V[2], V[3], .., V[n-1].
V1 = V2 + V3

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 10 / 43


Processadores vetoriais

Arquiteturas vetoriais
Operação

Bloco básico de dados: vetor


Vetor de comprimento n: V → V[0], V[1], V[2], V[3], .., V[n-1].
V1 = V2 + V3
1 instrução: ADD V1, V2, V3

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 10 / 43


Processadores vetoriais

Arquiteturas vetoriais
Operação

Bloco básico de dados: vetor


Vetor de comprimento n: V → V[0], V[1], V[2], V[3], .., V[n-1].
V1 = V2 + V3
1 instrução: ADD V1, V2, V3
= n operações:
V1[0] = V2[0] + V3[0]
V1[1] = V2[1] + V3[1]
V1[2] = V2[2] + V3[2]
...
V1[n-1] = V2[n-1] + V3[n-1]

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 10 / 43


Processadores vetoriais

Arquiteturas vetoriais
Operação

Bloco básico de dados: vetor


Vetor de comprimento n: V → V[0], V[1], V[2], V[3], .., V[n-1].
V1 = V2 + V3
1 instrução: ADD V1, V2, V3
= n operações:
V1[0] = V2[0] + V3[0]
V1[1] = V2[1] + V3[1]
V1[2] = V2[2] + V3[2]
...
V1[n-1] = V2[n-1] + V3[n-1]
Operações sobre vetores e escalares
Operações sequenciais ou paralelas sobre elementos de um vetor
Grande latência inicial x elevada taxa de execução

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 10 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS vetorial

Registradores vetoriais: 8 registradores, 64 elementos, 64 bits


Unidades funcionais vetoriais (5): pode iniciar uma operação a cada
ciclo de clock
Unidade vetorial de load-store: capacidade de 1 elemento por ciclo de
clock após latência inicial
Registradores escalares: do MIPS padrão
Instruções vetoriais
ADDVV.D V1, V2, V3
ADDVS.D V1, V2, F0
LV V1, R1
SV R1, V1
...

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 11 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS vetorial: VMIPS

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 12 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Exemplo: Y = a × X + Y , com X e Y armazenados a partir de Rx e Ry .

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 13 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Exemplo: Y = a × X + Y , com X e Y armazenados a partir de Rx e Ry .

MIPS escalar: VMIPS:

L.D F0,a L.D F0,a


DADDIU R4, Rx, #512 LV V1, Rx
Loop: L.D F2, 0(Rx) MULVS.D V2, V1, F0
MUL.D F2, F2, F0 LV V3, Ry
L.D F4, 0 (Ry) ADDVV.D V4, V2, V3
ADD.D F4, F4, F2 SV V4, Ry
S.D F4, 0(Ry)
DADDIU Rx, Rx, #8
DADDIU Ry, Ry, #8
DSUBU R20, R4, Rx
BNEZ R20, Loop
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 13 / 43
Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas

Instruções de controle de laço

Dependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções

Instruções de controle de laço

Dependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço

Dependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções

Dependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências
MIPS escalar: ADD.D → MUL.D
MIPS escalar: S.D → ADD.D

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
MIPS escalar vs VMIPS

Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências
MIPS escalar: ADD.D → MUL.D
MIPS escalar: S.D → ADD.D
VMIPS: uma parada por instrução
VMIPS: chaining

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 14 / 43


Processadores vetoriais

Arquiteturas vetoriais
Chaining

Adiandamento (forwarding ) de dados entre unidades.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 15 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

Dependente de 3 fatores:
1 Comprimento dos vetores
2 Hazards estruturais
3 Dependências de dados
Associados aos conceitos de:
Convoys: instruções sem dependências
Chaining
Chime: tempo de execução de um convoy
m convoys executam em m chimes
No VMIPS: m chimes e n elementos por vetor = m × n ciclos de clock

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 16 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Em convoys:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Em convoys:
1 LV

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Em convoys:
1 LV
2 MULVS.D, LV

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Em convoys:
1 LV
2 MULVS.D, LV
3 ADDVV.D

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry

Em convoys:
1 LV
2 MULVS.D, LV
3 ADDVV.D
4 SV
4 chimes e 64 elementos = 256 ciclos de clock
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43
Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

4 chimes e 64 elementos = 256 ciclos de clock ⇒ avaliação simplificada...

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 18 / 43


Processadores vetoriais

Arquiteturas vetoriais
Tempo de execução

4 chimes e 64 elementos = 256 ciclos de clock ⇒ avaliação simplificada...


Precisão dependente do número de elementos em um vetor
Vector start-up time, ou latência do pipeline
VMIPS
6 ciclos para FP add
7 ciclos para FP mul
20 ciclos para FP div
12 ciclos para load
Outras dependências?

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 18 / 43


Processadores vetoriais

Arquiteturas vetoriais
Otimizações

Multiple lanes: pipelines paralelos.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 19 / 43


Processadores vetoriais

Arquiteturas vetoriais
Otimizações

Unidade vetorial com 4 lanes.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 20 / 43


Processadores vetoriais

Arquiteturas vetoriais
Otimizações

Vector-length registers, (VLR)


Vector- mask register
Bancos de memória independentes
Stride: matrizes multidimensionais
LVWS V1, (R1, R2) → V 1 = mem(R1 + i × R2)
Gather-Scatter : matrizes esparsas
LVI V1, (R1 + V2) → V 1 = mem(R1 + V 2(i))

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 21 / 43


Extensões SIMD

Outline

1 Introdução

2 Processadores vetoriais

3 Extensões SIMD

4 Graphics processing units

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 22 / 43


Extensões SIMD

Extensões SIMD
Extensões multimı́dia

Aplicações de áudio e vı́deo


8 bits por cor primária
8 bits para transparência
8/16 bits para áudio
Suporte para armazenamento de diversas larguras de dados
Suporte para processamento de diversas larguras de dados?
Divisão da cadeia de carry na ALU
TX-2, 1957
Baixo custo em HW
Subword parallelism

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 23 / 43


Extensões SIMD

Extensões SIMD
Extensões multimı́dia

Exemplo: somador de 256 bits


32 somas de 8 bits
16 somas de 16 bits
8 somas de 32 bits
4 somas de 64 bits
2 somas de 128 bits
Operações paralelas ≈ lanes em arquiteturas vetoriais
Uma instrução opera sobre vários dados
Cada instrução opera sobre um número fixo de dados
Grande quantidade de instruções adicionais

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 24 / 43


Extensões SIMD

Extensões SIMD
Extensões x arquiteturas vetoriais

Vetores com tamanho variável: mesmo código em máquinas vetoriais


Poucas operações disponı́veis nas extensões
Sem suporte a endereçamento stride e gather-scatter
Sem suporte a mask registers

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 25 / 43


Extensões SIMD

Extensões SIMD
Extensões x arquiteturas vetoriais

Vetores com tamanho variável: mesmo código em máquinas vetoriais


Poucas operações disponı́veis nas extensões
Sem suporte a endereçamento stride e gather-scatter
Sem suporte a mask registers
Maior dificuldade para o compilador gerar código otimizado!

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 25 / 43


Extensões SIMD

Extensões SIMD
Extensões x arquiteturas vetoriais

Vetores com tamanho variável: mesmo código em máquinas vetoriais


Poucas operações disponı́veis nas extensões
Sem suporte a endereçamento stride e gather-scatter
Sem suporte a mask registers
Maior dificuldade para o compilador gerar código otimizado!
Mas o objetivo é a aceleração de bibliotecas especı́ficas ou otimização em
Assembly.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 25 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla
SSE3, 2004

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla
SSE3, 2004
SSE4, 2007
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43
Extensões SIMD

Extensões SIMD
Implementações no x86

AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 27 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits
Por que extensões são populares?

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 27 / 43


Extensões SIMD

Extensões SIMD
Implementações no x86

AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits
Por que extensões são populares?
Baixo custo de implementação
Alto custo de implementação de arquiteturas vetoriais
Alta taxa de transferência de memória necessária para arquiteturas
vetoriais
Facilidade na introdução de instruções para novos padrões de mı́dia

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 27 / 43


Graphics processing units

Outline

1 Introdução

2 Processadores vetoriais

3 Extensões SIMD

4 Graphics processing units

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 28 / 43


Graphics processing units

GPUs
A origem

Gráficos no PC (1990): controlador VGA


Controlador de memória + DRAM + geração sinais de vı́deo

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 29 / 43


Graphics processing units

GPUs
A origem

VGA com aceleração 3D (1997)


Rasterization
Textures
Shading

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 30 / 43


Graphics processing units

GPUs
A origem

VGA com aceleração 3D (1997)


Rasterization
Textures
Shading
Processador gráfico (2000)
Pipeline gráfico de alto desempenho

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 30 / 43


Graphics processing units

GPUs
A origem

VGA com aceleração 3D (1997)


Rasterization
Textures
Shading
Processador gráfico (2000)
Pipeline gráfico de alto desempenho
Graphics processing units, GPUs

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 30 / 43


Graphics processing units

GPUs
Um multiprocessador

Evolução gradual das GPUs


Maior programabilidade
Instruções substituindo funções fixas
Maior precisão
Inteiros e ponto fixo
Ponto flutuante precisão simples
Ponto flutuante precisão dupla
Processadores massivamente paralelos
Centenas de núcleos
Milhares de threads
Instruções de uso geral e memória dedicada
Suporte à programação por linguagens de alto nı́vel

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 31 / 43


Graphics processing units

GPUs
Sistemas heterogêneos

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 32 / 43


Graphics processing units

GPUs
Sistemas heterogêneos

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 32 / 43


Graphics processing units

GPUs
O pipeline gráfico

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 33 / 43


Graphics processing units

GPUs
A arquitetura GPU

Foco em muitos núcleos simples


Núcleos multithreaded
Otimização para processamento paralelo de dados via múltiplas
threads
+ computação
- cache e overhead
Exemplo: NVIDIA GeForce 8800, arquitetura Tesla
14 multithreaded streaming multiprocessors, SMs
8 streaming processors, SPs, ou núcleos
96 threads por núcleo
2 special function units, SFUs
Caches, memória local compartilhada, etc

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 34 / 43


Graphics processing units

GPUs
A arquitetura GPU

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 35 / 43


Graphics processing units

GPUs
Programação

Programação baseada em APIs


Comportamento padronizado nas APIs permite otimização do HW
OpenGL
DirectX
Pipeline Direct 3D 10:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 36 / 43


Graphics processing units

GPUs
Programação

Modelos de programação escaláveis, através de graphics shading


languages
HLSL
Cg
Bibliotecas com operações trigonométricas, sobre matrizes,
interpolação, etc
Pixels, primitivas e vértices independentes permitem paralelização do
processamento
O HW cria threads para cada elemento na imagem

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 37 / 43


Graphics processing units

GPUs
Programação

Textura de pele

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 38 / 43


Graphics processing units

GPUs
Programação

Textura de pele
1400 instruções por pixel

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 38 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU
Descrição das aplicações como algoritmos gráficos
Abordagem complexa e limitada

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU
Descrição das aplicações como algoritmos gráficos
Abordagem complexa e limitada
Compute Unified Device Architecture, CUDA (NVIDIA)

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU
Descrição das aplicações como algoritmos gráficos
Abordagem complexa e limitada
Compute Unified Device Architecture, CUDA (NVIDIA)
Plataforma de programação paralela para GPUs
Programação em C/C++ sem dependências das APIs gráficas
Estilo de programação SPMD (single-program multiple data)
Programação de múltiplos núcleos de CPUs

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU
Descrição das aplicações como algoritmos gráficos
Abordagem complexa e limitada
Compute Unified Device Architecture, CUDA (NVIDIA)
Plataforma de programação paralela para GPUs
Programação em C/C++ sem dependências das APIs gráficas
Estilo de programação SPMD (single-program multiple data)
Programação de múltiplos núcleos de CPUs
Compute abstraction layer, CAL (AMD)

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Programação de aplicações paralelas

GPUs altamente paralelas vs aplicações paralelas não gráficas?


General Purpose computation on GPU, GPGPU
Descrição das aplicações como algoritmos gráficos
Abordagem complexa e limitada
Compute Unified Device Architecture, CUDA (NVIDIA)
Plataforma de programação paralela para GPUs
Programação em C/C++ sem dependências das APIs gráficas
Estilo de programação SPMD (single-program multiple data)
Programação de múltiplos núcleos de CPUs
Compute abstraction layer, CAL (AMD)
Brook streaming language (Buck)

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 39 / 43


Graphics processing units

GPUs
Desempenho

Multiplicação de matrizes. volkov e Demmel, 2008.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 40 / 43


Graphics processing units

GPUs
Desempenho

Decomposição de matrizes.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 41 / 43


Graphics processing units

GPUs
Desempenho

FFT.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 42 / 43


Graphics processing units

GPUs
Desempenho

Sort. Satish, et al., 2008.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 43 / 43