Computação gráfica em
arquiteturas paralelas
Bruno Barberi Gnecco
PEE 5846
Prof. Takeo
1
Introdução
Computação gráfica
Alto consumo de processamento
Grandes volumes de dados
Tempo real
2
Visão geral:
Problemas comuns
Bases de dados grandes
Sincronia dos aplicativos
Balanceamento de carga
Paralelismo interno dos algoritmos
3
Visão geral:
Gêneros de aplicativos
Interativos

Jogos, visualização científica
Tempo real


Sem input
Animações, demos
Off-line

Renderização de cenas e filmes
Requerimentos diferentes!
4
Arquiteturas
SIMD: excelentes resultados


Computação gráfica tem loops pequenos e
repetitivos
Ganho próximo ao linear
SMP: excelentes resultados


Processamento de primitivas diferentes
Fácil de usar
5
Arquiteturas II
Clusters




Ganho potencialmente (super) linear
Problemas de coerência/sincronia
Distribuição da base de dados
Gargalos de comunicação
6
Hardware especializado
Implementa operações repetitivas e
custosas
Permite usar o processador principal
para outras tarefas
Início em plataformas gráficas (SGI)
Popularização nos PCs recentemente
7
Hardware especializado II
Maioria faz raster
Baseado em uma pipeline
Permite explorar paralelismo interno
Combina memória/bus/processador
para ótima performance
8
Bases de dados I
Computação gráfica lida com grande
volume de dados



Modelos
Texturas
Dados volumétricos
Como tratar?
9
Bases de dados II
Replicação
Migração de dados

Distributed Shared Memory (DSM)
Dados fixos por nó
10
Bases de dados: problemas
Limite de 32 bits de endereçamento
Distribuída:


Latência alta
Limite de banda
11
Lidando com problemas I
Exploração de localidade

Cache Least Recently Used funciona muito
bem
Compressão de dados



Melhora a banda
Compressão típica 3:1
Toma tempo de processamento
12
Lidando com problemas II
Pré-processamento dos dados


Ordenação
Divisão espacial
 BSPs
 Octrees
 Grids

Problema: cenas dinâmicas
Acesso de memória não local: peça dado e
chaveie para outro thread
13
Lidando com problemas III
Hardware dedicado



Limitado por banda do bus
Quase nunca é feito para se aproveitar de
paralelismo externo
Praticamente limitado a rasterização
poligonal
14
Gargalos em real time
Principal gargalo atual: bus PCI

(~20 fps para download)
Redes são segundo gargalo

1024x768@30fps (24bits): 56.6 MB/s
Processadores gráficos têm crescido
muito rapidamente
15
Sincronia I
Problema de todo aplicativo real time
Três tipos:



Datalock
Framelock
Genlock
16
Sincronia: Datalock
Garantir coerência da base de dados
Em replicação, envia somente
mudanças

Matrizes de transformação
DSM: problema de coerência

Processamento de animação/física torna-se
dependente da renderização
Dados fixos por nó: irrelevante
17
Sincronia: Swaplock/Genlock
Swaplock: sincronia de troca do frame buffer
Genlock: sincronia do sinal de retraço do
vídeo
Garantir coerência das imagens
Altamente dependente do tempo
Suporte por hardware pouquíssimos sistemas


SGI
Wildcat 5110
Via rede (DICElib)
Via porta paralela (SoftFrameLock)
18
Algoritmos de renderização I
Ray tracing



Semelhante à ótica geométrica
Embaraçosamente paralelo
Extensões mais complexas
 Radiosidade
 Photon-mapping

Em geral off-line
19
Algoritmos de renderização II
Rasterização




Projeção de primitivas geométricas na tela
Mais comum para aplicativos real time
Aceleradores eficientes
Alto grau de paralelismo mas não é
embaraçoso
20
Classificação de renderização
paralela (Molnar et al, 94)
sort-first antes ou durante o processamento
de geometria.

Primitivas sem nenhum processamento.
sort-middle entre o processamento de
geometria e a rasterização.

Primitivas já em coordenadas da tela.
sort-last ou durante a rasterização.

