Computao grfica em arquiteturas paralelas Bruno Barberi Gnecco
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 n Jogos, visualização científica Tempo real n n Sem input Animações, demos Off-line n Renderização de cenas e filmes Requerimentos diferentes! 4
Arquiteturas SIMD: excelentes resultados n n Computação gráfica tem loops pequenos e repetitivos Ganho próximo ao linear SMP: excelentes resultados n n Processamento de primitivas diferentes Fácil de usar 5
Arquiteturas II Clusters n n 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 n n n Modelos Texturas Dados volumétricos Como tratar? 9
Bases de dados II Replicação Migração de dados n Distributed Shared Memory (DSM) Dados fixos por nó 10
Bases de dados: problemas Limite de 32 bits de endereçamento Distribuída: n n Latência alta Limite de banda 11
Lidando com problemas I Exploração de localidade n Cache Least Recently Used funciona muito bem Compressão de dados n n n Melhora a banda Compressão típica 3: 1 Toma tempo de processamento 12
Lidando com problemas II Pré-processamento dos dados n n Ordenação Divisão espacial w BSPs w Octrees w Grids n 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 n n n 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 n (~20 fps para download) Redes são segundo gargalo n 1024 x 768@30 fps (24 bits): 56. 6 MB/s Processadores gráficos têm crescido muito rapidamente 15
Sincronia I Problema de todo aplicativo real time Três tipos: n n n Datalock Framelock Genlock 16
Sincronia: Datalock Garantir coerência da base de dados Em replicação, envia somente mudanças n Matrizes de transformação DSM: problema de coerência n 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 n n SGI Wildcat 5110 Via rede (DICElib) Via porta paralela (Soft. Frame. Lock) 18
Algoritmos de renderização I Ray tracing n n n Semelhante à ótica geométrica Embaraçosamente paralelo Extensões mais complexas w Radiosidade w Photon-mapping n Em geral off-line 19
Algoritmos de renderização II Rasterização n n 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. n Primitivas sem nenhum processamento. sort-middle entre o processamento de geometria e a rasterização. n Primitivas já em coordenadas da tela. sort-last ou durante a rasterização. n redistribuição é de pixels, fragmentos de pixels, etc. 21
Rasterização Tiled rendering (sort-first) n 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 n n n 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 n n n Ó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: n n Melhor para raytracing do que raster Pode se aproveitar de localidade 25
Soluções existentes Relativamente poucas soluções n n n CAVElib Syzygy Chromium Net. Juggler DICElib 26
CAVElib Inicialmente só para IRIX, agora também para SUN, HPUX, LINUX e WIN 32 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 Wire. GL Tiled rendering Totalmente transparente n Emula Open. GL Extensível 29
Net. Juggler Pacote adicional para VRJuggler Provê um SSI n Esconde sincronia e distribuição de dados entre nós Paralelização em nível de eventos n 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, Win 32) 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 32
Rendering farms Usam renderizadores offline n n n 3 DSMax 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 n 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 n n Raytracing Volume rendering Grande desperdício de processamento n n Recomputação de muitos dados, pode-se aproveitar coerência temporal Cacheamentos eficientes 35
Conclusões III Tempo real/interativo: raster vs raytracing n n n 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/Clustered. VR. ht m 38
- Slides: 38