A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

TerraME HPA BCC390 - Monografia I

Apresentações semelhantes


Apresentação em tema: "TerraME HPA BCC390 - Monografia I"— Transcrição da apresentação:

1 TerraME HPA BCC390 - Monografia I
Relatório de Atividades BCC390 - Monografia I TerraME HPA Apresentado por: Saulo Henrique Cabral Silva

2 Introdução - TerraME Simulador espaço-temporal para problemas da Geo- Ciência. Ele pode ser usado para simular problemas espaciais e não espaciais. O TerraME tem suporte para autômatos celulares, para modelos baseados em agentes e modelos de rede rodando em espaços celulares regulares e irregulares . Desenvolvido em parceria com o INPE, no laboratório TerraLAB Software Livre

3 Justificativa - Nosso Problema
Mudanças ambientais. Modelos ficaram muito complexos. Mais processos começaram a influenciar na dinâmica do modelo. Complexidade de execução dos modelos aumentou muito. A simulação de processos ambientais ou a simulação das interações humano-ambiente são instrumentos de pesquisa de impacto e predição. pesquisadores, empresários, e governos forneçam respostas aos desafios científicos e tecnológicos ligados ao entendimento do funcionamento dos sistemas terrestres, mas para isso eles precisam de ferramentas de modelagem que sejam confiáveis e capazes de capturar a dinâmica e os resultados das dinâmicas das ações da sociedade humana.

4 Justificativa - Nosso Problema
Os modelos passaram a levar muito tempo para serem executados. Muitas iterações e rotinas precisam ser efetuadas. O usuário aguarda muito tempo para obter o resultado. O poder computacional dos novos har- dwares não é utilizado. Os modelos agora devem considerar mais variáveis, mais processos passam a interferir na dinâmica do fenômeno e mais dados são necessários.

5 Objetivo Reduzir o tempo de execução dos modelos.
Tirar o máximo de proveito do hardware. Criar uma API que auxilie o usuário a realizar a paralelização do modelo. As modificações feitas no código, não po- dem impedir que ele seja executado em paralelo. Deve ser rápido, fácil de usar

6 Resolvendo o PROBLEMA

7 Primeiros Passos Trabalhos Correlatos.
Busca por técnicas paralelas que possam auxiliar na paralelização do Kernel TerraME. Bibliotecas utilizadas no Kernel TerraME. Antes de tudo é preciso saber o que é e o que já foi feito parecido, quais tecnologias temos disponíveis.

8 Primeiros Passos – Trabalhos Correlatos
Estudo da documentação da Plataforma TerraME. Busca pelas principais plataformas de simulação existentes atualmente. Comparação das plataformas analisadas com o TerraME. Soluções de um problema semelhante ao nosso, que utilize conceito de processos sendo executados em paralelo (lingu. R). Quais plataformas de simulação mais utilizadas hoje. Como de fato o TerraME Funciona quais principais pontos fortes que podem nos auxiliar.

9 Podemos paralelizar a execução dos modelos ???
O que temos Hoje. Modelo (.lua) TerraME Depois de estudar a construção e os pontos fortes do TerraME, chegamos na seguinte questão como paralelizar esse monstrinho SO

10 Módulo entre o Modelo e o TerraME
O que precisamos. Modelo (.lua) Input: arquivo Lua sequencial Parser Output: arquivo Lua paralelo TerraME Vamos inserir um Parser entre o modelo e o TerraME. SO

11 Pontos fundamentais do TerraME
O TerraME é uma plataforma que corresponde a um conjunto de módulos escritos em C++. Para a implementação do TerraME foram utilizados recursos da biblioteca QT e da biblioteca de integração LUA to C. Uma das partes fundamentais do TerraME é o seu interpretador. O interpretador é responsável por ler um programa escrito na linguagem TerraME (extendida da linguagem LUA). O que realmente nos ajudou a encontrar a solução, foi as ferramentas disponíveis e alguns conceitos desse interpretador

12 Primeiros Passos - Bibliotecas
Utilizando de recursos das Bibliotecas QT e de integração Lua to C. Co-routine, para resolver em nível Lua(fora do Kernel). Primeira solução, vamos tentar não manipular nada em C++, Lua é mais fácil, a literatura me dizia isto

13 Estratégia Co-routine
Gerar novos sub-modelos (.lua auxiliares). Executar cada sub-modelo por uma co-routine. Ao final vamos agrupar os resultados de cada co-routine. Mas co-routine não executam como thread’s (não é concorrente). Elas cooperam entre si. Co-Routine é só um nome bunitinho que enventaram para não fazer nada :p (kkkk). Linguagem de brinquedo.

