71 |
Uma solução paralela de agrupamento de dados em GPU /Souza, Thiago Alexandre Domingues de. January 2017 (has links)
Orientador: Aleardo Manacero Junior / Banca: Alexandro José Baldassin / Banca: Paulo Sérgio Lopes de Souza / Resumo: A indústria de tecnologia da informação tem permitido uma explosão de dados coletados nos últimos anos. Isso ocorreu, entre outros fatores, pela expansão do acesso à rede por meio de uma infinidade de equipamentos. Uma análise detalhada dos dados armazenados pode, por exemplo, extrair informações valiosas sobre o comportamento dos indivíduos, permitindo uma relação personalizada de acordo com os interesses dos usuários. Essa tarefa pode ser feita usando algoritmos de agrupamento de dados. Porém, esse é um processo que requer grande esforço computacional tanto pela ordem de complexidade dos algoritmos existentes como pelos crescentes volumes processados. Nesse contexto, execuções sequenciais não são viáveis e sua paralelização é o caminho natural. Isso exige remodelar algoritmos para explorar o potencial de plataformas massivamente paralelas, de acordo com as particularidades da arquitetura alvo. Neste trabalho se propõe uma implementação paralela do algoritmo Fuzzy Minimals para GPU, como uma solução de alto desempenho e baixo custo para contornar dificuldades frequentes no agrupamento de dados. Com o objetivo de avaliar o desempenho de nossa solução, também desenvolvemos versões paralelas em MPI e OpenMP. Nossos experimentos mostram que a solução para GPU alcança resultados expressivos com um baixo custo, mantendo uma precisão significativa / Abstract: IT industry has witnessed an explosion of data collected for the past few years. This took place, among other factors, due to the expansion of network access through several devices. For example, a detailed analysis of the stored data can extract some valuable information about human behaviors, allowing a customized experience that matches the interests of users . This task can be performed by clustering algorithms. However, this is a time-consuming process due to the asymptotic complexity of existing algorithms and the increasing volumes of data processed. In this context, sequential executions are not feasible and their parallelization is the natural path. This requires redesigning algorithms to take advantage of massively parallel platforms according to the particularities of targeted architectures. In this paper, it is proposed a novel parallel implementation of the Fuzzy Minimals algorithm on GPU, as a high-performance lowcost solution for common clustering issues. In order to evaluate the performance of our implementation, we have also designed parallel versions using MPI and OpenMP. Our experiments show that our parallel solution on GPU can achieve a high performance at a low cost, preserving a significant accuracy / Mestre
|
72 |
Escalonamento on-line eficiente de programas fork-join recursivos do tipo divisão e conquista em MPI / Efficent on-line scheduling of recursive fork-join programs on MPIMor, Stefano Drimon Kurz January 2010 (has links)
Esta Dissertação de Mestrado propõe dois novos algoritmos para tornar mais eficiente o escalonamento on-line de tarefas com dependências estritas em agregados de computadores que usam como middleware para troca de mensagens alguma implementação da MPI (até a versão 2.1). Esses algoritmos foram projetados tendo-se em vista programas construídos no modelo de programação fork/join, onde a operação de fork é usada sobre uma chamada recursiva da função. São eles: 1. O algoritmo RatMD, implementado através de uma biblioteca de primitivas do tipo map-reduce, que funciona para qualquer implementação MPI, com qualquer versão da norma. Utilizado para minimizar o tempo de execução de uma computação paralela; e 2. O algoritmo RtMPD, implementado através de um sistema distribuído sobre daemons gerenciadores de processos criados dinamicamente com a implementação MPICH2 (que implementa a MPI-2). Utilizado para permitir execuções de instâncias maiores de programas paralelos dinâmicos. Ambos se baseiam em roubo de tarefas, que é a estratégia de balanceamento de carga mais difundida na literatura. Para ambos os algoritmos apresenta-se modelagem téorica de custos. Resultados experimentais obtidos ficam dentro dos limites teóricos calculados. RatMD provê uma redução no tempo de execução de até 80% em relação ao algoritmo usual (baseado em round-robin), com manutenção do speedup próximo ao linear e complexidade espacial idêntica à popular implementação com round-robin. RtMPD mantém, no mínimo, o mesmo desempenho que a implementação canônica do escalonamento em MPICH2, dobrando-se o limite físico de processos executados simultaneamente por cada nó. / This Master’s Dissertation proposes two new algorithms for improvement on on-line scheduling of dynamic-created tasks with strict dependencies on clusters of computers using MPI (up to version 2.1) as its middleware for message-passing communication. These algorithms were built targeting programs written on the fork-join model, where the fork operation is always called over an recursive function call. They are: 1. RatMD, implemented as a map-reduce library working for any MPI implementation, on whatever norm’s version. Used for performance gain; and 2. RtMPD, implemented as a distributed system over dynamic-generated processes manager daemons with MPICH2 implentation of MPI. Used for executing larger instances of dynamic parallel programs. Both algorithms are based on the (literature consolidated) work stealing technique and have formal guarantees on its execution time and load balancing. Experimental results are within theoretical bounds. RatMD shows an improvement on the performance up to 80% when paired with more usual algorithms (based on round-robin strategy). It also provides near-linear speedup and just about the same space-complexity on similar implementations. RtMPD keeps, at minimum, the very same performance of the canonical MPICH2 implementation, near doubling the physical limit of simultaneous program execution per cluster node.
|
73 |
Avaliação de Desempenho de uma Plataforma de Componentes Paralelos / Performance Evaluation of a Platform for Component-Based Parallel ProgrammingRezende, Cenez Araújo de January 2011 (has links)
REZENDE, Cenez Araújo de. Avaliação de Desempenho de uma Plataforma de Componentes Paralelos. 2011. 149 f. : Dissertação (mestrado) - Universidade Federal do Ceará, Centro de Ciências, Departamento de Computação, Fortaleza-CE, 2011. / Submitted by guaracy araujo (guaraa3355@gmail.com) on 2016-06-14T17:45:49Z
No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5) / Approved for entry into archive by guaracy araujo (guaraa3355@gmail.com) on 2016-06-14T17:46:36Z (GMT) No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5) / Made available in DSpace on 2016-06-14T17:46:36Z (GMT). No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5)
Previous issue date: 2011 / In order to deal with programming-in-the-large requirements in emerging applications of High Performance Computing (HPC), it is still necessary the development of new software development tools for reconciling high level of abstraction, expressiveness and high performance. The technologies behind CBHPC (Component-Based High Performance Computing) target these requirements, looking for reuse of software parts, interoperability across execution platforms, high development productivity and easy maintenance. However, to reconcile high level of abstraction, high performance and high expressiveness for parallel programming models and patterns when building HPC applications is not trivial. For this reason, most of the current technologies fail in this context, since they adopt the traditional process-oriented perspective in the architecture of parallel programs. The HPE platform (Hash Programming Environment) sits on top of the Hash component model to support general forms of parallelism, by combining high expressiveness with high level of abstraction. The Hash component model proposes a concern-oriented perspective to parallel programming, in alternative to the traditional process-oriented approach. In this context, this dissertation is about the efficacy and efficiency of HPE for HPC applications, also validating some of its parallel programming techniques based on components. For that, a set of programs from NPB (NAS Parallel Benchmarks), a widely disseminated collection of benchmarks for evaluating the performance of parallel computing platforms, written in Fortran, C and Java, have been refactored into components aimed at the HPE platform. In such refactoring, the original structure of the benchmarks has been preserved, with minimal changes in the code that declare and initialize data structures, as well as those that describe computations and communication patterns. Using the component-based versions of the benchmarks, a systematic performance evaluation has been performed for quantifying the overheads caused strictly by the component-based structure. / Reduzir a complexidade do software e permitir o desenvolvimento em larga escala de aplicações voltados à Computação de Alto Desempenho (CAD) tem exigido o desenvolvimento de ferramentas com potencial capacidade de abstração na construção de sistemas. As tecnologias que envolvem o desenvolvimento de componentes procuram alcançar esses requisitos, buscando oferecer suporte a reuso, interoperabilidade, produtividade e maior flexibilidade de manutenção e desenvolvimento de aplicações de alto desempenho. No entanto, conciliar alto poder de abstração com alto poder de expressividade na construção de componentes de aplicações não é algo trivial, o que as atuais tecnologias não têm conseguido solucionar, uma vez que adotam as tradicionais formas de paralelismo por processos. Diante disso, a plataforma HPE (Hash Programming Environment), baseada no modelo de componentes Hash, tem buscado suportar formas mais gerais de paralelismo, conciliando expressividade com alto poder de abstração, uma vez que o modelo Hash é baseado em interesses de software e não em processo, como é feito tradicionalmente. Nesse contexto, esta dissertação busca explorar os recursos do HPE, certificando-se de sua viabilidade no contexto de aplicações de alto desempenho e validando suas técnicas de programação paralela baseadas em componentes. Isso tem resultado em um processo de construção de aplicações científicas sob a abordagem de componentes, tendo como base o conjunto de aplicativos NPB (Nas Parallel Benchmarks), o qual passa por um processo rigoroso de conversão para ser suportado pelo HPE. No processo de conversão e refatoração em componentes, busca-se conservar as estruturas originais do NPB, sem alterações significativas nos códigos que declaram e inicializam as estruturas de dados, bem como os que descrevem computações, topologia de processos e comunicação entre os processos. Para validação da plataforma, uma avaliação sistemática de desempenho é feita, tendo como princípio isolar e mensurar o peso ou o efeito da refatoração do NPB em componentes do modelo Hash.
|
74 |
Avaliação de desempenho de uma plataforma de componentes paralelos / Performance evaluation of a platform for component-based parallel programmingRezende, Cenez Araújo de January 2011 (has links)
REZENDE, Cenez Araújo de. Avaliação de desempenho de uma plataforma de componentes paralelos. 2011. 156 f. Dissertação (Mestrado em ciência da computação)- Universidade Federal do Ceará, Fortaleza-CE, 2011. / Submitted by Elineudson Ribeiro (elineudsonr@gmail.com) on 2016-07-11T12:23:28Z
No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5) / Approved for entry into archive by Rocilda Sales (rocilda@ufc.br) on 2016-07-14T15:51:55Z (GMT) No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5) / Made available in DSpace on 2016-07-14T15:51:55Z (GMT). No. of bitstreams: 1
2011_dis_carezende.pdf: 2377491 bytes, checksum: b262a08dab641ffaa0637237fb5c2a0f (MD5)
Previous issue date: 2011 / In order to deal with programming-in-the-large requirements in emerging applications of High Performance Computing (HPC), it is still necessary the development of new software development tools for reconciling high level of abstraction, expressiveness and high performance. The technologies behind CBHPC (Component-Based High Performance Computing) target these requirements, looking for reuse of software parts, interoperability across execution platforms, high development productivity and easy maintenance. However, to reconcile high level of abstraction, high performance and high expressiveness for parallel programming models and patterns when building HPC applications is not trivial. For this reason, most of the current technologies fail in this context, since they adopt the traditional process-oriented perspective in the architecture of parallel programs. The HPE platform (Hash Programming Environment) sits on top of the Hash component model to support general forms of parallelism, by combining high expressiveness with high level of abstraction. The Hash component model proposes a concern-oriented perspective to parallel programming, in alternative to the traditional process-oriented approach. In this context, this dissertation is about the efficacy and efficiency of HPE for HPC applications, also validating some of its parallel programming techniques based on components. For that, a set of programs from NPB (NAS Parallel Benchmarks), a widely disseminated collection of benchmarks for evaluating the performance of parallel computing platforms, written in Fortran, C and Java, have been refactored into components aimed at the HPE platform. In such refactoring, the original structure of the benchmarks has been preserved, with minimal changes in the code that declare and initialize data structures, as well as those that describe computations and communication patterns. Using the component-based versions of the benchmarks, a systematic performance evaluation has been performed for quantifying the overheads caused strictly by the component-based structure. / Reduzir a complexidade do software e permitir o desenvolvimento em larga escala de aplicações voltados à Computação de Alto Desempenho (CAD) tem exigido o desenvolvimento de ferramentas com potencial capacidade de abstração na construção de sistemas. As tecnologias que envolvem o desenvolvimento de componentes procuram alcançar esses requisitos, buscando oferecer suporte a reuso, interoperabilidade, produtividade e maior flexibilidade de manutenção e desenvolvimento de aplicações de alto desempenho. No entanto, conciliar alto poder de abstração com alto poder de expressividade na construção de componentes de aplicações não é algo trivial, o que as atuais tecnologias não têm conseguido solucionar, uma vez que adotam as tradicionais formas de paralelismo por processos. Diante disso, a plataforma HPE (Hash Programming Environment), baseada no modelo de componentes Hash, tem buscado suportar formas mais gerais de paralelismo, conciliando expressividade com alto poder de abstração, uma vez que o modelo Hash é baseado em interesses de software e não em processo, como é feito tradicionalmente. Nesse contexto, esta dissertação busca explorar os recursos do HPE, certificando-se de sua viabilidade no contexto de aplicações de alto desempenho e validando suas técnicas de programação paralela baseadas em componentes. Isso tem resultado em um processo de construção de aplicações científicas sob a abordagem de componentes, tendo como base o conjunto de aplicativos NPB (Nas Parallel Benchmarks), o qual passa por um processo rigoroso de conversão para ser suportado pelo HPE. No processo de conversão e refatoração em componentes, busca-se conservar as estruturas originais do NPB, sem alterações significativas nos códigos que declaram e inicializam as estruturas de dados, bem como os que descrevem computações, topologia de processos e comunicação entre os processos. Para validação da plataforma, uma avaliação sistemática de desempenho é feita, tendo como princípio isolar e mensurar o peso ou o efeito da refatoração do NPB em componentes do modelo Hash.
|
75 |
Uma linguagem de programação paralela orientada a objetos para arquiteturas distribuídas / A Programming language for parallel object-oriented distributed architecturesPinho, Eduardo Gurgel January 2012 (has links)
PINHO, Eduardo Gurgel. Uma linguagem de programação paralela orientada a objetos para arquiteturas distribuídas. 2012. 77 f. Dissertação (Mestrado em ciência da computação)- Universidade Federal do Ceará, Fortaleza-CE, 2012. / Submitted by Elineudson Ribeiro (elineudsonr@gmail.com) on 2016-07-11T13:44:25Z
No. of bitstreams: 1
2012_dis_egpinho.pdf: 1247267 bytes, checksum: b2db45af231441771b82531797f8c819 (MD5) / Approved for entry into archive by Rocilda Sales (rocilda@ufc.br) on 2016-07-15T13:34:45Z (GMT) No. of bitstreams: 1
2012_dis_egpinho.pdf: 1247267 bytes, checksum: b2db45af231441771b82531797f8c819 (MD5) / Made available in DSpace on 2016-07-15T13:34:45Z (GMT). No. of bitstreams: 1
2012_dis_egpinho.pdf: 1247267 bytes, checksum: b2db45af231441771b82531797f8c819 (MD5)
Previous issue date: 2012 / In object-oriented programming (OOP) languages, the ability to encapsulate software concerns of the dominant decomposition in objects is the key to reaching high modularity and loss of complexity in large scale designs. However, distributed-memory parallelism tends to break modularity, encapsulation, and functional independence of objects, since parallel computations cannot be encapsulated in individual objects, which reside in a single address space. For reconciling object-orientation and distributed-memory parallelism, this work introduces OOPP (Object-Oriented Parallel Programming), a style of OOP where objects are distributed by default. As an extension of C++, a widespread language in HPC, the PObC++ language has been designed and protoyped, incorporating the ideas of OOPP. / Em programação orientadas a objetos (POO) , a habilidade de encapsular interesses de software da dominante decomposição em objetos é a chave para alcançar alto nível de modularidade e diminuição de complexidade em projetos de larga escala. Entretanto, o paralelismo de memória distribuída tende a quebrar modularidade, encapsulamento e a independência de objetos, uma vez que as computações paralelas não podem ser encapsuladas em objetos individuais, os quais residem em um espaço de endereçamento único. Para reconciliar orientação a objetos e paralelismo em memória distribuída, esse trabalho introduz a PPOO (Programação Paralela Orientada a Objetos), um estilo de POO onde objetos são distribuídos por padrão. Como uma estensão do C++, uma linguagem consolidada em CAD, a linguagem PObC++ foi projetada e prototipada, incorporando as ideias da PPOO.
|
76 |
Coordenação e reconfiguração dinâmica de componentes em uma plataforma de computação paralela / Coordination and dynamic reconfiguration of components in a parallel computing platformSales, Juliano Efson Norberto January 2012 (has links)
SALES, Juliano Efson Norberto. Coordenação e reconfiguração dinâmica de componentes em uma plataforma de computação paralela. 2012. 144 f. Dissertação (Mestrado em ciência da computação)- Universidade Federal do Ceará, Fortaleza-CE, 2012. / Submitted by Elineudson Ribeiro (elineudsonr@gmail.com) on 2016-07-11T17:31:37Z
No. of bitstreams: 1
2012_dis_jensales.pdf: 3112116 bytes, checksum: e6dad36307eb52f19a718046ca764535 (MD5) / Approved for entry into archive by Rocilda Sales (rocilda@ufc.br) on 2016-07-18T15:42:23Z (GMT) No. of bitstreams: 1
2012_dis_jensales.pdf: 3112116 bytes, checksum: e6dad36307eb52f19a718046ca764535 (MD5) / Made available in DSpace on 2016-07-18T15:42:23Z (GMT). No. of bitstreams: 1
2012_dis_jensales.pdf: 3112116 bytes, checksum: e6dad36307eb52f19a718046ca764535 (MD5)
Previous issue date: 2012 / Long running applications are very common in High Performance Computing (HPC) domains. During the execution of this kind of application, some improvements or corrections can be identified and applied without making invalid the data that has been processed. In these cases, the ability to make changes in a parallel program during execution is considered useful. Dynamic reconfiguration is the term used to describe this technique, which can be implemented using different alternatives, like architecture description languages (ADL). An ADL allows a the specification of a software based on exogenous conectors to combine and define data types and protocols for orchestrating the interaction between components. This research has the goal of designing an ADL and implementing a configuration interpretation environment for the HPE component-based parallel computing platform. The main purpose of this language is to provide the ability to specify exogenous connectors and support dynamic reconfiguration. Case studies evaluate the performance of the component interpretation developed by the ADL, as well as validate the actions of dynamic reconfiguration. The results are an evidence that the overhead in the interpretation process for realistic problem instances is acceptable, in such a way that, when used wisely, the connectors can be used even in production scenarios. In some cases, the interpretation weight can be disregarded. The reconfiguration experiments are also deemed satisfactory, making the simplicity of the mechanism the major draw of the solution. / Nos domínios da Computação de Alto Desempenho (CAD), são comuns aplicações com tempo de execução de longa duração. Durante a execução de uma aplicação dessa natureza, podem ser identificadas melhorias ou correções nos algoritmos em execução que não invalidam o processamento previamente realizado. Neste cenário, a capacidade de realizar modificações em tempo de execução se mostra de grande utilidade. A esta técnica chamamos reconfiguração dinâmica, a qual, dentre outros meios discutidos ao longo do trabalho, pode ser implementada a partir do uso de linguagens de propósito específico como as linguagens de descrição de arquitetura (ADL). Uma ADL permite a especificação de um sistema de software a partir da construção de conectores exógenos com a função de combinar e definir os formatos de dados e protocolos nas interações de componentes. Este trabalho de pesquisa tem como objeto o projeto de uma ADL e a implementação de um ambiente de interpretação de configuração para a plataforma de componentes paralelos HPE (Hash Programming Environment). Essa linguagem tem como principal propósito oferecer a capacidade de especificar conectores exógenos e suporte à reconfiguração dinâmica. Estudos de caso avaliam o desempenho da interpretação dos componentes desenvolvidos pela ADL, como também validam as operações de reconfiguração dinâmica. Os resultados mostram sobrecarga considerada aceitável no processo de interpretação, para instâncias realísticas de problemas, de forma que, quando utilizado com prudência, os conectores podem ser utilizados até mesmo em cenários de produção. Em alguns casos, o peso da interpretação chega a ser desprezível. Os ensaios de reconfiguração também se mostram satisfatórios para os requisitos apresentados, sendo um dos principais diferencias da solução, a simplicidade de uso do mecanismo.
|
77 |
Contratos formais para derivação e verificação de componentes paralelos / Formal contracts for derivation and verification of parallel componentesMarcilon, Thiago Braga January 2012 (has links)
MARCILON, Thiago Braga. Contratos formais para derivação e verificação de componentes paralelos. 2012. 156 f. Dissertação (Mestrado em ciência da computação)- Universidade Federal do Ceará, Fortaleza-CE, 2012. / Submitted by Elineudson Ribeiro (elineudsonr@gmail.com) on 2016-07-12T18:10:13Z
No. of bitstreams: 1
2012_dis_tbmarcilon.pdf: 1474623 bytes, checksum: e61fb07d3a835088ff5a53d4eb684f2d (MD5) / Approved for entry into archive by Rocilda Sales (rocilda@ufc.br) on 2016-07-22T12:39:34Z (GMT) No. of bitstreams: 1
2012_dis_tbmarcilon.pdf: 1474623 bytes, checksum: e61fb07d3a835088ff5a53d4eb684f2d (MD5) / Made available in DSpace on 2016-07-22T12:39:34Z (GMT). No. of bitstreams: 1
2012_dis_tbmarcilon.pdf: 1474623 bytes, checksum: e61fb07d3a835088ff5a53d4eb684f2d (MD5)
Previous issue date: 2012 / The use of cloud computing to offer High Performance Computing (HPC) services has been widely discussed in the academia and industry. In this respect, this dissertation is included in the context of designing a cloud computing platform for the development of component-based parallel computing applications, referred as cloud of components. Many important challenges about using the cloud of components relate to parallel programming, an error-prone task due to synchronization issues, which may lead to abortion and production of incorrect data during execution of applications, and the inefficient use of computational resources. These problems may be very relevant in the case of long running applications with tight timelines to obtain critical results, quite common in the context of HPC. One possible solution to these problems is the formal analysis of the behavior of the components of an application through the cloud services, before their execution. Thus, the users of the components may know if a component can be safely used in their application. In this scenario, formal methods becomes useful. In this dissertation, it is proposed a process for specification and derivation of parallel components implementation for the cloud of components. This process involves the formal specification of the components behavior through contracts described using the Circus formal specification language. Then, through a refinement and translation process, which takes the contract as a start point, one may produce an implementation of a component that may execute on a parallel computing platform. Through this process, it becomes possible to offer guarantees to developers about the components behavior in their applications. To validate the proposed idea, the process is applied to contracts that have been described based on two benchmarks belonging to the NAS Parallel Benchmarks, widely adopted in HPC for evaluate the performance of parallel programming and computing platforms. / A aplicação de nuvens computacionais para oferecer serviços de Computação de Alto Desempenho (CAD) é um assunto bastante discutido no meio acadêmico e industrial. Esta dissertação está inserida no contexto do projeto de uma nuvem computacional para o desenvolvimento e execução de aplicações de CAD baseadas em componentes paralelos, doravante denominada nuvem de componentes. Um dos principais desafios na sua utilização consiste no suporte à programação paralela, tarefa bastante suscetível à erros, pois tais erros podem levar, ao longo do desenvolvimento, a problemas de sincronização de processos, que podem causar abortamento da execução e a produção de dados incorretos, bem como a problemas relacionados ao uso ineficiente dos recursos computacionais. É importante que tais problemas sejam tratados no caso de aplicações de longa duração cujo respeito a um cronograma para obtenção de resultados é crítico, aplicações estas bastante comuns no contexto de CAD. Uma possível solução para tais problemas consiste na verificação do comportamento e das propriedades dos componentes na nuvem, antes que seja feita a sua execução, tornando possível que os usuários dos componentes da nuvem saibam se um componente pode ser utilizado com segurança em sua aplicação. Nesse cenário, o uso de métodos formais surge como uma alternativa atraente. A contribuição desta dissertação consiste em um processo de derivação e verificação de propriedades de componentes na nuvem. Tal processo envolve a especificação formal do comportamento dos componentes por meio de contratos descritos pela linguagem Circus. Então, através de um processo de refinamento e tradução tendo como ponto de partida o contrato, chega-se à implementação de um componente para execução sobre uma plataforma de computação paralela. Através desse processo, torna-se possível oferecer garantias aos desenvolvedores em relação ao comportamento dos componentes no contexto de suas aplicações. Para a prova de conceito, o processo é aplicado sobre a especificação "papel-e-caneta" de dois benchmarks do NAS Parallel Benchmarks, IS e CG, bastante difundidos na área de CAD.
|
78 |
Simulação do sistema imunológico humano por meio de modelagem multiagente paralela / Simulation of the human immune system in modeling multi-agent means of parallelMartins, Fábio Rodrigues 04 December 2015 (has links)
Submitted by Marco Antônio de Ramos Chagas (mchagas@ufv.br) on 2016-04-29T08:54:54Z
No. of bitstreams: 1
texto completo.pdf: 2586171 bytes, checksum: 35bda2aae8a23a13663ca9387bd0044b (MD5) / Made available in DSpace on 2016-04-29T08:54:54Z (GMT). No. of bitstreams: 1
texto completo.pdf: 2586171 bytes, checksum: 35bda2aae8a23a13663ca9387bd0044b (MD5)
Previous issue date: 2015-12-04 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior / Este trabalho apresenta uma proposta de modelagem do sistema imunológico (SI) humano. Mais especificamente, propõe a modelagem do SI por meio de sistema multiagente paralelo. O ser humano é exposto a uma quantidade imensurável de agentes não-próprios no decorrer de um dia. O fato de não sermos afetados pe- los mesmos se deve ao SI, uma vez que atua para manter a homeostase (equilíbrio orgânico). Então, estudar o comportamento deste sistema é fundamental, já que de- scobertas nesta área impactam na vida de todas as pessoas. Uma forma de investigar o comportamento do SI é por meio de simulações computacionais (experimentação in-silico). Mas, como o SI é grande e complexo, demanda muito processamento. Esta característica impõe algumas restrições para estas simulações, já que até o momento uma geração de frameworks que estava disponível, no mercado, eram os ABMS (do inglês Agent-basead mod-eling and simulation), que são indicados para testes mais simples. Por este motivo, neste trabalho foi utilizado o framework Flame que se enquadra na geração HPC (do inglês High Performance Computing). Este framework é usado para programação paralela com alto poder computacional. No entanto, para agilizar ainda mais o resultado dos experimentos, em uma parte do modelo, foi utilizada a programação para placa gráfica (GPU). A comparação entre a implementação deste trabalho e de outro SI artificial - o AutoSimmune aponta que a abordagem multiagente paralelo é superior aos ABMS antigos. / The research presented this dissertation deals with the human immune system (IS) simulation. More specifically, about modeling the IS by parallel multi-agent systems. Human beings are exposed to an immeasurable number of threatening microorgan- isms everyday. The fact of not being affected by these same is due to the IS, since it operates to maintain homeostasis (organic balance). Thus the study this system behavior is essential, as discoveries in this area may have impact on the lives of all people. One way to investigate the IS behavior is by means of computer simulations (experiment in-silico). But as the IS is very large and complex it requires a lot of computing power.The emergence of agent oriented systems has provided an alterna- tive approach to address many complex problems similar to the immune system, that requires distributed behavior, local decisions, and emerging global behavior from the interactions of their basic elements. However, despite providing a suitable tool for modeling complex distributed systems, implementations of multi-agent systems are limited by the available hardware architecture. A recent possibility to circumvent this problem is the use of graphics cards to implement such systems. Nevertheless, these devices reach the optimal performance when agents have homogeneous and simple behavior, which might not be the case of many problems. Systems such as simulators of the immune system, in addition to having a large number of agents with complex behavior, those agents communicate massively, indirectly, through dissemination of various substances in their environment. Diffusion of substances is something easily simulated in modern current graphics cards, but the problem is to provide the results of those simulations to thousands (or millions) of agents simultaneously. Therefore in this study we used the Flame framework. This frame- work is used for parallel programming with self computational power. However, to further expedite the result of the experiment, in a part of the model program was used for the graphic card. The comparison between the implementation of this work and another immune system points out that the parallel multi-agent approach is superior to the sequential implementation.
|
79 |
Um arcabouço baseado em componentes para computação paralela de larga escala sobre grafos / A component-oriented framework for large-scale parallel processing of big graphsRezende, Cenez Araújo de January 2017 (has links)
REZENDE, Cenez Araújo de. Um arcabouço baseado em componentes para computação paralela de larga escala sobre grafos. 2017. 170 f. Tese (Doutorado em Ciência da Computação)-Universidade Federal do Ceará, Fortaleza, 2017. / Submitted by Jonatas Martins (jonatasmartins@lia.ufc.br) on 2017-09-26T11:26:26Z
No. of bitstreams: 1
2017_tese_carezende.pdf: 3113868 bytes, checksum: 730860f5d4afc3f76981695e2d925c7c (MD5) / Approved for entry into archive by Rocilda Sales (rocilda@ufc.br) on 2017-09-26T12:43:31Z (GMT) No. of bitstreams: 1
2017_tese_carezende.pdf: 3113868 bytes, checksum: 730860f5d4afc3f76981695e2d925c7c (MD5) / Made available in DSpace on 2017-09-26T12:43:31Z (GMT). No. of bitstreams: 1
2017_tese_carezende.pdf: 3113868 bytes, checksum: 730860f5d4afc3f76981695e2d925c7c (MD5)
Previous issue date: 2017 / Faced with the increasing growth of data production to be processed by computer systems, a result of the current technological context and emerging applications of both industrial and scientific interest, researchers and companies have been looking for solutions to leverage large-scale data processing and analysis capacity. In addition to the large volume, many of these data must be processed by high-complexity algorithms, highlighting the inherent difficulties of problems in large graphs (BigGraph), often used to model information from large databases. Although with limitations in graph processing, the MapReduce model has motivated the construction of several high-performance frameworks, in order to meet the demand for efficient large-scale general purpose systems. Such a context has led to the proposal of more specialized solutions, such as Pregel and GAS (Gather, Apply, Scatter), as well as MapReduce extensions to deal with graph processing. However, frameworks that implement these models still have limitations, such as multi-platform constraints and general propose programming models for graphs. In this work, we show how component-oriented parallel programming can deal with MapReduce and conventional Pregel constraints. For that, we have employed HPC shelf, a component-based cloud computing platform for HPC services. On top of this platform, we introduce Gust, a flexible, extensible and adaptable BigGraph framework based on MapReduce. Besides the gains in software architecture, due to the use of a component-oriented approach, we have obtained competitive performance results compared to the state-of-the-art through an experimental study, using estatistical methods to increase confidence. / Diante do progressivo crescimento da produção de dados a serem processados por sistemas de computação, produto do contexto tecnológico vigente e de aplicações emergentes tanto de interesse industrial quanto científico, têm-se buscado soluções para alavancar a capacidade de processamento e análise de dados em larga escala. Além de volumosos, estão propícios a serem processados por algoritmos
de alta complexidade, destacando as dificuldades inerentes a problemas em grafos grandes (BigGraph), frequentemente usados para modelar informações de grandes bases de dados. O modelo MapReduce, embora com limitações nesse domínio, abriu o caminho para a construção de vários arcabouços de alto desempenho, buscando atender à demanda por eficiente processamento de larga escala com propósito geral. Isso motivou o surgimento de soluções mais especializadas, voltadas a grafos, tais como os modelos Pregel e GAS (Gather, Apply, Scatter), bem como extensões do próprio MapReduce. Contudo, arcabouços que implementam esses modelos possuem ainda limitações, como restrições a multiplataformas e modelos mais gerais de programação. Neste trabalho, mostramos como a programação paralela orientada a
componentes pode lidar com as limitações MapReduce e de modelos convencionais Pregel. Isso é feito usando a HPC Shelf, uma plataforma de computação em nuvem baseada em componentes para serviços HPC. Visando essa plataforma, apresentamos o Gust, um arcabouço BigGraph flexível, extensível e adaptável baseado em MapReduce. Através de estudo experimental, os resultados têm sido competitivos
com o estado da arte, tanto em desempenho com na engenharia de software paralelo, com base em interesses funcionais e não funcionais.
|
80 |
Yali : uma extensão do modelo linda para programação paralela em redes heterogêneas / Yali, an extension to the linda model intended for parallel programming in heterogeneous computer networksCharao, Andrea Schwertner January 1996 (has links)
Com a disponibilidade de redes que ligam estações cada vez mais poderosas a baixos custos, o interesse em torno de ferramentas que suportam a programação paralela em arquiteturas deste tipo tem aumentado significativamente. Esta dissertação trata do projeto e implementação de YALI (Yet Another Linda Implementation), uma ferramenta destinada ao desenvolvimento e execução de programas paralelos em redes heterogêneas de computadores. Com o objetivo de oferecer uma interface simples e flexível para os usuários programadores, YALI baseia-se no modelo Linda[GEL85], que destaca-se por utilizar uma abstração de alto nível para a cooperação entre processos. Em Linda, processos interagem por intermédio de uma memória associativa logicamente compartilhada, denominada Espaço de Tuplas. Entre outras vantagens deste modelo pode-se citar a simplicidade de suas primitivas e a possibilidade de incorporá-las a uma linguagem seqüencial conhecida, o que contribui fortemente para sua fácil assimilação, mesmo por usuários com pouca experiência em programação paralela. Após uma descrição detalhada do modelo Linda, este trabalho discute varias questões envolvidas no projeto e implementação de sistemas nele baseados. Para oferecer uma visão pratica das soluções mais freqüentemente adotadas para estas questões, quatro sistemas que implementam o modelo para programação paralela em redes são apresentados e avaliados. São eles: Glenda, uma implementacao do modelo baseada na ferramenta PVM (Parallel Virtual Machine); POSYBL (PrOgramming SYstem for distriButed appLications), um sistema construído através de recursos de sistemas operacionais compatíveis com Unix; p4-Linda, construído a partir da ferramenta de programação paralela p4 e, por fim, Network-Linda, uma implementação comercial do modelo. Depois do estudo dos quatro sistemas acima, o projeto de YALI e discutido detalhadamente. Decidiu-se, inicialmente, que YALI deveria incorporar o modelo Linda a linguagem C, que é largamente utilizada no desenvolvimento de programas de propósito geral. Além disso, optou-se por estender o modelo com algumas novas primitivas, de modo a oferecer maior poder de expressão ao usuário. Basicamente, as primitivas que YALI acrescenta ao modelo servem para dar suporte a operações globais e a criação dinâmica de threads. Operações globais servem para expressar a comunicação e a sincronização entre múltiplos processos, sendo utilizadas com bastante freqüência em vários tipos de programas paralelos. YALI suporta operações globais de maneira totalmente ortogonal ao modelo Linda, garantindo melhor desempenho sem afetar o nível de abstração oferecido. o suporte a criação dinâmica de threads, por outro lado, tem o objetivo de permitir a exploração de um paralelismo de granularidade fina, adequado ate mesmo a execução de rotinas simples em paralelo. Para suportar o desenvolvimento e execução de aplicações paralelas, YALI e implementado através de três componentes distintos. O primeiro e um pré-processador, que garante uma interface simplificada com o usuário. 0 segundo e uma biblioteca, que contem as rotinas de suporte as primitivas YALI e deve ser ligada aos programas de usuários. O terceiro componente, por fim, e um utilitário destinado a controlar a inicialização e o termino de aplicações paralelas, que baseia-se em uma configuração estabelecida pelo usuário para distribuir processos sobre uma rede de computadores. Ao contrário da maioria dos sistemas baseados em Linda, YALI implementa um espaço de tuplas distribuído entre os processos que compõem uma aplicação paralela, dispensando o use de processos especializados no gerenciamento de tuplas. Para isso, YALI utiliza múltiplas threads em cada processo definido pelo usuário, e distribui tuplas sobre estes processos através de um mecanismo baseado em hashing. A implementação de YALI leva em conta a heterogeneidade inerente a ambientes de rede, permitindo que maquinas com diferentes arquiteturas e sistemas operacionais sejam utilizadas na execução de programas paralelos. Por fim, YALI é totalmente implementado a partir de recursos presentes em sistemas compatíveis com Unix, de modo a aumentar sua portabilidade e garantir sua eficiência. / With the availability of networks connecting powerful workstations at a low cost, increasing interest has been devoted to systems that support parallel programming in such architectures. This document describes the design and implementation of YALI (Yet Another Linda Implementation), a tool that allows the development and execution of parallel programs in heterogeneous computer networks. Aiming to provide a simple and flexible interface for its users, YALI is based on the Linda parallel programming model[GEL85], that outstands in providing a high level abstraction for cooperation between processes. In Linda, communication and synchronization take place through an associative, logically shared memory called Tuple Space. Among the advantages of this model, one can mention the simplicity of its primitives, and the possibility of incorporate them in a well-known sequential language. These characteristics make Linda easy to learn, even to users with little experience in parallel programming. After a detailed description of the Linda model, this document discusses some design and implementation issues related to Linda-based systems. In order to provide a practical view of some usual solutions to address these issues, four Linda-based systems are presented and evaluated. These systems are: Glenda, an implementation of Linda built on top of PVM (Parallel Virtual Machine); POSYBL (PrOgramming SYstem for distriButed appLications), that relies on features provided by Unix-like operating systems to implement the model; p4-Linda, built on top of p4 parallel programming tool and, at last, Network-Linda, a comercial product based on Linda. All these systems, as YALI, are specially tailored to parallel programming in computer networks. Following the study of the four systems, this documents presents the design of the YALI system. One of the first design decisions was to incorporate the Linda primitives to the C language, that is broadly used as a general purpose programming language. In addition, a set of new primitives was designed as an extension to the original model, in order to increase YALI's expressivenes. Basically, the new primitives support global operations and dynamic thread creation. Global operations are useful to express communication and synchronization among multiple processes, and are frequently used many classes of parallel programs. YALI gives support to global operations in a way that is totally ortoghonal to the Linda model, ensuring better performance without affecting the abstraction level inherent to Linda-based systems. The support to dynamic thread creation, on the other hand, is helpful to explore lightweight parallelism, which allows the execution of simple routines in parallel. To support the development and execution of parallel applications, YALI is made up of three distinct components. The first is a pre-processor, that provides a simple user interface. The second is a library, that must be linked to the user programs since it's where YALI primitives are actuall y implemented. Finally, the third component is an utility that controls initialization and termination of parallel applications, which takes configuration parameters from the user to distribute processes over a newtork. In contrast with most Linda-based systems, YALI relies on a tuple space that is distributed among the processes in the same parallel application, so that intermediate tuple managers are not necessary To implement that, multiple threads are embedded in each user process, and tuples are spread over the processes in the basis of a hashing mechanism. YALI's implementation takes in account the inherent heterogeneity of network environments, allowing machines with different architectures and operating systems to be used in the execution of parallel programs. Finally, YALI is build on top of common features of Unix-like operating systems, in order to increase its efficiency and portability.
|
Page generated in 0.0435 seconds