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