14 Primeiros Passos - Bibliotecas
Utilizando de recursos das Bibliotecas QT e de integração Lua to C. Co-routine, para resolver em nível Lua(fora do Kernel). QThread Lua_State Lua_Globals O conjunto Qthread e Lua_State. Agora já temos uma forma de manipular thread’s de forma mais fácil e uma forma de encapsular meu código a ser executado em paralelo.

15 Primeiros Passos – Técnicas Paralelas
A técnica utilizada deve reduzir ao máximo o tempo de inatividade do processador. Utilizar estratégia de Bag of Task’s. Restrição de quantidade de Thread’s (processos) executando em uma máquina. Precisamos de uma técnica que nos auxiliasse na paralelização.

16 Desenho da solução em que estamos trabalhando atualmente
Modelo Original passado pelo modelador

17 Desenho da solução em que estamos trabalhando atualmente - questões
Como identificar o que deve ser executado em paralelo ? A solução deve rodar em qualquer versão TerraME(seja paralelo ou seqüencial). A paralisação do modelo deve ser feita de forma fácil e bem intuitiva. O usuário precisa de me ajudar, mas esta ajuda tem que vim de forma a não complicar o seu modelo e de forma que seu modelo executate normalmente ao se aplicado a um kernel paralelo.

18 Desenho da solução em que estamos trabalhando atualmente
Parser Modelo Original passado pelo modelador Parser é responsável por reconhecer a instrumentação que o usuário fez no modelo original e dividir em pequenos Lua_State’s para serem executados em paralelo.

19 Desenho da solução em que estamos trabalhando atualmente
Parser Modelo Original passado pelo modelador Bag of Task’s Após a divisão dos Lua_State’s utilizamos a estrutura de Bag of Task’s para armazenar todas estas tarefas e distribuilas da melhor forma ppossível de modo a reduzir o tempo de inatividade do processador.

20 Desenho da solução em que estamos trabalhando atualmente
Parser Modelo Original passado pelo modelador Bag of Task’s Tarefas encapsuladas por Lua_State’s

21 Desenho da solução em que estamos trabalhando atualmente
Um Modelo será meu “master” Parser Modelo Original passado pelo modelador Bag of Task’s Um dos Lua_State’s será meu Master o que faz as chamadas para os outros Lua_State’s executarem.

22 Desenho da solução em que estamos trabalhando atualmente
Bag of Task’s Waikup() Sleep() Z Z Z Comandos de Waikup e Sleep são definos nas thread’s de modo que essas thread’s sempre tenham tarefas quando estiverem executando e que nenhuma fique parada sendo que o Bag tem tarefa para ser executada. Modelo “master”

23 Desenho da solução em que estamos trabalhando atualmente
Inserção da API TerraME HPA. Comandos HPA FUNCTION PARALLEL JOIN function JOINALL HPA VAR SET var GET var Funções que tiveram que ser definidas na API TerraME HPA, para auxiliar o usuário na paralelização de seu modelo.

24 Exemplo --HPA LIST VAR k = 10; c = “saulo”; --HPA END LIST VAR
--HPA FUNCTION function A() --HPA END FUNCTION function B() --HPA PARALLEL result = A(); result 1 = B(); -- --HPA JOIN A --HPA JOIN B print(result .. ” ” .. result1);

25 Exemplo --HPA LIST VAR k = 10; c = “saulo”; --HPA END LIST VAR
--HPA FUNCTION function A() --HPA END FUNCTION function B() --HPA PARALLEL result = A(); result 1 = B(); -- --HPA JOIN A --HPA JOIN B print(result .. ” ” .. result1); Cada uma destas funções estão encapsuladas por um Lua_State e armazenadas no Bag of Task’s.

26 Cronograma para o próximo Semestre
Atividades AGO SET OUT NOV DEZ 1 X 2 3 4 5 6 7 8 1. Implementar a interface do sistema; 2. Teste comparativo de rendimento; 3. Teste do módulo; 4. Teste integrado do sistema; 5. Elaboração da documentação do sistema; 6. Elaboração do Manual do Usuário; 7. Redigir a Monografia; 8. Apresentação do Trabalho

27 Perguntas???

28 Caso sobre algum tempo apresentar o que foi feito anteriormente.

29 Outro Problema Atualmente o modelador leva muito tempo para calibrar um modelo. Isso pode piorar!!! Se o modelador necessitar de uma calibração mais pre- cisa, é necessário aumen- tar o número de execu- ções do algoritmo (consumindo ainda mais tempo).

30 Método de Monte Carlo O método de Monte Carlo é um dos muitos métodos que realizam análise de propagação de incerteza. Pode-se dizer que o Método de Monte Carlo é semelhan- te a uma amostragem de população real. Os dados gerados para a calibração podem ser represen- tados como distribuições de probabilidade ou converti- dos em barras de erro. 1 – objetiva determinar como a variação aleatória, a falta de conhecimento, ou de erro afeta a sensibilidade do sistema que esta sendo modelado 2 – Tentamos escolher uma distribuição para os insumos que mais se aproxima de dados reais (coletados anteriormente), represente O nosso estado atual. 3 – Fig Model = conjunto de variáveis de entrada para um conjunto de variáveis de saída.

