Uma Ferramenta para o Desenvolvimento de Modelos de Simulaç
Transcrição
Uma Ferramenta para o Desenvolvimento de Modelos de Simulaç
Uma Ferramenta para o Desenvolvimento de Modelos de Simulação Integrado ao Ambiente Grid G.R. Berkenbrock1 , P.J. Freitas Filho1 1 Departamento de Informática and Estatı́stica (INE) Universidade Federal de Santa Catarina (UFSC) 88040-900, Florianópolis, Brasil {gianr,freitas}@inf.ufsc.br Abstract. The increase of computational capacity the study in the areas of high performance computing has grown. Areas as grid computing and parallel and distributed discrete simulation are a demonstration of this necessity when using coordinate resources in network. In particular, the grid computing is having a bigger approach for the newness that it presents. For use the grid computing new programs have appeared to explore it. One kind of use of the grid computing would be to process distributed or parallel discrete simulations. This paper is considering a tool to create models of discrete simulation integrated to a grid computing. Resumo. Com o aumento de capacidade computacional tem crescido o estudo nas áreas de computação de alto desempenho. Áreas como ambientes em grid e simulação discreta paralela e distribuı́da são uma demonstração desta necessidade de se utilizar coordenadamente recursos interligados em rede. Em particular, os ambientes em grid estão tendo um enfoque maior pela novidade que ele apresenta. Com o surgimento desses ambientes, novos programas tem aparecido para explorá-lo. Um tipo de utilização do ambiente grid seria a de processar simulações discretas distribuı́das ou paralela e para isso está se propondo uma ferramenta para criar modelos de simulação discreta conectada ao ambiente grid. 1. Introdução Com o aumento de capacidade computacional que está ocorrendo no mercado, ambientes de alto desempenho estão tornando-se cada vez mais populares. Um dos tipos de programas que necessitam desse poder computacional são os programas voltados a executar modelos de simulação discreta no menor tempo possı́vel. Para atingir esse objetivo existe a abordagem para executar os modelos de forma paralela ou distribuı́da. Pode-se ressaltar duas das vantagens em se executar um modelo em paralelo/ distribuı́do sobre a execução em modo seqüencial: (1) tempo de execução reduzido e (2) tolerância a falha em tempo de execução. Cabe destacar que para esse processamento do programas em paralelo, se faz o uso de protocolos de sincronização. Esses são responsáveis em executar os eventos na ordem correta. Contudo, esses programas precisam de um ambiente de alto desempenho para executar. Neste estudo foram escolhidos os ambientes em cluster e os ambientes em grid, onde a ênfase está no segundo citado. O ambiente em grid é focado em prover um alto desempenho e no compartilhamento de recursos geograficamente distribuı́dos. Na atualidade, se um usuário desejar construir um modelo de simulação para ser executado no grid, ele precisaria ser conhecedor, não apenas da área em questão para a construção do modelo, mas também de lógica e linguagem de programação. A pouca oferta de ambientes de modelagem integrados com grid para o públicoalvo (modeladores) faz com que a execução de modelos de simulação fiquem restritos a usuários com conhecimento muito especı́fico, o que não deixa o modelador se preocupar com o mais importante, que é a modelagem. Neste contexto é que se insere essa proposta de pesquisa. Este artigo esta organizado da seguinte forma. A seção 2 apresenta a fundamentação teórica abordando conceitos da computação de alto desempenho. Na seção 3 são apresentados fundamentos da simulação discreta paralela e distribuı́da. A seção 4 aborda a proposta de um ambiente integrado com grid, apresenta questões de projeto e o que se almeja alcançar. Por fim, na seção 5 são apresentados os comentários finais. 2. Computação de Alto Desempenho Atualmente tem aumentado a demanda por poder computacional para os programas, que tenham a finalidade de resolver problemas crı́ticos/complexos, e obter suas respostas no menor tempo possı́vel [Pitanga, 2003, Patterson and Hennessy, 2003, Sulistio et al., 2003]. Em adição, temos que freqüentemente os programas necessitam de mais poder computacional do que um computador seqüencial pode prover [Buyya, 1999]. Mas conforme [Maccabe, 1993], nem sempre é óbvio como milhares de processadores podem resolver um dado problema. Portanto, para tentar suprir estas necessidades, iniciou-se o desenvolvimento das máquinas paralelas. Essa área, que já tem algumas décadas de experiência, demonstrou claramente seus fatores crı́ticos, por exemplo, largura de banda, latência das redes e gerenciamento [Sterling, 2001, Buyya, 1999]. Segundo os autores [Meredith et al., 2003, Apon et al., 2001, Vaughan et al., 2003, van der Steen, 2003, Buyya, 1999], o custo de máquinas paralelas é relativamente alto. Desta forma, foi desenvolvida uma opção mais barata e tão potente quanto as máquinas paralelas, denominado cluster (agregado) de computadores. Na linha de evolução no desenvolvimento da computação de alto desempenho surgiu, em meados dos anos de 1990, o conceito de grid, que é uma proposta de infra-estrutura de computação distribuı́da para a ciência e a engenharia avançada [Foster and Kesselman, 1999]. 2.1. Computação em Cluster Um cluster ou agregado é um conjunto de computadores independentes que são conectados através de uma rede de interconexão de alta/baixa latência, trabalhando cooperativamente para resolver um determinado problema/tarefa. Dessa maneira, o usuário tem a noção de que todos esses computadores são apenas um [Pitanga, 2003, Patterson and Hennessy, 2003, Maccabe, 1993, Buyya, 1999]. Atualmente, ele tem se tornado uma opção de uso para as empresas, universidades e centros de pesquisa [De Rose and Navaux, 2004]. 2.2. Computação em Grid A computação em grid, conforme mencionado em [Dantas, 2002], pode ser definida como computação paralela geograficamente distribuı́da. Esse conceito completa a definição de Foster[Foster and Kesselman, 1999], onde um grid computacional é definido como uma infra-estrutura de computadores e programas que provê um acesso confiável, coerente, difundido e econômico à um potencial computacional final. Completando, Foster em [Foster et al., 2001] comenta que a computação em grid está preocupada com o compartilhamento de recursos coordenados e comprometida com problemas em organizações virtuais(OV) [Foster et al., 2001]. 3. Simulação Discreta Paralela e Distribuı́da A Simulação discreta paralela e distribuı́da é uma tecnologia que possibilita a execução de modelos em sistemas computacionais paralelos/distrbuı́dos. [Fujimoto, 2000]. Uma simulação paralela é focada para ser executada em multiprocessadores. A simulação distribuı́da está voltada a executar os modelos em computadores geograficamente distribuı́dos [Fujimoto, 1999]. Existem alguns fatores que influenciam a execução dos modelos em múltiplos computadores. Fujimoto [Fujimoto, 2000, Fujimoto, 1999] e Zeigler [Zeigler et al., 2000] listam alguns deles como: redução no tempo de execução/aumento de velocidade, aumento no tamanho do modelo, interoperabilidade e compartilhamento de recursos, integração de simuladores que executam em computadores de diferentes fornecedores, tolerância a falhas. Em [Fujimoto, 2000], Fujimoto menciona que atualmente duas classes de aplicações da simulação tem ganho mais atenção: Simulações Analı́ticas e Ambientes Virtuais. As aplicação de simulações analı́ticas normalmente estão preocupadas em capturar dados detalhados sobre o sistema que será simulado. Esse tipo de aplicação ainda requer que o modelo reproduza com a máxima exatidão o comportamento do sistema a ser simulado para que as estatı́sticas geradas sejam válidas. É a forma clássica de simulação.Nos ambientes virtuais, o objetivo central é o de dar a sensação aos usuários de estarem inseridos no sistema modelado. Quase sempre este tipo de aplicação incluem a participação dos usuários como entidades dentro da simulação. Mas cabe salientar que nem tudo é perfeito, problemas podem ser encontrados no momento da execução tanto no modelo quanto na configuração adotada para realizar a execução. Murphy em seu artigo [Murphy and Perera, 2002] comenta alguns sucessos e falhas no desenvolvimento de simulações. Bagrodia em [Bagrodia, 1996] comenta algumas ciladas que devem ser evitadas pelo analista para conseguir projetar uma implementação paralela eficiente como: cuidado com variáveis compartilhadas, atenção com ponteiros para estruturas de dados, ciclos com delay zero, lookahead pobre, carga sem equilı́brio nos nós, alto tráfico de mensagens, baixo paralelismo. Fishwick em seu livro [Fishwick, 1995] menciona que em geral todos os tipos de modelos seriam apropriados para executá-los em paralelo. Mas na prática os melhores modelos para serem executados em paralelos são os modelos espaciais e os funcionais. Para executar os modelos através dos programas, de simulação discreta, nos ambientes paralelos/dsitribuı́dos existem duas abordagens de protocolos de sincronização quanto ao tipo de particionamento do modelo e ao objetivos pretendidos da execução. A primeira abordagem, denominada Single Replication In Parallel (SRIP), possibilita a execução de um modelo em paralelo de uma única replicação. Já a segunda abordagem, denominada Multiple Replication In Parallel (MRIP), possibilita a execução em paralelo mas de várias replicações. Para executar usando a abordagem SRIP, o modelo é particionado em processos lógicos (PL), os quais são mapeados como processos fı́sicos. Os processos lógicos se comunicam através de mensagens contendo o tempo e o evento deste determinado tempo [Fujimoto, 2000, Zeigler et al., 2000, Niewiadomska-Szynkiewicz and Sikora, 2002]. Já no sistema MRIP, todo o modelo está em um processo lógico que está mapeado à um pro- cesso fı́sico e que troca informações sobre suas estatı́sticas obtidas com um controlador mestre. 4. Simulador Visual Um protótipo de uma ferramenta de edição gráfica está sendo desenvolvido para auxiliar na geração de código-fonte de programas de simulação discreta. Esta também poderá ser usada como auxı́lio no ensino da simulação discreta seqüencial, paralela e distribuı́da. O código-fonte gerado por essa ferramenta gráfica será de programas que a priori serão executados em ambientes grid. Esse ambiente está em fase de desenvolvimento no PerformanceLab(http://www.performancelab.inf.ufsc.br). O ambiente grid do laboratório utiliza a ferramenta Globus [University of Chicago, 2004] para o middleware grid e a ferramenta OSCAR [Open Cluster Group, 2003, Mattson, 2001] para o gerenciamento do cluster, o qual no momento conta com três computadores. A ferramenta gráfica irá utilizar de algum padrão de “desenho” para a representação do modelo que irá ser simulado. Existem as seguintes opções que possam ser adotadas: fluxograma(figura 1), Arena-like(figura 2) e diagrama de atividade da Unified Modelling Language (UML)(figura 3). Ela também fará uso de programas ou bibliotecas de código-fonte aberto para obter maior produtividade no desenvolvimento. A ferramenta será de código-aberto para permitir o compartilhamento do conhecimento com a comunidade e também para facilitar o recebimento de crı́ticas e sugestões. Figure 1: Exemplo de um fluxograma Figure 2: Exemplo de um fluxograma no estilo Arena Para o desenvolvimento da interface gráfica, onde o usuário (modelador) irá trabalhar, existem três opções: 1. Desenvolver uma infra-estrutura necessária; Figure 3: Diagrama de Atividade da UML[Borland Corporation, 2004] Figure 4: IsaViz 2. Utilizar uma biblioteca para essa finalidade, por exemplo JHotDraw[sit, 2004]; 3. Especializar o IsaViz[Pietriga, 2004] (figura 4) para ficar mais amigável de se utilizar, como apresenta a figura 5 realizado por [Veiga and Porto, 2004]. Para gerar o programa que representará o modelo, existem as seguintes possibilidades: 1. Desenvolver uma biblioteca para esse fim (Sequencial/Paralela/Distribuı́da/Grid); 2. Utilizar uma biblioteca (código-aberto) de terceiro. A linguagem de programação do programa-alvo deverá ser C++, portanto a biblioteca deverá ser nessa linguagem ou ter suporte para ela. A opção de se usar C++ é de se tentar alcançar o melhor desempenho possı́vel em tempo de execução e também pelo suporte de bibliotecas de troca de mensagens. A linguagem Java será apenas utilizada para o desenvolvimento da interface. A arquitetura do projeto deverá atender da melhor maneira o usuário. Portanto, o programa funcionará de acordo com a figura 6. O usuário terá a possibilidade de modelar tanto no portal do grid quanto em um outro computador onde estará instalado o programa. Para executar, no ambiente grid, o usuário irá enviar as definições do modelo pro portal, Figure 5: mIsaViz que então gerará o programa e o executará. Será enviado apenas as definições para exigir menos da máquina do usuário, pois dessa maneira ele precisará apenas da ferramenta e de mais nenhum programa em especial. Caso o usuário queira executar localmente, isto é, em sua máquina, existirá a opção de gerar o código-fonte em seu computador, mas para executar ele precisará de um compilador C++ e um determinado conjunto de bibliotecas, por exemplo, biblioteca de suporte estatı́stico e matemático ou bibliotecas de troca de mensagens. O modo como o programa será executado no grid ainda precisa ser definido. Pois para executar o programa precisa definir os protocolos de sincronização que serão utilizados e também qual ferramenta/bilbioteca de troca de mensagens que será utilizada. No entanto, deve estar previsto no projeto da ferramenta a troca de protocolos ou adição de novos que poderão aparecer. Figure 6: Demonstração do uso do simulador visual ligado ao grid 5. Comentários Finais Neste trabalho apresenta-se um projeto de pesquisa que propõe o encaminhamento de uma solução ao problema da pouca oferta de ambientes gráficos para a criação de modelos de simulação discreta integrados com ambientes grid. Para isto, pretende-se desenvolver uma ambiente gráfico para a criação e edição de modelos de simulação para rodar em ambientes grid. Para tentar alcançar esse objetivo está sendo desenvolvimento um protótipo da ferramenta. Esse protótipo deverá gerar alguma documentação que servirá como base para trabalhos futuros. References (2004). Jhotdraw. http://www.jhotdraw.org/. Apon, A., Buyya, R., Jin, H., and Mache, J. (2001). Cluster computing in the classroom: Topics, guidelines, and experiences. In The First IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2001), pages 476–483. Bagrodia, R. (1996). Perils and pitfalls of parallel discrete-event simulation. In Winter Simulation Conference, pages 136–143. Borland Corporation (2004). The uml practical guide. http://www.borland.com/. Buyya, R., editor (1999). High Performance Cluster Computing: Architectures and Systems, volume 1. Prentice Hall. Dantas, M. (2002). Tecnologias de Redes de Comunicação e Computadores. Axcel Books do Brasil Editora. De Rose, C. A. F. and Navaux, P. O. A. (2004). Fundamentos de processamento de alto desempenho. In ERAD 2004 - 4a. Escola Regional de Alto Desempenho, pages 41–66. Fishwick, P. A. (1995). Simulation Model Design and Execution: Building digital worlds. Prentice-Hall. Foster, I. and Kesselman, C., editors (1999). The Grid: Blueprint for a New Computing Infrastructure. Morgan Kaufmann. Foster, I., Kesselman, C., and Tuecke, S. (2001). The anatomy of the grid: Enabling scalable virtual organizations. International Journal of High Performance Computing Applications, 15(2):200–222. http://www.globus.org/research/papers/anatomy.pdf. Fujimoto, R. M. (1999). Parallel and distributed simulation. In Proceedings of the 31st conference on Winter simulation, pages 122–131. ACM Press. Fujimoto, R. M. (2000). Parallel and Distributed Simulation Systems. Wiley-Interscience. Maccabe, A. B. (1993). Computer Systems: architecture, organization and programming. McGraw-Hill, New York. Mattson, T. G. (2001). High performance computing at intel: the oscar software solution stack for cluster computing. In First IEEE/ACM International Symposium on Cluster Computing and the Grid, pages 22–25. Meredith, M., Carrigan, T., Brockman, J., Cloninger, T., Privoznik, J., and Williams, J. (2003). Exploring beowulf clusters. J. Comput. Small Coll., 18(4):268–284. Murphy, S. and Perera, T. (2002). Successes and failures in uk/us development of simulation. Simulation Practice and Theory 9, 9:333–348. Niewiadomska-Szynkiewicz, E. and Sikora, A. (2002). Algorithms for distributed simulation - comparative study. In International Conference on Parallel Computing in Electrical Engineering, pages 261–266. Open Cluster Group (2003). Oscar : Open source cluster application resources. http://oscar.openclustergroup.org/. Patterson, D. A. and Hennessy, J. L. (2003). Arquitetura de Computadores: Uma abordagem quantitativa. Campus, Rio de Janeiro, 3 edition. tradução de Vanderberg D. de Souza. Pietriga, E. (2004). Isaviz: http://www.w3.org/2001/11/IsaViz/. A visual authoring tool for rdf. Pitanga, M. (2003). Computação em Cluster. Brasport. Sterling, T. (2001). An introduction to pc clusters for high performance computing. International Journal of High Performance Computing Applications, 15(2):92–101. http://ejournals.ebsco.com/direct.asp?ArticleID=J4H09A7A169BUCJ6547Y. Sulistio, A., Yeo, C. S., and Buyya, R. (2003). A taxonomy of computer-based simulations and its mapping to parallel and distributed systems simulation tools. International Journal of Software: Practice and Experience. University of Chicago (2004). The globus toolkit. http://www-unix.globus.org/toolkit/. van der Steen, A. J. (2003). An evaluation of some beowulf clusters. Cluster Computing, 6(4):287–297. http://dx.doi.org/10.1023/A:1025791808283. Vaughan, F. A., Grove, D. A., and Coddington, P. D. (2003). Communication performance issues for two cluster computers. In Proceedings of the twenty-sixth Australasian computer science conference on Conference in research and practice in information technology, pages 171–180. Australian Computer Society, Inc. Veiga, D. F. and Porto, L. M. (2004). Metabolic http://www.intelab.ufsc.br/genomica/misaviz/index.html. isaviz project. Zeigler, B. P., Praehofer, H., and Kim, T. G. (2000). Theory of Modeling and Simulation: Integrating Discrete Event and Continuous Complex Dynamic Systems. Harcourt India Private Limited, second edition.