clusters para aplicações gráficas
TRANSCRIPT
![Page 1: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/1.jpg)
1
![Page 2: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/2.jpg)
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)
![Page 3: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/3.jpg)
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)
![Page 4: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/4.jpg)
4
Porque pensar em Clusters para
Aplicações Gráficas?
![Page 5: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/5.jpg)
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
![Page 6: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/6.jpg)
6
Porque pensar em clusters paraAplicações Gráficas?
(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
![Page 7: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/7.jpg)
7
![Page 8: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/8.jpg)
8(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
![Page 9: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/9.jpg)
9(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
![Page 10: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/10.jpg)
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.
![Page 11: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/11.jpg)
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
![Page 12: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/12.jpg)
12
Aglomerados ?
![Page 13: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/13.jpg)
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) .
![Page 14: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/14.jpg)
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
![Page 15: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/15.jpg)
15
Aglomerados Gráficos
![Page 16: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/16.jpg)
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.
![Page 17: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/17.jpg)
17
Sincronismo de nós Aglomerados Gráficos (Sistemas distribuídos)
![Page 18: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/18.jpg)
18
Data-lock
![Page 19: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/19.jpg)
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
![Page 20: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/20.jpg)
20
Frame-lock
![Page 21: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/21.jpg)
21
● Usado em sistemas de multi-projeção
● Coerência de cores e geométrica
● Sincronismo de quadros
![Page 22: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/22.jpg)
22
Sincronismo de nós Aglomerados Gráficos
(Parallel Rendering)
![Page 23: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/23.jpg)
23
sort-first
![Page 24: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/24.jpg)
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).
![Page 25: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/25.jpg)
25
sort-last
![Page 26: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/26.jpg)
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.
![Page 27: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/27.jpg)
27
Arquitetura de Sincronização de nós
Cliente/Servidor
![Page 28: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/28.jpg)
28
Distribuição de estimulos
![Page 29: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/29.jpg)
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
![Page 30: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/30.jpg)
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
![Page 31: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/31.jpg)
31
(framework distributed computing)
![Page 32: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/32.jpg)
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
![Page 33: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/33.jpg)
33
![Page 34: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/34.jpg)
34
InstanciaçãoInstanciação
![Page 35: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/35.jpg)
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
![Page 36: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/36.jpg)
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
![Page 37: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/37.jpg)
37
Plugins
![Page 38: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/38.jpg)
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)
![Page 39: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/39.jpg)
39
Barrier
![Page 40: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/40.jpg)
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
![Page 41: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/41.jpg)
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.
![Page 42: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/42.jpg)
42
Shared
![Page 43: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/43.jpg)
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)
![Page 44: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/44.jpg)
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.
![Page 45: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/45.jpg)
45
(1 kb até 64 kb)
![Page 46: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/46.jpg)
46
(128 kb até 4096 kb)
![Page 47: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/47.jpg)
47
Alias
![Page 48: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/48.jpg)
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
![Page 49: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/49.jpg)
49
Aplicações Portadas
![Page 50: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/50.jpg)
50
● Celestia● Extreme tux racer● GLExcess● gl117● Sibenik Cathedral● Entre outras
![Page 51: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/51.jpg)
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
![Page 52: Clusters para Aplicações Gráficas](https://reader034.vdocuments.net/reader034/viewer/2022042714/55611d9cd8b42a98508b48b1/html5/thumbnails/52.jpg)
52
Obrigado!Perguntas?