SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
PARALELIZAÇÃO DE ALGORITMOS
DE VISÃO COMPUTACIONAL
CUDA e OpenMP
PARALELIZAÇÃO DE ALGORITMOS
DE VISÃO COMPUTACIONAL
WENDEL DE OLIVEIRA SANTOS
MAURICIOTORRES
Dr. LEONARDO NOGUEIRA MATOS
25/04/2013
Introdução
 O algoritmo da convolução é bastante utilizado na
obtenção de filtros lineares em processamento de
imagens [Gonzalez and Woods 2001] e [Pedrini and
Schwartz 2008].
25/04/20133/19
Problemática Proposta
 Complexidade convolucional 2D é na ordem O(mnMN),
onde m e n são as dimensões da máscara e M e N as
dimensões da imagem;
 Custo elevado e influenciado pelo tamanho das imagens e
das máscaras.
25/04/20134/19
Objetivos
 Reduzir o custo computacional da convolução 2D
utilizando a API OpenMP em programação concorrente e
programação paralela abordando CUDA;
 Ao final, será comparado essas visões com a
implementação sequencial da convolução 2D.
25/04/20135/19
Convolução 2D
 Feita na forma matricial e multiplicação vetorial;
 Na forma matricial, o cálculo do resultado pixel a pixel,
onde cada valor resultante é a soma ponderada da
multiplicação entre os termos da máscara com a imagem
original.
Figura 1: Exemplo gráfico do cálculo da convolução 2D feito intuitivamente.
25/04/20136/19
Convolução 2D
 Na multiplicação vetorial da imagem pela máscara;
 Necessidade de custo de memória elevado;
 Implementado paralelamente é mais vantajoso;
 A soma é feita de forma dois a dois;
 Diminui o custo desta etapa de forma logarítmica.
25/04/20137/19
Algoritmo Utilizando CUDA
 Para realizar a convolução paralela:
 Cada thread fica responsável pelo cálculo de um pixel;
 Uma thread era percorrida a máscara e cada um de seus
elementos foram multiplicado com o valor de endereço
correspondente na imagem original, o resultado desse produto
era somado com o próximo endereço da máscara multiplicado
com o endereço correspondente na imagem até que toda a
máscara fosse percorrida.
25/04/20138/19
Algoritmo Utilizando OpenMP
 Para realizar a convolução concorrente:
 A imagem foi dividida em quadrantes de tamanhos iguais;
 A quantidade de quadrantes é uma exponenciação, ex:
(1,4,9,16);
 Cada thread fica responsável por um quadrante;
 Cada thread tem uma identificação, utilizada no cálculo da
quantidade de quadrantes;
 Cada thread tem seus cálculos privados.
25/04/20139/19
Comparação dos Tempos de Execução dos
Algoritmos
 Paralelo com o Sequencial;
 Concorrente com o Sequencial;
 Utilizado uma máscara de média e uma imagem, cujos
elementos variam de 0 à 127 pixels;
 Fixado o tamanho da imagem em 800x600 pixels e
variado a máscara de 5x5 até 65x65 pixels e obtido os
valores de tempo (em milissegundos) de execução dos
algoritmos paralelo e sequencial. Depois fixada a máscara
em 65x65 pixels e variou-se o tamanho da imagem de
100x100 até 700x700 pixels;
 Foi utilizado linhas de tendência para encontrar o melhor
tempo do algoritmo sequencial em relação ao algoritmo
paralelo e concorrente.
25/04/201310/19
Utilizando CUDA
25/04/201311/19
Utilizando CUDA
 No melhor caso, o tempo de execução sequencial são
58,858 milissegundos mais lento do que o tempo de
execução do algoritmo paralelo, com a largura da máscara
em 1,5421 pixels.
Figura 3: Comparação entre os tempos de execução paralela e sequencial
modificando apenas o tamanho da máscara.
25/04/201312/19
Utilizando CUDA
 No melhor caso, o tempo de execução sequencial são
5,581 milissegundos mais rápidos do que o tempo de
execução do algoritmo paralelo, com a largura da imagem
em 25,64 pixels.
Figura 4: Comparação entre os tempos de execução paralela e sequencial
modificando apenas o tamanho da imagem.
25/04/201313/19
Utilizando OpenMP
25/04/201314/19
Utilizando OpenMP
 O algoritmo sequencial (melhor desempenho possível em
relação ao algoritmo paralelo), com largura da máscara
em 0,1128, são 2,7507 milissegundos mais rápidos.
Figura 6: Comparação entre os tempos de execução concorrente e
sequencial modificando apenas o tamanho da máscara.
25/04/201315/19
Utilizando OpenMP
 Foi encontrada a largura da imagem igual a 0,47550 pixels,
com esse valor, o tempo de execução sequencial são
40,582 milissegundos mais lentos do que o tempo de
execução do algoritmo concorrente.
Figura 7: Comparação entre os tempos de execução concorrente e
sequencial modificando apenas o tamanho da imagem.
25/04/201316/19
Conclusão
 Em CUDA, o desempenho foi muito satisfatório, sendo