redistribuição é de pixels, fragmentos de pixels,
etc.
21
Rasterização
Tiled rendering (sort-first)

Chromium
Processamento independente de
primitivas e composição de imagem
(sort-last)
Placas gráficas não provêm suporte
22
Ray tracing
Embaraçosamente paralelo



Reflexões/refrações podem levar a acesso
não local
Offline: costuma-se paralelizar por quadro
Tornando-se viável para tempo real
23
Balanceamento de carga
Depende do tipo de aplicativo e do tipo
de algoritmo
Sort-first: distribuir dados
homogeneamente entre os nós



Ótimo para mundos isotrópicos
Requer composição final de imagem 
consome banda
Dinâmico: migração de dados
24
Balanceamento de carga II
Sort last:


Melhor para raytracing do que raster
Pode se aproveitar de localidade
25
Soluções existentes
Relativamente poucas soluções





CAVElib
Syzygy
Chromium
NetJuggler
DICElib
26
CAVElib
Inicialmente só para IRIX, agora
também para SUN, HPUX, LINUX e
WIN32
Padrão para multiprojeção
Suporta multiprocessamento
Versão para clusters
27
Syzygy
Desenvolvida para clusters
Provê um sistema operacional
distribuído
Faz tile rendering e multiprojeção
28
Chromium
Antigo WireGL
Tiled rendering
Totalmente transparente

Emula OpenGL
Extensível
29
NetJuggler
Pacote adicional
para VRJuggler
Provê um SSI

Esconde sincronia e distribuição de dados entre
nós
Paralelização em nível de eventos

Cada evento de entrada é capturado e
broadcasted para outros nós
Implementado sobre MPI
30
DICElib
Implementação de barreiras de sincronias e
memória compartilhada
Sobre sockets (TCP e UDP)
Portável (Linux, Irix, Win32)
Escalável: limitado apenas pela banda
Programas alvo: pouco compartilhamento de
memória, alta taxa de sincronia.
Poucas modificações necessárias do
programa single-view para executar no
cluster.
Estável, nova versão em curso.
31
DICElib: barreira de sincronia
Server
Node 1
Node 2
Node n
DICE_sync( )
DICE_sync( )
“wait”
DICE_sync( )
“wait”
“synchrony”
“wait”
32
Rendering farms
Usam renderizadores offline



3DSMax
Maya
etc
Frames são gerados inicialmente
(animação, simulação física, etc)
Distribuição de quadros
33
Conclusões I
Computação gráfica em plataformas
paralelas é eficiente
Consumo de banda extremamente alto

Limitações de banda
Poucas soluções ainda para tempo real
Foto realismo em tempo real ainda
distante
34
Conclusões II
Ainda existe muito hardware para se
desenvolver


Raytracing
Volume rendering
Grande desperdício de processamento


Recomputação de muitos dados, pode-se
aproveitar coerência temporal
Cacheamentos eficientes
35
Conclusões III
Tempo real/interativo: raster vs
raytracing



Opiniões divergem
Pixel shaders, etc
Uma mistura?
Como fazer multiprojeção
transparentemente
36
Referências
Bruno Barberi Gnecco, Paulo Bressan, Roseli
de Deus Lopes, Marcelo Knorich Zuffo.
DICElib: a Real Time Synchronization Library
for Multi-Projection Virtual Reality Distributed
Environments", Simpósio Brasileiro de
Realidade Virtual", Florianópolis, Brazil,
Outubro de 2001.
H.Kaczmarski, M.K.Zuffo, C.Goudesune, B.
Schaeffer, P.Augerat, B.Raffin, P.Bressan,
L.Soares. Commodity Cluster for Immersive
Projection Envrionments. Siggraph Course
Notes 47. San Antonio, Texas. 2002.
37
Referências II
Molnar et. al. A Sorting Classification of
Parallel Rendering. IEEE Computer Graphics
and Applications, 14(4):23–32, 1994.
Dicelib:
http://www.lsi.usp.br/~brunobg/dicelib
Chromium: http://chromium.sourceforge.net
Syzygy:
http://www.isl.uiuc.edu/ClusteredVR/ClusteredVR.ht
m
38
Download

Apresentação do PowerPoint