Palestra

925 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
925
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Palestra

  1. 1. 1
  2. 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. 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 3Educacional)
  4. 4. Porque pensar em Clusters paraAplicações Gráficas? 4
  5. 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• GenomaPrototipagem Digital• Aeronáutica• AutomobilismoVisualização e Interpretação• Petróleo• Previsão Numérica de Tempo• Ciências dos Materiais 5
  6. 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. 7
  8. 8. 8(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
  9. 9. 9(http://www.teses.usp.br/teses/disponiveis/3/3142/tde-09112005-174258/pt-br.php
  10. 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. 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
  12. 12. Aglomerados ? 12
  13. 13. Os aglomerados (clusters) de computadoressão um conjunto de computadores, capazesde compartilhar seus recursos, para umobjetivo comum .Específicos no caso de AG que possuemplaca de vídeos ou aglomerados decomputadores convencionais (commoditycomputer clusters) . 13
  14. 14. Um aglomerado écaracterizado por;● Coleção de nós (computadores) 14
  15. 15. Aglomerados Gráficos 15
  16. 16. Os aglomerados utilizados pelas aplicações de RVpossuem hardware projetado específicos, como placasgráficas.Cada nó processa apenas os dados referentes à suaparte de interesse, e então gera a imagem apenasdaquela parte e oferecem para nós de controles Vantagens de uso de um AG● Desempenho proporcional ao número de estaçõesutilizadas● Podendo executar cálculos de grande complexidadenumérica, transacional e gráfica. 16
  17. 17. Sincronismo de nósAglomerados Gráficos(Sistemas distribuídos) 17
  18. 18. Data-lock 18
  19. 19. Data-lock ou sincronismo de dados é responsávelpela coerência dos elementos dinâmicos da cena.Responsável informações em cada nó doaglomerado 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
  20. 20. Frame-lock 20
  21. 21. ● Usado em sistemas de multi-projeção● Coerência de cores e geométrica● Sincronismo de quadros 21
  22. 22. Sincronismo de nósAglomerados Gráficos (Parallel Rendering) 22
  23. 23. sort-first 23
  24. 24. O técnica sort-first realiza adistribuição dos dados antesdo processamentogeométrico na fila deprocessamento gráfica.Cada nó do sistema éresponsável por processaruma parte da imagem finalPara serem visualizadas umaao lado da outra (tiling). 24
  25. 25. sort-last 25
  26. 26. A técnica sort-last realizaa distribuição de pixelsdepois da rasterização(sintetização).Este método permite umasubdivisão das tarefasmuito refinada, o queassegura um melhorbalanceamento de cargaentre os nós. 26
  27. 27. Arquitetura de Sincronização de nós Cliente/Servidor 27
  28. 28. Distribuição de estimulos 28
  29. 29. Os estímulos do nó Mestre são transmitidos para os nós Escravos doaglomerado gráfico (arquitetura com replicação).Quando o usuário gera um estímulo, eg, movimenta o mouse oupressiona uma tecla, este estímulo é enviado para todos os nósEscravos.Ao recebê-lo, os nós executam as rotinas de tratamento para atualizaçãodos dados e geração das imagens; Primitivas de Controle 29
  30. 30. Os estímulos são tratados localmente pelo nó Mestre, sendo osresultados enviados para os nós Escravos, que geram e apresentam asimagens (arquitetura sem Replicação).Esta abordagem é geralmente utilizada quando o problema envolvemuitos cálculos que resultam em poucos dados, como emsimuladores de vôos. Assim, o meio de comunicação do aglomeradográfico é utilizado apenas para transmitir os resultados dos cálculos Primitivas Gráficas 30
  31. 31. (framework distributed computing) 31
  32. 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. 33
  34. 34. Instanciação 34
  35. 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. 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. 37. Plugins 37
  38. 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. 39. Barrier 39
  40. 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. 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. 42. Shared 42
  43. 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; } 43show eg. aroundsimple and helloworld
  44. 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. 45. (1 kb até 64 kb) 45
  46. 46. (128 kb até 4096 kb) 46
  47. 47. Alias 47
  48. 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
  49. 49. Aplicações Portadas 49
  50. 50. ● Celestia● Extreme tux racer● GLExcess● gl117● Sibenik Cathedral● Entre outras 50
  51. 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
  52. 52. Obrigado!Perguntas? 52

×