bastante superior a implementação sequencial e também
superior a OpenMP. Esse desempenho mostrou-se
apropriado para convolução 2D, com melhoria de
desempenho de cerca de 800% em um dos experimentos
realizados.
25/04/201317/19
Referências
 Gonzalez, R. and Woods, R. (2001). Digital Image
Processing, Prentice Hall, 2th edition.
 Pedrini, H. and Schwartz,W. R. (2008).Análise de Imagens
Digitais: Princípios,Algoritmos e Aplicações, Cengage
Learning.
25/04/201318/19
Perguntas
?
25/04/201319/19

Mais conteúdo relacionado

Semelhante a Algoritmos de Visão Computacional Paralelizados com CUDA e OpenMP

Rede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de FacesRede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de FacesAdilmar Dantas
 
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...Ramon Santos
 
Criando e aplicando modelos de redes neurais e árvores de decisão
Criando e aplicando modelos de redes neurais e árvores de decisãoCriando e aplicando modelos de redes neurais e árvores de decisão
Criando e aplicando modelos de redes neurais e árvores de decisãoUFPA
 
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESC
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESCTrabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESC
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESCJuliano Tiago Rinaldi
 
Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Rogério Cardoso
 
O problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosO problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosEduardo Souza
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Analisador de imagens usando a correlação de Pearson
Analisador de imagens usando a correlação de PearsonAnalisador de imagens usando a correlação de Pearson
Analisador de imagens usando a correlação de PearsonSérgio Vinícius Lucena
 
2008 santiago marchi_cilamce_2008
2008 santiago marchi_cilamce_20082008 santiago marchi_cilamce_2008
2008 santiago marchi_cilamce_2008CosmoSantiago
 
Minha Tese de Doutorado
Minha Tese de DoutoradoMinha Tese de Doutorado
Minha Tese de DoutoradoCarlos Campani
 
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRE
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRECONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRE
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERREUFPA
 

Semelhante a Algoritmos de Visão Computacional Paralelizados com CUDA e OpenMP (20)

Rede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de FacesRede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de Faces
 
D kokubum cnc
D kokubum cncD kokubum cnc
D kokubum cnc
 
Sumarização de Video
Sumarização de VideoSumarização de Video
Sumarização de Video
 
IMRT, sua Implementação no CAT3D
IMRT,  sua Implementação no CAT3DIMRT,  sua Implementação no CAT3D
IMRT, sua Implementação no CAT3D
 
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
TCC: Avaliação de Dependabilidade e Análise de Sensibilidade de uma Plataform...
 
Relatвrio
RelatвrioRelatвrio
Relatвrio
 
Criando e aplicando modelos de redes neurais e árvores de decisão
Criando e aplicando modelos de redes neurais e árvores de decisãoCriando e aplicando modelos de redes neurais e árvores de decisão
Criando e aplicando modelos de redes neurais e árvores de decisão
 
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESC
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESCTrabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESC
Trabalho 1 - Sobre TCC nas áreas da Computação Gráfica - Apresentados na UDESC
 
Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Aplicações de redes neurais 2010
Aplicações de redes neurais 2010
 
Agrupamento espectral
Agrupamento espectralAgrupamento espectral
Agrupamento espectral
 
O problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosO problema do transporte aplicado à grafos
O problema do transporte aplicado à grafos
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Analisador de imagens usando a correlação de Pearson
Analisador de imagens usando a correlação de PearsonAnalisador de imagens usando a correlação de Pearson
Analisador de imagens usando a correlação de Pearson
 
2008 santiago marchi_cilamce_2008
2008 santiago marchi_cilamce_20082008 santiago marchi_cilamce_2008
2008 santiago marchi_cilamce_2008
 
Apostila grafos
Apostila grafosApostila grafos
Apostila grafos
 
Teoria dos grafos
Teoria dos grafosTeoria dos grafos
Teoria dos grafos
 
Deep Learning
Deep LearningDeep Learning
Deep Learning
 
Apostila grafos
Apostila grafosApostila grafos
Apostila grafos
 
Minha Tese de Doutorado
Minha Tese de DoutoradoMinha Tese de Doutorado
Minha Tese de Doutorado
 
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRE
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRECONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRE
CONTROLE MPC MULTIVARIÁVEL COM RESTRIÇÕES USANDO FUNÇÕES DE LAGUERRE
 

