Particionamento semi-automático de reduções cíclicas para execução em anthill

AUTOR(ES)
DATA DE PUBLICAÇÃO

2006

RESUMO

Extrair 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.

ASSUNTO(S)

mineração de dados (computação) teses computação de alto desempenho. teses processamento eletrônico de dados processamento distribuído teses. banco de dados distribuído teses. computação teses. processamento paralelo (computadores) teses.

Documentos Relacionados