Detalhes bibliográficos
Título da fonte: Repositório Institucional da UFMG
id UFMG_6571bdedbcbeff83a1dc30b53c069442
oai_identifier_str oai:repositorio.ufmg.br:1843/RVMR-78VMDR
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
reponame_str Repositório Institucional da UFMG
instacron_str UFMG
institution Universidade Federal de Minas Gerais (UFMG)
instname_str Universidade Federal de Minas Gerais (UFMG)
spelling Renato Antonio Celso FerreiraDorgival Olavo Guedes NetoWagner Meira JuniorWalfredo da Costa Cirne FilhoJuliano de Castro Santos2019-08-10T20:23:50Z2019-08-10T20:23:50Z2006-08-03http://hdl.handle.net/1843/RVMR-78VMDRExtrair informação de grandes bases de dados é um desafio das novas demandas da Ciência da Computação. Além disso, diversas técnicas de Mineração de Dados são propostas continuamente na literatura. Tais algoritmos são computacionalmente intensivos, além do fato de processarem entradas de dados muito grandes. Assim, há uma nova tendência em direção ao alto desempenho de processamento e montagem de clusters de computadores, a um custo mais razoável que os supercomputadores do passado. Essa tendência nos leva a um cenário em que o alto desempenho é alcançado por eficientes implementações de aplicações paralelas e distribuídas. O Anthill é uma solução para processamento distribuído em clusters de computadores onde um alto desempenho é obtido em execuções eficientes e escaláveis de diversos algoritmos de Mineração de Dados. Ele fornece um framework para o desenvolvimento e a execução de aplicações em ambiente distribuído, onde as aplicações devem ser decompostas em filtros que se comunicam através de streams de dados, como em um pipeline. O processo de desenvolvimento das aplicações entretanto demanda do programador decompor as aplicações, que não é o caminho natural de desenvolvimento dos programas. Este trabalho apresenta uma ferramenta de geração semi-automática de filtros a partir de uma implementação seqüencial do algoritmo. Esse processo é divido em duas etapas: a primeira é o particionamento em filtros do código seqüencial, seguido pela geração do código para cada um dos filtros identificados. Este trabalho tem como foco a segunda etapa, a geração do código. Para a primeira etapa, nós realizamos de forma semi-automática alguns passos a serem automatizados em trabalhos futuros. Esse processo determina as dependências de dados no código, e identifica os pontos de corte do mesmo. A partir deste passo, é gerado uma versão anotada do código seqüencial, contendo as informações para sua divisão em filtros. A geração dos filtros é feita a partir do código anotado. Basicamente, as anotações contêm um grafo direcionado onde os vértices representam os filtros e as arestas representam os dados que são trafegados entre os filtros. Nós implementamos um gerador de código fonte onde a entrada é um algoritmos seqüencial escrito em C e a saída são os filtros, também em C, com as extensões do Anthill. A maioria das adaptações necessárias para Anthill são geradas automaticamente por essa ferramenta. O gerador de código automático foi validado usando três aplicações de Mineração de Dados que já haviam sido implementadas no Anthill. Foram gerados de forma automática o código dos filtros Anthill a partir das versões seqüenciais. Nós avaliamos o desempenho do código gerado e observamos que o resultado é similar ao código gerado manualmente na maioria dos casos. Este é um bom resultado, dado que o custo de implementação do código seqüencial é bem menor do que a implementação paralela dos filtros para o Anthill. Também foram observadas algumas otimizações presentes na implementação manual que podem ser realizadas automaticamente pela ferramenta para obtenção de um resultado mais otimizado. Como trabalhos futuros devemos prosseguir com a automatização de mais otimizações na geração do código.Extracting information from large datasets is one of the challenging new demands in Computer Science. To accomplish that, several Data Mining techniques are being proposed continually in the literature. Such algorithms are computationally intensive, in addition to the fact of having to process very large input data. Besides, the new trend towards high performance computing is gearing towards clusters of computers, a cost effective alternative to the supercomputers of the past. This trend leads to a scenario in which achieving high performance must be accomplished by efficient parallel and distributed implementations of the applications. Anthill is a solution for distributed processing on clusters of workstations for which high performance have been achieved by efficient and scalable implementation of several Data Mining algorithms. In essence, it provides a framework for the development and execution of applications in distributed environments, where the applications must be decomposed into a set of filters that exchange information though streams in a pipeline fashion. The process of developing the applications, however, damands the programmers to perform such application decomposition which may not be the natural way in which they program. This work presents a tool of semiautomatic generation of such fiters from a basic sequential implementation of the algorithms. This process is divided in two stages: the first being the partition into filters of the sequential code, followed by the code generation for each of the identified filters. This work focuses mostly on the latter, the code generation itself. For the first stage, we rely on some semi-automatic steps that could be implemented to be fully automatic in future work. These steps are based on determining data dependencies within the code, and finding good partition places. Using such steps we generate an annotated version of the sequential code, that contains the partitioning information. The actual code generation is accomplished from the annotated code. Basically the annotations encompass a directed graph with vertices representing the filters and edges annotated with the data that should be communicated. We implemented a source-to-source compiler, where the initial sequential code is standard C, and the output is also C, with Anthill extensions. Most of the necessary adaptations for Anthill are generated automatically by our compiler. The compiler was validated using three different Data Mining applications that had previously been developed for Anthill. This time, we generated the Anthill code from sequential versions of the same algorithms. We evaluate the performance of the generated code and we observe that it is very similar to the hand-made implementations in most cases. This is a good result when noted that the effort to design the sequential code is much less than a fully parallel Anthill implementation. We also notice that there are some ad-hoc optimizations on the hand-made codes that could also be accomplished by a compiler in a further optimizing step. We plan to pursue such automatic optimizations as future workUniversidade Federal de Minas GeraisUFMGProcessamento paralelo (Computadores)ComputaçãoBanco de dados distribuídoMineração de dados (Computação)Processamento eletrônico de dados Processamento distribuídoComputação de alto desempenhoanthillParticionamento semi-automático de reduções cíclicas para execução em anthillinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGORIGINALjulianocastrosantos.pdfapplication/pdf757037https://repositorio.ufmg.br/bitstream/1843/RVMR-78VMDR/1/julianocastrosantos.pdfab7080cfe8fb32880ffa9d396e06340dMD51TEXTjulianocastrosantos.pdf.txtjulianocastrosantos.pdf.txtExtracted texttext/plain165502https://repositorio.ufmg.br/bitstream/1843/RVMR-78VMDR/2/julianocastrosantos.pdf.txte518b59bc3cbe8208b5ec3e52f3e4126MD521843/RVMR-78VMDR2019-11-14 03:16:57.643oai:repositorio.ufmg.br:1843/RVMR-78VMDRRepositório InstitucionalPUBhttps://repositorio.ufmg.br/oaiopendoar:2019-11-14T06:16:57Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
_version_ 1813548280994332672