Algoritmos de Visão Computacional Paralelizados com CUDA e OpenMP

  • 1. PARALELIZAÇÃO DE ALGORITMOS DE VISÃO COMPUTACIONAL CUDA e OpenMP
  • 2. PARALELIZAÇÃO DE ALGORITMOS DE VISÃO COMPUTACIONAL WENDEL DE OLIVEIRA SANTOS MAURICIOTORRES Dr. LEONARDO NOGUEIRA MATOS 25/04/2013
  • 3. Introdução  O algoritmo da convolução é bastante utilizado na obtenção de filtros lineares em processamento de imagens [Gonzalez and Woods 2001] e [Pedrini and Schwartz 2008]. 25/04/20133/19
  • 4. Problemática Proposta  Complexidade convolucional 2D é na ordem O(mnMN), onde m e n são as dimensões da máscara e M e N as dimensões da imagem;  Custo elevado e influenciado pelo tamanho das imagens e das máscaras. 25/04/20134/19
  • 5. Objetivos  Reduzir o custo computacional da convolução 2D utilizando a API OpenMP em programação concorrente e programação paralela abordando CUDA;  Ao final, será comparado essas visões com a implementação sequencial da convolução 2D. 25/04/20135/19
  • 6. Convolução 2D  Feita na forma matricial e multiplicação vetorial;  Na forma matricial, o cálculo do resultado pixel a pixel, onde cada valor resultante é a soma ponderada da multiplicação entre os termos da máscara com a imagem original. Figura 1: Exemplo gráfico do cálculo da convolução 2D feito intuitivamente. 25/04/20136/19
  • 7. Convolução 2D  Na multiplicação vetorial da imagem pela máscara;  Necessidade de custo de memória elevado;  Implementado paralelamente é mais vantajoso;  A soma é feita de forma dois a dois;  Diminui o custo desta etapa de forma logarítmica. 25/04/20137/19
  • 8. Algoritmo Utilizando CUDA  Para realizar a convolução paralela:  Cada thread fica responsável pelo cálculo de um pixel;  Uma thread era percorrida a máscara e cada um de seus elementos foram multiplicado com o valor de endereço correspondente na imagem original, o resultado desse produto era somado com o próximo endereço da máscara multiplicado com o endereço correspondente na imagem até que toda a máscara fosse percorrida. 25/04/20138/19
  • 9. Algoritmo Utilizando OpenMP  Para realizar a convolução concorrente:  A imagem foi dividida em quadrantes de tamanhos iguais;  A quantidade de quadrantes é uma exponenciação, ex: (1,4,9,16);  Cada thread fica responsável por um quadrante;  Cada thread tem uma identificação, utilizada no cálculo da quantidade de quadrantes;  Cada thread tem seus cálculos privados. 25/04/20139/19
  • 10. Comparação dos Tempos de Execução dos Algoritmos  Paralelo com o Sequencial;  Concorrente com o Sequencial;  Utilizado uma máscara de média e uma imagem, cujos elementos variam de 0 à 127 pixels;  Fixado o tamanho da imagem em 800x600 pixels e variado a máscara de 5x5 até 65x65 pixels e obtido os valores de tempo (em milissegundos) de execução dos algoritmos paralelo e sequencial. Depois fixada a máscara em 65x65 pixels e variou-se o tamanho da imagem de 100x100 até 700x700 pixels;  Foi utilizado linhas de tendência para encontrar o melhor tempo do algoritmo sequencial em relação ao algoritmo paralelo e concorrente. 25/04/201310/19
  • 12. Utilizando CUDA  No melhor caso, o tempo de execução sequencial são 58,858 milissegundos mais lento do que o tempo de execução do algoritmo paralelo, com a largura da máscara em 1,5421 pixels. Figura 3: Comparação entre os tempos de execução paralela e sequencial modificando apenas o tamanho da máscara. 25/04/201312/19
  • 13. Utilizando CUDA  No melhor caso, o tempo de execução sequencial são 5,581 milissegundos mais rápidos do que o tempo de execução do algoritmo paralelo, com a largura da imagem em 25,64 pixels. Figura 4: Comparação entre os tempos de execução paralela e sequencial modificando apenas o tamanho da imagem. 25/04/201313/19
  • 15. Utilizando OpenMP  O algoritmo sequencial (melhor desempenho possível em relação ao algoritmo paralelo), com largura da máscara em 0,1128, são 2,7507 milissegundos mais rápidos. Figura 6: Comparação entre os tempos de execução concorrente e sequencial modificando apenas o tamanho da máscara. 25/04/201315/19
  • 16. Utilizando OpenMP  Foi encontrada a largura da imagem igual a 0,47550 pixels, com esse valor, o tempo de execução sequencial são 40,582 milissegundos mais lentos do que o tempo de execução do algoritmo concorrente. Figura 7: Comparação entre os tempos de execução concorrente e sequencial modificando apenas o tamanho da imagem. 25/04/201316/19
  • 17. Conclusão  Em CUDA, o desempenho foi muito satisfatório, sendo bastante superior a implementação sequencial e também superior a OpenMP. Esse desempenho mostrou-se apropriado para convolução 2D, com melhoria de desempenho de cerca de 800% em um dos experimentos realizados. 25/04/201317/19
  • 18. Referências  Gonzalez, R. and Woods, R. (2001). Digital Image Processing, Prentice Hall, 2th edition.  Pedrini, H. and Schwartz,W. R. (2008).Análise de Imagens Digitais: Princípios,Algoritmos e Aplicações, Cengage Learning. 25/04/201318/19