clusters para aplicações gráficas

52
1

Upload: gustavo-jordan

Post on 24-May-2015

997 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Clusters para Aplicações Gráficas

1

Page 2: Clusters para Aplicações Gráficas

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

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

4

Porque pensar em Clusters para

Aplicações Gráficas?

Page 5: 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

Page 6: Clusters para Aplicações Gráficas

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

7

Page 8: Clusters para Aplicações Gráficas

8(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php

Page 9: Clusters para Aplicações Gráficas

9(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php

Page 10: Clusters para Aplicações Gráficas

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

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

12

Aglomerados ?

Page 13: Clusters para Aplicações Gráficas

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

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

15

Aglomerados Gráficos

Page 16: Clusters para Aplicações Gráficas

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

17

Sincronismo de nós Aglomerados Gráficos (Sistemas distribuídos)

Page 18: Clusters para Aplicações Gráficas

18

Data-lock

Page 19: Clusters para Aplicações Gráficas

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

20

Frame-lock

Page 21: Clusters para Aplicações Gráficas

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

22

Sincronismo de nós Aglomerados Gráficos

(Parallel Rendering)

Page 23: Clusters para Aplicações Gráficas

23

sort-first

Page 24: Clusters para Aplicações Gráficas

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

25

sort-last

Page 26: Clusters para Aplicações Gráficas

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

27

Arquitetura de Sincronização de nós

Cliente/Servidor

Page 28: Clusters para Aplicações Gráficas

28

Distribuição de estimulos

Page 29: Clusters para Aplicações Gráficas

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

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

31

(framework distributed computing)

Page 32: Clusters para Aplicações Gráficas

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

33

Page 34: Clusters para Aplicações Gráficas

34

InstanciaçãoInstanciação

Page 35: Clusters para Aplicações Gráficas

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

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

37

Plugins

Page 38: Clusters para Aplicações Gráficas

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

39

Barrier

Page 40: Clusters para Aplicações Gráficas

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

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

42

Shared

Page 43: Clusters para Aplicações Gráficas

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

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

45

(1 kb até 64 kb)

Page 46: Clusters para Aplicações Gráficas

46

(128 kb até 4096 kb)

Page 47: Clusters para Aplicações Gráficas

47

Alias

Page 48: Clusters para Aplicações Gráficas

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

49

Aplicações Portadas

Page 50: Clusters para Aplicações Gráficas

50

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

Page 51: Clusters para Aplicações Gráficas

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

52

Obrigado!Perguntas?