31 Como é a execução do algoritmo de Monte Carlo???
Gerar um conjunto de entradas aleatórias, y = f(X1,X2,...,Xn). X2 X1 X3

32 Como é a execução do algoritmo de Monte Carlo???
Gerar um conjunto de entradas aleatórias, y = f(X1,X2,...,Xn). Execute o modelo e avalie as respostas, Y1,Y2,...,Ym. X2 X1 X3 MODELO Y1

33 Como é a execução do algoritmo de Monte Carlo???
Gerar um conjunto de entradas aleatórias, y = f(X1,X2,...,Xn). Execute o modelo e avalie as respostas, Y1,Y2,...,Ym. Repita os passos 1 e 2 para i = 1 até n. X2 X1 X3 MODELO Y1 Temos que salvar os resultados de cada execução.

34 Como é a execução do algoritmo de Monte Carlo???
Gerar um conjunto de entradas aleatórias, y = f(X1,X2,...,Xn). Execute o modelo e avalie as respostas, Y1,Y2,...,Ym. Repita os passos 1 e 2 para i = 1 até n. Análise os resultados usando histogramas, estatísticas de resumo, intervalos de confiança e etc. (Mínimo e Máximo). X2 X1 X3 MODELO Y1

35 Como paralelizar o algoritmo???
Para executar o algoritmo de Monte Carlo, é necessário primeiramente saber, quantas vezes iremos executar (“quantos experimentos, vamos realizar ???”). X2 X1 X3 MODELO Parte independente. Y1

36 Como paralelizar o algoritmo???
Para executar o algoritmo de Monte Carlo, é necessário primeiramente saber, quantas vezes iremos executar (“quantos experimentos, vamos realizar ???”). Para identificar a variável de número de repetições vamos precisar instrumentar o código LUA, para isso o usuário deve inserir um comentário, X2 X1 X3 MODELO Dessa forma o modelo é executado tanto no TerraME seqüencial quanto no paralelo. Mais liberdade e menos decoreba ;D Y1

37 O processo de Paralelização
1 Precisamos inicialmente descobrir a quantidade de experimentos que deve ser feita na Calibração do modelo (quantos vezes executar o loop).

38 O processo de Paralelização
1 Precisamos inicialmente descobrir a quantidade de experimentos que deve ser feita na Calibração do modelo. Cada Thread (instância do TerraME), deve executar um número X de experimentos. (número de execuções passadas / número de cores) 2 * Supondo que no modelo original, foi passado como parâmetro 10 experimentos e temos uma máquina com 2 cores, vamos ter 2 modelos cada um com 5 experimentos.

39 O processo de Paralelização
1 Precisamos inicialmente descobrir a quantidade de experimentos que deve ser feita na Calibração do modelo. Cada Thread (instância do TerraME), deve executar um número X de experimentos. Ao final da calibração (todas as instâncias terminadas), é preciso escolher o melhor resultado geral (solução que proporciona o menor erro). 2 3

40 Como identificar os parâmetros ???
É feita uma varredura no Modelo (“arquivo .lua”), a pro- cura do seguinte comentário Esse comentário identifica qual a quantidade de execuções (“testes”), devemos realizar para calibrar o modelo usando o Método de Monte Carlo . Para encontrar essa instrumentação utilizamos o método StringTokenizen “tunado”, estamos procurando um padrão.

41 Instâncias Criamos Modelos “auxiliares”. Onde cada um destes novos modelos serão executados por uma instância do TerraME (thread), são iniciadas K Thread’s. O valor da variável correspondente ao número de experimen- tos é alterado em cada um dos novos modelos. (N/K), onde N é a quantidade de testes passado no modelo original e K é a quantidade de cores da máquina onde esta sendo realizada a calibração. O melhor resultado (menor erro) de cada thread é armazena- do. É gerado um arquivo de saída para cada modelo que esta sendo executado (cada thread gera um arquivo).

42 Instâncias Modelo A 5 execuções Modelo Original 10 execuções
Modelo B 5 execuções

43 Finalizando Precisamos resumir todos os resultados.
Compara-se os resultados finais de todas as instâncias do TerraME finalizadas e seleciona-se o menor erro.

