USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS

Documentos relacionados
Uso de Paralelismo de Dados em Algoritmos de Processamento de Imagens Utilizando Haskell

Linguagens para Programação Paralela. October 26, 2010

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente

USO DE PARALELISMO DE DADOS EM ALGORITMOS DE PROCESSAMENTO DE IMAGENS UTILIZANDO HASKELL

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

Bibliografia em processamento paralelo

Programação Funcional

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

What is? Eduardo Viola Nicola Disciplina de IPPD

Uma introdução ao Apache Hama

OpenMP: Variáveis de Ambiente

Modelagem de ferramentas focadas em ontologias para a EaD baseadas em teorias sociais e agentes inteligentes

Uso da Computação Paralela Distribuída para Melhoria no Tempo de Processamento de Imagens Médicas

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Paralelismo em Computadores com Tecnologia Multicore

Implementação de um escalonador de processos em GPU

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Arquitetura de Sistemas Digitais

Implementação de algoritmos para consultas de segmentos em janelas

Introdução à Computação: Sistemas de Computação

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Pontifícia Universidade Católica Federal do Rio de Santa Grande Catarina do Sul

COMPILADORES PROGRAMA E BIBLIOGRAFIA

Suporte à Execução Eficiente de Aplicações em Plataformas com Paralelismo Multi-Nível

UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

Introdução à Computação: Sistemas de Computação

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Carlos Eduardo Batista Centro de Informática - UFPB

PCC104 - Projeto e Análise de Algoritmos

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

iversidade Federal do Rio Grande do Sul PARALELISMO NA LINGUAGEM HASKELL Vagner Franco Pereira Rodrigo Machado Lucas Mello Schnorr

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Sistemas Distribuídos

Implementação da Especificação de Tempo Real Java para o EPOS

Padronização da interface dos Sistemas da UFOP

Escalonamento de Aplicações BoT em Ambiente de Nuvem

Sistemas Distribuídos e Paralelos

ARQUITECTURA DE COMPUTADORES 2013/2014 2º SEMESTRE

Organização de Computadores II. Arquiteturas MIMD

SSC510 Arquitetura de Computadores. 6ª aula

UMA AUTENTICAÇÃO SEGURA USANDO BLUETOOTH PARA A PLATAFORMA ANDROID

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

Arquiteturas de Computadores. Programa de Pós-Graduação em Ciência da Computação. Plano da aula. Histórico. Quatro gerações

Parallel Computing Paradigms

PCC104 Projeto e Análise de Algoritmos

Avaliação de Desempenho

TITULO: Implementação do alinhamento de proteínas em GPU utilizando OpenCL PROPOSTA DE TRABALHO DE GRADUAÇÃO

Pesquisa Científica. Oficina de Capacitação para Desenvolvimento da Pesquisa Científica. Profa. Dra. Caroline K. Luvizotto

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Universidade Federal de Ouro Preto

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO

Disciplina de Organização de Computadores Digitais

UMA IMPLEMENTAÇÃO PARALELA DO ALGORITMO DE EVOLUÇÃO DIFERENCIAL AUTOADAPTATIVO

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Compressão Adaptativa de Arquivos HTML em Ambientes de Comunicação Sem Fio

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Escalonamento de Programas MPI-2: Divisão-e-Conquista com Work Pushing e Work Stealing

Introdução ao OpenMP

Disc. Scientia. Série: Ciências Naturais e Tecnológicas, S. Maria, v. 7, n. 1, p ,

Computação Paralela (CUDA)

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Processamento Paralelo Utilizando GPU

SISTEMAS DISTRIBUÍDOS

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Processamento Paralelo

Otimização de Algoritmos de Processamento de Imagens Médicas Utilizando a Computação Paralela

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

Ferramentas para Programação em Processadores Multi-Core

Sistemas Digitais INE 5406

Programação Concorrente e Paralela

SSC0112 Organização de Computadores Digitais I - Turma 2

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Linguagem Funcional Haskell

Processamento de áudio em tempo real utilizando dispositivos não convencionais:

Cérebro humano versus Computador digital

Programação Concorrente e Paralela. Noemi Rodriguez

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp.

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Concorrência em Processos

