A. Ciências Exatas e da Terra - 2. Ciência da Computação - 16. Teoria da Computação
DETECÇÃO DE PARALELISMO ATRAVÉS DE GRAFOS DE DEPENDÊNCIAS EM FILTROS CONVOLUCIONAIS
Bruno Lopes1, 2 Eliana Almeida3, 1, 2 Alejandro C. Frery3, 1, 2
1. Centro de Pesquisa em Matemática Computacional - UFAL 2. Instituto de Computação - UFAL 3. Laboratório de Computação Científica e Visualização - UFAL
INTRODUÇÃO:No decorrer de toda a história da computação, desempenho de software sempre foi um fator crucial. De forma a prover uma solução a essa questão, o hardware evoluiu consideravelmente nos últimos anos. Porém, limitações físicas, como a crescente dificuldade de criar componentes menores, frearam essa melhoria de desempenho. Com o uso de algoritmos que exigem cada vez mais recursos computacionais, busca-se uma alternativa para suprir as necessidades de otimização.
Este trabalho propõe uma ferramenta destinada a automatizar a paralelização de filtros de imagens gerados em código R. A proposta discorre em, dado um código R de um filtro de imagem convolucional como entrada, mapeá-lo em um grafo de dependências e, em seguida, produzir um filtro que funcione em paralelo, em código R. Vale ressaltar que os procedimentos definidos são correlatos, independentemente da linguagem de programação adotada.
O intuito é o de facilitar o processo de tradução de código seqüencial para a programação paralela, sem exigir conhecimentos de computação paralela.METODOLOGIA:Como metodologia que conduz o estudo têm-se:
1. Levantamento bibliográfico atualizado de forma a compreender o processo de filtragem convolucional de imagens, a estrutura de grafo de dependências, a linguagem de programação R e o paradigma de computação paralela.
2. Mapeamento do código de um filtro convolucional de imagens (gaussiano) em linguagem R para um grafo de dependências, de forma a analisar as possibilidades de paralelização.
3. Análise de agregação de comandos paralelos de forma a reduzir problemas de comunicação dentre os nós.
4. Proposta de codificação em linguagem R para o filtro paralelizado, com base na análise anterior.
De forma a contemplar a plena execução desse trabalho, utilizam-se como
meios de pesquisa bibliográfica o acesso ao portal de periódicos da Capes (www.
periodicos.capes.gov.br), ao portal ISI Web of Science, a ser acessado a partir do anterior, ao portal Science Direct (www.sciencedirect.com) e ao mecanismo de buscas acadêmicas Google Acadêmico (scholar.google.com). Essa é a fonte primária de referências bibliográficas.
Utiliza-se ao menos um computador com sistema operacional Linux, plataforma
R, disponível a partir de www.r-project.org e o sistema Rmpi, que necessita da interface MPI. Como ferramenta para gerar grafos, o pacote Graphviz.RESULTADOS:Este trabalho iniciou com uma análise dos filtros de imagens convolucionais, de forma a compreender que tipos de estruturas são geralmente encontrados em seus algoritmos. Após esse levantamento, analisou-se quais dessas estruturas são passíveis de paralelização e de que forma. Definiu-se o algoritmo de conversão de um filtro de imagens convolucional seqüencial a um grafo de dependências como cerne deste trabalho, a partir do qual discorreu-se sobre a análise de viabilidade da paralelização.
Através do algoritmo definido, qualquer código seqüencial de um filtro de imagens convolucional pode ser facilmente transposto a um grafo de dependências. A partir deste grafo, ficam explícitas as estruturas passíveis de paralelização.CONCLUSÕES:O uso de um grafo de dependências para representar um filtro gaussiano apresenta redução considerável no número de operações seqüenciais, de 28 a 9 operações por pixel. Em uma imagem com, por exemplo, 1000×1000 pixels, utilizando-se uma máscara de lado ℓ = 3, a economia em um cluster com cem processadores (1 nó master e 99 slaves), o número total de operações seqüenciais se reduz da ordem de 106 a 104. Assim sendo, o ganho no tempo de processamento é significativo e será tanto mais relevante quanto mais interativa for a aplicação, isto é, quando se trata de uma abordagem exploratória.
Com o uso da interface Rmpi, pode-se implementar a comunicação do R com a interface MPI, capaz de gerenciar múltiplos processadores. Dessa forma o código pode ser facilmente paralelizado na plataforma R, podendo também utilizar qualquer outra plataforma de programação que ofereça suporte a programação paralela.
Instituição de fomento: CNPq
Trabalho de Iniciação Científica
Palavras-chave: Grafos de dependências, Detecção de paralelismo, Filtros convolucionais
E-mail para contato: blopesvieira@gmail.com
|
|