44 Calibração Seqüencial
Resultados Experimentos Calibração Seqüencial Calibração Paralela (2 cores) (4 cores) 10000 00:09:58 00:05:02 00:04:01 20000 00:19:45 00:10:05 00:08:10 30000 00:29:28 00:15:15 00:12:46 40000 00:39:31 00:20:04 00:16:33 50000 00:49:19 00:25:44 00:19:53 Redução média 48,9%. Calibração paralela mais rápida que a sequêncial. Redução média de 59,69% Calibração paralela mais rápida que a sequencial Em relação a calibração paralela usando 2 cores, a calibração utilizando 4 cores foi cerca de 11% mais rápida. Tabela do tempo de todos os testes realizados

45 Resultados Pelo gráfico é possível notar que a calibração paralela utilizando 4 cores é mais vantajosa em relação a calibração paralela e a calibração paralela utilizando 2 cores.

46 Resultados Olha o speedup não esta dando linear não!!!!

47 Calibração Seqüencial
Resultados Teste extremo com experimentos. Melhora de 46,75 % para 2 Cores e para 4 Cores 58%. É importante salientar que em todos os testes realizados, o resultado final da calibração em paralelo foi o mesmo da serial. Calibração Seqüencial Calibração Paralelo (2 cores) (4 cores) 01:38:50 00:51:07 00:39:14 Tabela do tempo de execução, experimentos

48 Algoritmo Genético Baseado na idéia de seleção natural.
Uma nova geração guarda caracte- rísticas da anterior. Um indivíduo é considerado uma solução para o problema. Para testar se um indivíduo é bom ou não para a solução, é neces- sário determinar o seu nível de aptidão de sobrevivência. Os Genes de cada individuo, são números binários. Entre os Genes pode ocorrer processos de cruzamento ou de mutação. Cruzamento e mutação

49 Como Paralelizar a Calibração do Algoritmo Genético
Os passos para a paralelização do Método de calibração Genético segue basicamente os mesmos passos da calibração de Monte Carlo. A varredura do Modelo (.lua) é feita, e o padrão a ser procurado é a instrumentação AlgoritmoGenetico(X1, X2, X3, X4, X5, X6, X7). Estamos procurando pelo parâmetro 7, ele indica a quantidade de gerações que serão testadas pelo Método de calibração.

50 Como Paralelizar a Calibração do Algoritmo Genético
Após efetuar a identificação do padrão, e encontrar o valor da quantidade de gerações. Vamos iniciar K instancias do TerraME. (K é o número de cores que o processador da máquina possui). Cada máquina executa (X7 / K) gerações. (lembrando que X7 é a quantidade de gerações passada como parâmetro no modelo original). Ao término da execução das K instâncias do TerraME, devemos retornar o melhor resultado das execuções (temos que comparar todos os resultados).

51 Como Paralelizar a Calibração do Algoritmo Genético
AlgoritmoGenetico(estocastico, matriz, tamPrecisao, Npop, pc, pm, MaxGeracoes) Temos que dividir essa variável

52 Como Paralelizar a Calibração do Algoritmo Genético
AlgoritmoGenetico(estocastico, matriz, tamPrecisao, Npop, pc, pm, MaxGeracoes) Temos que dividir essa variável Thread’s “iniciadas” (Instâncias TerraME’s). Cada instância, que esta rodando, deve executar, (MaxGeracoes/K) gerações. MaxGeracoes = número de gerações passadas no modelo original. K = número de cores da máquina utilizada.

53 Como Paralelizar a Calibração do Algoritmo Genético
AlgoritmoGenetico(estocastico, matriz, tamPrecisao, Npop, pc, pm, MaxGeracoes) Temos que dividir essa variável Thread’s “iniciadas” (Instâncias TerraME’s). Ao término da execução de todas as thread’s temos que encontrar o melhor resultado (menor erro). Cada instância, que esta rodando, deve executar, (MaxGeracoes/K) gerações. MaxGeracoes = número de gerações passadas no modelo original. K = número de cores da máquina utilizada.

54 Calibração Seqüencial
Resultados Experimentos Calibração Seqüencial Calibração Paralela (2 cores) (4 cores) 500 00:32:50 00:16:52 00:13:04 1000 01:05:28 00:35:44 00:25:59 1500 01:44:57 00:53:27 00:39:12 2000 02:16:00 01:15:18 00:52:01 2500 02:43:17 01:30:37 01:05:14 Redução média 46,45%. Melhora média de 61%. Tabela do tempo de todos os testes realizados

55 Resultados

56 Resultados

57 Calibração Seqüencial
Teste Extremo Calibração Seqüencial Calibração em Paralelo (2cores) Paralelo (4cores) 05:28:03 03:01:09 02:10:37 Tempo da execução de um teste extremo Melhora de 46,38% para 2 Cores e 60% para 4 Cores.

58 Perguntas


Carregar ppt "TerraME HPA BCC390 - Monografia I"

Apresentações semelhantes


Anúncios Google