Sumário. Referências utilizadas. Introdução. MAFIA: Merging of Adaptive Finite Intervals. Introdução Visão Geral e Objetivos do MAFIA

Análise de Desempenho de Estratégias de Particionamento de Grafos

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Noções de compilação

Teoria da Computação (BBC244)

Construindo Jogos Digitais para apoiar o Ensino de Matemática e Ensinar a Construir e Testar Sistemas Concorrentes

Noções de compilação

ANÁLISE DE DESEMPENHO DA APLICAÇÃO DE BALANCEAMENTO DE CARGA EM BENCHMARK SINTÉTICOS 1. Bruna Schneider Padilha 2, Edson Luiz Padoin 3.

Microarquiteturas Avançadas

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais

Transcrição:

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS Aluno: Pedro Ribeiro Mendes Júnior Matrícula: 08.2.4114 Orientador: Lucília Camarão de Figueiredo Ouro Preto 26 de setembro de 2011

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS Proposta de monografia apresentada ao curso de Bacharelado em Ciência da Computação, Universidade Federal de Ouro Preto, como requisito parcial para a conclusão da disciplina Monografia I (BCC390). Aluno: Pedro Ribeiro Mendes Júnior Matricula: 08.2.4114 Orientador: Lucília Camarão de Figueiredo Ouro Preto 26 de setembro de 2011

Resumo O projeto busca explorar oportunidades de uso de paralelismo de dados em algoritmos voltados para processamento de imagens, com o objetivo de obter algoritmos mais eficientes para essas aplicações. Para isso, propomos desenvolver algoritmos de processamento de imagem usando a linguagem funcional Haskell, em particular Data Parallel Haskell, uma extensão do compilador GHC e de suas bibliotecas, que oferece suporte para paralelismo aninhado com foco na utilização de CPUs multicore. Os dados de tempo de execução dos algoritmos desenvolvidos serão medidos e comparados com o de outras implementações existentes. No caso dessas comparações indicarem bons resultados, planeja-se, como trabalho futuro, a implementação de uma biblioteca de funções para processamento de imagens com enfoque em paralelismo, a qual deverá ser útil para implementação eficiente de várias aplicações na área. Palavras-chave: Paralelismo de dados. Processamento digital de imagens. Data Parallel Haskell.

Sumário 1 Introdução 1 2 Justificativa 2 3 Objetivos 3 3.1 Objetivo geral................................ 3 3.2 Objetivos específicos............................ 3 4 Metodologia 4 5 Cronograma de atividades 5

Lista de Tabelas 1 Cronograma de Atividades......................... 5

1 Introdução Este trabalho visa estudar oportunidades de explorar a capacidade de processamento paralelo dos computadores modernos, com o objetivo de obter algoritmos mais eficientes para aplicações de processamento de imagens. A arquitetura dos computadores modernos, inclusive PCs, é baseada em múltiplos processadores, sendo um exemplo particularmente importante o de unidades de processamento gráfico (GPUs) [6], constituídas de dezenas de processadores, e altamente eficientes para a manipulação de imagens gráficas. A estrutura altamente paralela de GPUs as torna também mais efetivas do que as CPUs de propósito geral para algoritmos nos quais pode ser explorado o processamento de grandes blocos de dados em paralelo. Várias formas de paralelismo podem ser exploradas na execução de programas. O mais comum é o paralelismo de controle, no qual se criam explicitamente threads que executam paralelamente e cujo processamento é sincronizado por meio de mensagens, locks ou outros mecanismos de sincronização [8]. O paralelismo de dados consiste na execução simultânea de uma mesma instrução em diferentes porções de um conjunto de dados, sendo esta abordagem particularmente promissora para o emprego de grande número de processadores [2]. O trabalho pioneiro de Blelloch em NESL [1] mostrou que é possível combinar um modelo de programação bastante flexível - nested data paralelism - com um modelo de execução eficiente e de grande escalabilidade - flat data paralelism -, ampliando o leque de possibilidades para explorar paralelismo em programas. Essa abordagem é implementada em Data Parallel Haskell [3], o framework de programação que propomos utilizar para o desenvolvimento deste projeto, e que consiste em uma extensão do compilador GHC [4] da linguagem Haskell [5] e de suas bibliotecas, de maneira e embutir na linguagem paralelismo de dados aninhado. Uma área na qual parece ser particularmente fértil explorar essa forma de paralelismo para obter implementações mais eficientes é a área de processamento de imagens. Alguns exemplos de sucesso na implementação de algoritmos paralelos para processamento de imagens são reportados, por exemplo, em [7, 9]. 1

