Clusters para Aplicações Gráficas
-
Upload
gustavo-jordan -
Category
Technology
-
view
997 -
download
4
Transcript of Clusters para Aplicações Gráficas
1
2
● Apresentação● Por que pensar em Clusters para Aplicações
Gráficas?● Introdução ao mundo dos Aglomerados
(clusters)● Aglomerados Gráficos● Arquitetura de Sincronização (Cliente/Servidor)● LibGlass (apresentação, plugins, helloworld)
3
QuemQuem sou eu?
● Bolsista do CNPq● Graduando no Instituto Federal (IFSP)● Coordenador Geral do FliSol - Salto● Mercado Livre na área de Prevenção a Fraude● Colaborador de projetos como (Moodle, Debian, libGlass outros)● Participante – Google Higly Open Contest 2009 à 2011 (Code-In)● Colaborador com o concurso Google Summer Of Code 2009
Gsoc-br.org (FAQ em português do GSoC)● Colaborador do projeto Debian GNU/Linux● Colaborador do projeto - DebianZine.org● Fiz parte do projeto Hackerteen da 4Linux● Projeto Educação com Software Livre do MEC (ProINFO Linux Educacional)
4
Porque pensar em Clusters para
Aplicações Gráficas?
5
Missão Crítica• Cirurgia• Simulação de vôo• Simulação de Ambientes (inacessíveis ou perigosos)
Universos Paralelos• Ciências do ambiente • Ciências do ambiente• Astrofísica• Genoma
Prototipagem Digital• Aeronáutica • Automobilismo
Visualização e Interpretação• Petróleo• Previsão Numérica de Tempo• Ciências dos Materiais
6
Porque pensar em clusters paraAplicações Gráficas?
(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
7
8(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
9(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
10
● Desde os primórdios da computação gráfica● O fator desempenho sempre mereceu grande
atenção dos desenvolvedores● Lado-a-lado com requisitos como realismo
gráfico e ergonomia. ● Geralmente medido em número de quadros
por segundo, o desempenho tem influência direta na qualidade de uma aplicação.
● Um baixo desempenho pode prejudicar a usabilidade ou, em casos mais graves, até mesmo inviabilizar a implementação de uma boa idéia.
11
● Para atingir o desempenho e qualidade gráfica desejada, os sistemas de multiprojeção das aplicações de RV, como os CAVEs e PowerWall
● São tradicionalmente como núcleo gráfico sistemas multiprocessados, também conhecidos por sistemas fortemente acoplados. De alto custo, o que os limitam a grandes centros de pesquisas.
● Em contrapartida, o desempenho de processamento e desempenho gráfico dos computadores pessoais estão aumentando.
● Assim, a substituição dos sistemas fortemente acoplados por aglomerados (sistemas fracamente acoplados) é fundamental
12
Aglomerados ?
13
Os aglomerados (clusters) de computadores são um conjunto de computadores, capazes de compartilhar seus recursos, para um objetivo comum .
Específicos no caso de AG que possuem placa de vídeos ou aglomerados de computadores convencionais (commodity computer clusters) .
14
Um aglomerado é caracterizado por;
● Coleção de nós (computadores) interconectados por intermédio de uma rede local denominadas SANs (System Area Networks)
● Ao usuário a ilusão de um único sistema (single system image).
● A ideia é distribuir as tarefas para serem processadas por diversos nós que estão ligados por uma rede .
Essa arquitetura expandiu-se rapidamente devido, principalmente, ao seu baixo custo, alta flexibilidade e escalabilidade
15
Aglomerados Gráficos
16
Os aglomerados utilizados pelas aplicações de RV possuem hardware projetado específicos, como placas gráficas.
Cada nó processa apenas os dados referentes à sua parte de interesse, e então gera a imagem apenas daquela parte e oferecem para nós de controles
Vantagens de uso de um AG
● Desempenho proporcional ao número de estações utilizadas● Podendo executar cálculos de grande complexidade numérica, transacional e gráfica.
17
Sincronismo de nós Aglomerados Gráficos (Sistemas distribuídos)
18
Data-lock
19
Data-lock ou sincronismo de dados é responsável pela coerência dos elementos dinâmicos da cena. Responsável informações em cada nó do aglomerado sejam idênticas em cada instante. Estas informações;
● Posição da câmera virtual,● A direção que esta tem● Movimentos da cena● Qualquer outro atributo dinâmico da cena
20
Frame-lock
21
● Usado em sistemas de multi-projeção
● Coerência de cores e geométrica
● Sincronismo de quadros
22
Sincronismo de nós Aglomerados Gráficos
(Parallel Rendering)
23
sort-first
24
O técnica sort-first realiza a distribuição dos dados antes do processamentogeométrico na fila de processamento gráfica.
Cada nó do sistema é responsável por processar uma parte da imagem final
Para serem visualizadas uma ao lado da outra (tiling).
25
sort-last
26
A técnica sort-last realiza a distribuição de pixels depois da rasterização (sintetização).
Este método permite uma subdivisão das tarefas muito refinada, o que assegura um melhor balanceamento de carga entre os nós.
27
Arquitetura de Sincronização de nós
Cliente/Servidor
28
Distribuição de estimulos
29
Os estímulos do nó Mestre são transmitidos para os nós Escravos do aglomerado gráfico (arquitetura com replicação).
Quando o usuário gera um estímulo, eg, movimenta o mouse ou pressiona uma tecla, este estímulo é enviado para todos os nós Escravos.
Ao recebê-lo, os nós executam as rotinas de tratamento para atualização dos dados e geração das imagens;
Primitivas de Controle
30
Os estímulos são tratados localmente pelo nó Mestre, sendo os resultados enviados para os nós Escravos, que geram e apresentam as imagens (arquitetura sem Replicação).
Esta abordagem é geralmente utilizada quando o problema envolve muitos cálculos que resultam em poucos dados, como em simuladores de vôos. Assim, o meio de comunicação do aglomerado gráfico é utilizado apenas para transmitir os resultados dos cálculos
Primitivas Gráficas
31
(framework distributed computing)
32
● Easy API (C, C++)● User transparency● Extensibility● Performance and efficiency● Network protocol independence● Portability and Scalability● Reliability ● Thread support● Java binding● Architecture synchronism (Client/Server)
FREE SOFTWARE, FREE LIBARY! GNU LIBRARY GENERAL PUBLIC LICENSE
33
34
InstanciaçãoInstanciação
35
● Node management● It manages all the applications Clients
(connection and disconnection) and communication messages (sending and receiving)
● Retrieves disconnections● Future support for peer-to-peer● All transmitted messages are filtered by the
server in order to reduce redundant updates
36
#include "libglass.h"...int main(int argc, char **argv) {// Declarou uma variavel g do tipo Glass (Objetivo de instanciar um nó) Glass *g;
// Se não receber nenhum parametro instância do tipo Server if (argc == 1) { g = new GlassServer(...);
// Senão será uma instância do tipo Cliente }else { g = new GlassClient(...); } . . .
//Instância finalizada delete g; return 0;}
show eg. aroundsimple and helloworld
37
Plugins
38
● Barrier: when you need to synchronize everybody (eg. datalock, swaplock)
● Shared: share your variables● Alias: same variable, different
values, set remotely (eg. CAVE, Multiprojection)
39
Barrier
40
Uso das barreiras de sincronizaçãoeg. Data-Lock, Swap-Lock/Frame-lock
#include "libglass.h"int main () { . . . // declaração da barreira Barrier b = Barrier(1); // sincronização da barreira b b->sync(); . . . return 0;}
show eg. aroundsimple and helloworld
41
Resultados● Utilizando-se um protocolo unicast TCP, cujo
desempenho é inferior ao de um protocolo broadcast, como o UDP, ou multicast, como o XTP resultados suficiente para as aplicações que requerem sincronizações constantes
● Com 5 nós, foi possível fazer 2400 sincronizações por segundo − o requerido pelas aplicações varia de 30 a 120 sincronizações por segundo.
42
Shared
43
#include "libglass.h" . . .int main() { . . . // declaração da variável Shared<float>*teste=new Shared<float>("teste"); . . . // atribuição do valor 1234 para a variável teste *teste = 1234; . . . // envio da atualização da variável // compartilhada teste->sendUpdate(); . . . // atualização da variável teste->getUpdate(); . . . // Imprime a variável
printf("%d\n",teste->getData()); . . . return 0;}
show eg. aroundsimple and helloworld
Support types (floats, inteiros, string and others)
44
● Compartilhamento, o crescimento obtido foi linear, devido às propriedades do protocolo TCP/IP.
● Próximos gráficos mostrará o tempo de sincronização de uma variável compartilhada (Shared) em cada nó 1000 vezes, variando o número de nós de 1 até 5, e o tamanho das mensagens de 1 kb até 4096 kb.
45
(1 kb até 64 kb)
46
(128 kb até 4096 kb)
47
Alias
48
#include "libglass.h"void frente(int a) // frente {}void esquerda(int a) {glRotated(90, 0, -1, 0);}void direita(int a) { {glRotated(90, 0, 1, 0);}. . .int main(int argc, char **argv) { // declaração e cria uma intância no novo alias Alias<void (*)(int)> *assoc assoc = new Alias<void (*)(int)>("frente", frente); // adição do método no alias assoc->addAlias((const char *)"frente", frente); assoc->addAlias((const char *)" esquerda ", esquerda); assoc->addAlias((const char *)" direita ", direita); // associação do nó ao método assoc->associate(firstId+1, " frente "); assoc->associate(firstId+2, "esquerda"); assoc->associate(firstId+3, "direita"); . . . return 0;}
show eg. aroundsimple and helloworld
49
Aplicações Portadas
50
● Celestia● Extreme tux racer● GLExcess● gl117● Sibenik Cathedral● Entre outras
51
● http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
● http://www.teses.usp.br/teses/disponiveis/3/3142/tde-10032005-111137/pt-br.php
● http://libglass.sourceforge.net● http://www.realidadevirtualeaumentada.com.br
52
Obrigado!Perguntas?