SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
1
●   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)


                                                      2
Quem 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    3
Educacional)
Porque pensar em
    Clusters para
Aplicações Gráficas?

                   4
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
                                                       5
Porque pensar em clusters para
                      Aplicações Gráficas?




                                                                                  6
(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
●   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.                                  10
●   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.
                                                    11
●   Assim, a substituição dos sistemas
Aglomerados ?



                12
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) .

                                        13
Um aglomerado é
caracterizado por;

● Coleção de nós
 (computadores)      14
Aglomerados Gráficos




                       15
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.
                                                     16
Sincronismo de nós
Aglomerados Gráficos
(Sistemas distribuídos)

                      17
Data-lock



            18
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




                                               19
Frame-lock



             20
●   Usado em sistemas de multi-projeção

●   Coerência de cores e geométrica

●   Sincronismo de quadros




                                          21
Sincronismo de nós
Aglomerados Gráficos
 (Parallel Rendering)

                        22
sort-first



             23
O técnica sort-first realiza a
distribuição dos dados antes
do processamento
geomé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).


                                 24
sort-last



            25
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.



                              26
Arquitetura de Sincronização
           de nós
      Cliente/Servidor



                               27
Distribuição de estimulos




                            28
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




                                                                        29
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




                                                                        30
(framework distributed computing)




                               31
●   Easy API (C, C++)
●   User transparency
●   Extensibility
●   Performance and efficiency
●   Network protocol independence
●   Portability and Scalability
●   Reliability
●   Thread support
●   Java binding
●   Architecture synchronism
              FREE SOFTWARE, FREE LIBARY!       32
           GNU LIBRARY GENERAL PUBLIC LICENSE
    (Client/Server)
33
Instanciação




               34
●   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

                                                   35
#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
                                                                          36
Plugins




          37
● Barrier: when you need to
  synchronize everybody (eg.
  datalock, swaplock)
● Shared: share your variables


● Alias: same variable, different

  values, set remotely (eg. CAVE,
  Multiprojection)
                                    38
Barrier




          39
Uso das barreiras de sincronização
  eg. 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
                                          40
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.

                                                   41
Shared




         42
Support types (floats, inteiros, string and others)
   #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("%dn",teste->getData());
        ...
     return 0;
   }
                                                            43
show eg. aroundsimple and helloworld
●   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.




                                                  44
(1 kb até 64 kb)




                   45
(128 kb até 4096 kb)




                       46
Alias




        47
#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                             48
Aplicações Portadas




                      49
●   Celestia
●   Extreme tux racer
●   GLExcess
●   gl117
●   Sibenik Cathedral
●   Entre outras


                        50
●   http://www.teses.usp.br/teses/disponiveis/3/314
    2/tde-09112005-174258/pt-br.php
●   http://www.teses.usp.br/teses/disponiveis/3/314
    2/tde-10032005-111137/pt-br.php
●   http://libglass.sourceforge.net
●   http://www.realidadevirtualeaumentada.com.br




                                                   51
Obrigado!
Perguntas?


             52

Weitere ähnliche Inhalte

Ähnlich wie Palestra

Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
Tony Alexander Hild
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Igor José F. Freitas
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid
Fernando Gomes Chaves
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
Marcio Machado Pereira
 

Ähnlich wie Palestra (20)

Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Server
 
Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional e...
Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional e...Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional e...
Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional e...
 
Paralelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto EscalarParalelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto Escalar
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Técnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDATécnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDA
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 
Apresentação Gerpro
Apresentação GerproApresentação Gerpro
Apresentação Gerpro
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Apresentacao sobre o QNX Neutrino
Apresentacao sobre o QNX NeutrinoApresentacao sobre o QNX Neutrino
Apresentacao sobre o QNX Neutrino
 
TCC Apresentacao Final
TCC Apresentacao FinalTCC Apresentacao Final
TCC Apresentacao Final
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em java
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital Preservation
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
 

Mehr von Campus Party Brasil

Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
Campus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
Campus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Campus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
Campus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
Campus Party Brasil
 

Mehr von Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 

Palestra

  • 1. 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) 2
  • 3. Quem 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 3 Educacional)
  • 4. Porque pensar em Clusters para Aplicações Gráficas? 4
  • 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 5
  • 6. Porque pensar em clusters para Aplicações Gráficas? 6 (http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
  • 7. 7
  • 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. 10
  • 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. 11 ● Assim, a substituição dos sistemas
  • 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) . 13
  • 14. Um aglomerado é caracterizado por; ● Coleção de nós (computadores) 14
  • 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. 16
  • 17. Sincronismo de nós Aglomerados Gráficos (Sistemas distribuídos) 17
  • 18. Data-lock 18
  • 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 19
  • 21. Usado em sistemas de multi-projeção ● Coerência de cores e geométrica ● Sincronismo de quadros 21
  • 22. Sincronismo de nós Aglomerados Gráficos (Parallel Rendering) 22
  • 24. O técnica sort-first realiza a distribuição dos dados antes do processamento geomé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). 24
  • 25. sort-last 25
  • 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. 26
  • 27. Arquitetura de Sincronização de nós Cliente/Servidor 27
  • 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 29
  • 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 30
  • 32. Easy API (C, C++) ● User transparency ● Extensibility ● Performance and efficiency ● Network protocol independence ● Portability and Scalability ● Reliability ● Thread support ● Java binding ● Architecture synchronism FREE SOFTWARE, FREE LIBARY! 32 GNU LIBRARY GENERAL PUBLIC LICENSE (Client/Server)
  • 33. 33
  • 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 35
  • 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 36
  • 37. Plugins 37
  • 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) 38
  • 39. Barrier 39
  • 40. Uso das barreiras de sincronização eg. 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 40
  • 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. 41
  • 42. Shared 42
  • 43. Support types (floats, inteiros, string and others) #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("%dn",teste->getData()); ... return 0; } 43 show eg. aroundsimple and helloworld
  • 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. 44
  • 45. (1 kb até 64 kb) 45
  • 46. (128 kb até 4096 kb) 46
  • 47. Alias 47
  • 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 48
  • 50. Celestia ● Extreme tux racer ● GLExcess ● gl117 ● Sibenik Cathedral ● Entre outras 50
  • 51. http://www.teses.usp.br/teses/disponiveis/3/314 2/tde-09112005-174258/pt-br.php ● http://www.teses.usp.br/teses/disponiveis/3/314 2/tde-10032005-111137/pt-br.php ● http://libglass.sourceforge.net ● http://www.realidadevirtualeaumentada.com.br 51