2 Justificativa O projeto pretende apresentar contribuições relativas a uma questão extremante atual e importante, que consiste em estudar, desenvolver e avaliar técnicas para explorar a capacidade de processamento dos computadores modernos, com arquitetura baseada em múltiplos processadores, no sentido de obter algoritmos e implementações mais eficientes de programas. 2

3 Objetivos 3.1 Objetivo geral O objetivo geral do projeto é explorar oportunidades de uso de paralelismo de dados aninhados para a implementação eficientes de algoritmos. 3.2 Objetivos específicos Identificar algoritmos de processamento de imagem para os quais possam ser obtidas implementações mais eficientes, por meio do uso de paralelismo. Identificar o tipo de paralelismo mais adequado em cada caso. Obter implementações paralelas eficientes desses algoritmos, que possam ser usadas em aplicações reais. Obter evidências a favor ou contra o argumento de que linguagens funcionais são particularmente apropriadas para a implementação de paralelismo. 3

4 Metodologia 1. Estudos dos diversos modelos de paralelismo, incluindo paralelismo de controle, paralelismo de dados, e paralelismo de dados aninhados. 2. Seleção de aplicações interessantes de processamento de imagens, que possam apresentar melhoria de eficiência se implementadas usando paralelismo. 3. Instalação e configuração de plataformas de desenvolvimento, em particular, Data Parallel Haskell. 4. Estudo da linguagem e bibliotecas de Data Parallel Haskell. 5. Implementação de alguns algoritmos selecionados no item 2. 6. Comparação entre a implementação desenvolvida neste projeto e implementações que não exploram paralelismo, e também com outras implementações pararelas eventualmente existentes. 7. Avaliação dos resultados obtidos, em termos de eficiência, tipo de paralelismo explorado, novas oportunidades de paralelismo, etc. 8. Redação de relatório técnico/artigo descrevendo o trabalho desenvolvido e seus resultados. 4

5 Cronograma de atividades As atividades estão planejadas para serem realizadas de acordo com a Tabela 1. Atividades Ago Set Out Nov Dez Estudo dos diversos modelos de paralelismo X X Seleção de aplicações X X X X Estudo das bibliotecas X X X Implemetação de algoritmos X X X X Comparações entre implementações X X Avaliação dos resultados X X Redigir a monografia X X Apresentação do trabalho X Tabela 1: Cronograma de Atividades. 5

Referências [1] Guy E. Blelloch. Programming parallel algorithms. Communications of the ACM, 39(3):85 97, 1996. [2] Manuel M. T. Chakravarty, Gabriele Keller, Sean Lee, Trevor L. McDonell, and Vinod Grover. Accelerating haskell array codes with multicore gpus. In Proc. of Declarative Aspects of Multicore Programming, 2011. [3] Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon Peyton Jones, Gabriele Keller, and Simon Marlow. Data parallel haskell: a status report. In Proc. of ACM Workshop on Declarative Aspects of Multicore Programming, Nice, 2007. [4] The Glasgow Haskell Compiler. http://haskell.org/haskellwiki/ghc. [5] Simon Peyton Jones. Haskell report. Technical report, Cambridge University Press, 2003. [6] Rainer Keller, David Kramer, and Jan-Philipp Weiss, editors. Facing the Multicore- Challenge. Aspects of New Paradigms and Technologies in Parallel Computing Series. Lecture Notes in Computer Science, first edition, 2010. [7] Ben Lippmeier, Gabriele Keller, and Simon Peyton Jones. Efficient parallel stencil convolution in haskell. In Proc. of International Conference on Functional Programming, 2011. [8] Peter Pacheco. An Introduction to Parallel Programming. Morgan Kaufmann, first edition, 2011. [9] F. J. Seinstra and D. C. Koelma. User transparency: A fully sequential programming model for efficient data parallel image processing. Concurrency and Computation: Practice and Experience, 16(6):611 644, 2004. 6