SlideShare uma empresa Scribd logo
PARALELIZAÇÃO DE ALGORITMO
DO PRODUTO ESCALAR
CUDA e OpenMP
PARALELIZAÇÃO DE ALGORITMO
DO PRODUTO ESCALAR
WENDEL DE OLIVEIRA SANTOS
Prof. LEONARDO NOGUEIRA MATOS
12/12/13
Introdução
 O produto escalar é uma operação entre dois vetores, cujo,
resultado é um escalar.
– muito utilizado nos problemas de visão computacional;
– criação de classificadores lineares para algoritmos de
aprendizado de máquina.
 CUDA (Compute Unified Device Architecture)
– arquitetura de abstração com modelo de programação
embutido;
– executada em GPU.
 API OpenMP (Open Multi Processing)
– crescido bastante nos últimos anos;
– memória compartilhada;
– conjunto de threads;
– realizado em CPU.
12/12/133/18
Introdução
 OpenMP executado em CPU e CUDA realizado
em GPU.
12/12/134/18
Figura 1: CPU Intel Core i7. Figura 2: GPU NVIDIA GeForce.
Introdução
 Representação das arquiteturas CPU's e
GPU's.
12/12/135/18
Figura 3: Arquitetura de CPU’s à esquerda, e GPU’s à direita
[Graphics Hardware 2008].
Cache
ALUControl
ALU
ALU
ALU
DRAM
CPU
DRAM
GPU
Introdução
●
Um processo com três threads de execução.
12/12/136/18
Figura 4: Representação de Threads.
Objetivos
 Reduzir o custo computacional do cálculo do
produto escalar utilizando as abordagens da
implementação de algoritmos concorrente
empregando OpenMP e paralelo recorrendo
CUDA;
 Ao final, será comparado essas visões com a
implementação sequencial do produto escalar.
12/12/137/18
Produto Escalar
 Produto escalar em sistema de coordenada
cartesiana ortogonal:
- Produto escalar:
w=x1y1+x2y2
12/12/138/18
Figura 5: Plano no espaço R² [Lages 2007].
Algoritmo Utilizando CUDA
 Dividido em duas partes:
– Multiplicação dos vetores feita em paralelo:
●
Declarado construtor __global__;
●
Executado no dispositivo, kernel;
●
Cada thread calcula sua parcela do produto
escalar:
– res[tid] = v1[tid]*v2[tid]
●
tid é a identificação da thread;
– Soma de todo o vetor resultante feita
sequencialmente;
12/12/139/18
Algoritmo Utilizando OpenMP
 Foram definidos dois vetores, v1 e v2 com
tamanhos idênticos;
 Para realizar o produto escalar concorrente:
– Cada thread calcula sua parcela do produto
escalar e armazena na sua cópia na variável
prod_reduction:
●
prod_reduction += v1*v2;
– No final da região paralela, essa cópia é atualizada
com a soma dos valores calculados por todas as
threads;
– A cláusula reduction:
●
Cada thread tem seu valor privado;
●
Processo de compartilhamento;
12/12/1310/18
Comparação dos Tempos de Execução
dos Algoritmos
 Paralelo com o Sequencial;
 Concorrente com o Sequencial;
 Teste 1:
– um tamanho fixo para os vetores;
– medindo o tempo para uma quantidade de execuções do
produto escalar.
 Teste 2:
– uma quantidade fixa de execuções;
– mediu-se o tempo para tamanhos diferentes dos vetores.
 Foi utilizado linhas de tendência:
– encontrar o melhor tempo do algoritmo sequencial em relação
ao algoritmo paralelo e concorrente.
 Foi utilizado o método da variação percentual:
– Saber o ganho percentuais em relação aos resultados sequencial
em relação ao paralelo e concorrente.
12/12/1311/18
Utilizando CUDA
●
Variação percentual com quant. execução
(máxima) de 200:
– Diminuição percentual de 2278,0833% do tempo.
12/12/1312/18
Figura 6: Comparação entre dos tempos de execução paralelo e sequencial
modificando quantidade de execuções.
Utilizando CUDA
●
Variação percentual com tam. vetor (máxima) de
985000:
– Diminuição percentual de 2339,0803% do tempo.
12/12/1313/18
Figura 7: Comparação entre dos tempos de execução paralelo e sequencial
modificando o tamanho do vetor.
Utilizando OpenMP
●
Variação percentual com quant. execução
(máxima) de 200:
– Diminuição percentual de 401,0940% do tempo.
12/12/1314/18
Figura 8: Comparação entre dos tempos de execução concorrente e
sequencial modificando quantidade de execuções.
Utilizando OpenMP
●
Variação percentual com tam. vetor (máxima) de
985000:
– Diminuição percentual de 401,7781% do tempo.
12/12/1315/18
Figura 9: Comparação entre dos tempos de execução concorrente e
sequencial modificando o tamanho do vetor.
Conclusão
 A implementação com OpenMP gerou desempenho
satisfatório, sendo superior à sequencial:
– melhoria no desempenho cerca de 400% nos dois
testes.
 Utilizando CUDA, mesmo sendo feito somente a
paralelização da multiplicação, foi satisfatório:
– diminuição percentual cerca de 2000%
 Uso de paralelismo voltado para visão
computacional:
– paralelização do produto escalar mostrou-se
apropriado.
12/12/1316/18
Referências
 Utilizadas na apresentação:
– Graphics Hardware 2008. Disponível em: http://www.graphicshardware.org
Acesso em 09 de dezembro de 2013;
– Lages, E. N. (2007). Vetores – Produto Escalar, Universidade Federal de
Alagoas, Faculdade de Arquitetura e Urbanismo, Alagoas.
 Outras:
– Biezuner, R. J. (2009). Vetores, Universidade Federal de Minas Gerais,
Departamento de Matemática, Belo Horizonte, Minas Gerais.
– Sanders, J. and Kandrot, E. (2011). CUDA by Example: An Introduction to
General-Purpose GPU Programming, Pearson Education, United States.
– Sena, Maria C. R. and Costa, Joseaderson A. C. (2008). TUTORIAL OpenMP
C/C++, Universidade Federal de Alagoas, SUN microsysterms.
12/12/1317/18
Perguntas
?
12/12/1318/18

Mais conteúdo relacionado

Semelhante a Paralelização de Algoritmo do Produto Escalar

TCC Apresentacao Final
TCC Apresentacao FinalTCC Apresentacao Final
TCC Apresentacao Final
Arthur Gregório
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
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
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
Pedro De Almeida
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
Heitor Galvão
 
Programar pic em c motor passo
Programar pic em c motor passoProgramar pic em c motor passo
Programar pic em c motor passo
Mario Angelo
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
Eduardo Nicola F. Zagari
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Fernando Passold
 
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
UFPA
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
Inael Rodrigues
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
blogmaxima
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisIgor José F. Freitas
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
Marcio Machado Pereira
 
Artigo mega team pdf
Artigo mega team pdfArtigo mega team pdf
Artigo mega team pdfpfilho2011
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 

Semelhante a Paralelização de Algoritmo do Produto Escalar (20)

TCC Apresentacao Final
TCC Apresentacao FinalTCC Apresentacao Final
TCC Apresentacao Final
 
Apostila eagle
Apostila eagleApostila eagle
Apostila eagle
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
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...
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
 
Programar pic em c motor passo
Programar pic em c motor passoProgramar pic em c motor passo
Programar pic em c motor passo
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 
SIC_201_VRSJ
SIC_201_VRSJSIC_201_VRSJ
SIC_201_VRSJ
 
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
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
 
416
416416
416
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
Artigo mega team pdf
Artigo mega team pdfArtigo mega team pdf
Artigo mega team pdf
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 

Paralelização de Algoritmo do Produto Escalar

  • 1. PARALELIZAÇÃO DE ALGORITMO DO PRODUTO ESCALAR CUDA e OpenMP
  • 2. PARALELIZAÇÃO DE ALGORITMO DO PRODUTO ESCALAR WENDEL DE OLIVEIRA SANTOS Prof. LEONARDO NOGUEIRA MATOS 12/12/13
  • 3. Introdução  O produto escalar é uma operação entre dois vetores, cujo, resultado é um escalar. – muito utilizado nos problemas de visão computacional; – criação de classificadores lineares para algoritmos de aprendizado de máquina.  CUDA (Compute Unified Device Architecture) – arquitetura de abstração com modelo de programação embutido; – executada em GPU.  API OpenMP (Open Multi Processing) – crescido bastante nos últimos anos; – memória compartilhada; – conjunto de threads; – realizado em CPU. 12/12/133/18
  • 4. Introdução  OpenMP executado em CPU e CUDA realizado em GPU. 12/12/134/18 Figura 1: CPU Intel Core i7. Figura 2: GPU NVIDIA GeForce.
  • 5. Introdução  Representação das arquiteturas CPU's e GPU's. 12/12/135/18 Figura 3: Arquitetura de CPU’s à esquerda, e GPU’s à direita [Graphics Hardware 2008]. Cache ALUControl ALU ALU ALU DRAM CPU DRAM GPU
  • 6. Introdução ● Um processo com três threads de execução. 12/12/136/18 Figura 4: Representação de Threads.
  • 7. Objetivos  Reduzir o custo computacional do cálculo do produto escalar utilizando as abordagens da implementação de algoritmos concorrente empregando OpenMP e paralelo recorrendo CUDA;  Ao final, será comparado essas visões com a implementação sequencial do produto escalar. 12/12/137/18
  • 8. Produto Escalar  Produto escalar em sistema de coordenada cartesiana ortogonal: - Produto escalar: w=x1y1+x2y2 12/12/138/18 Figura 5: Plano no espaço R² [Lages 2007].
  • 9. Algoritmo Utilizando CUDA  Dividido em duas partes: – Multiplicação dos vetores feita em paralelo: ● Declarado construtor __global__; ● Executado no dispositivo, kernel; ● Cada thread calcula sua parcela do produto escalar: – res[tid] = v1[tid]*v2[tid] ● tid é a identificação da thread; – Soma de todo o vetor resultante feita sequencialmente; 12/12/139/18
  • 10. Algoritmo Utilizando OpenMP  Foram definidos dois vetores, v1 e v2 com tamanhos idênticos;  Para realizar o produto escalar concorrente: – Cada thread calcula sua parcela do produto escalar e armazena na sua cópia na variável prod_reduction: ● prod_reduction += v1*v2; – No final da região paralela, essa cópia é atualizada com a soma dos valores calculados por todas as threads; – A cláusula reduction: ● Cada thread tem seu valor privado; ● Processo de compartilhamento; 12/12/1310/18
  • 11. Comparação dos Tempos de Execução dos Algoritmos  Paralelo com o Sequencial;  Concorrente com o Sequencial;  Teste 1: – um tamanho fixo para os vetores; – medindo o tempo para uma quantidade de execuções do produto escalar.  Teste 2: – uma quantidade fixa de execuções; – mediu-se o tempo para tamanhos diferentes dos vetores.  Foi utilizado linhas de tendência: – encontrar o melhor tempo do algoritmo sequencial em relação ao algoritmo paralelo e concorrente.  Foi utilizado o método da variação percentual: – Saber o ganho percentuais em relação aos resultados sequencial em relação ao paralelo e concorrente. 12/12/1311/18
  • 12. Utilizando CUDA ● Variação percentual com quant. execução (máxima) de 200: – Diminuição percentual de 2278,0833% do tempo. 12/12/1312/18 Figura 6: Comparação entre dos tempos de execução paralelo e sequencial modificando quantidade de execuções.
  • 13. Utilizando CUDA ● Variação percentual com tam. vetor (máxima) de 985000: – Diminuição percentual de 2339,0803% do tempo. 12/12/1313/18 Figura 7: Comparação entre dos tempos de execução paralelo e sequencial modificando o tamanho do vetor.
  • 14. Utilizando OpenMP ● Variação percentual com quant. execução (máxima) de 200: – Diminuição percentual de 401,0940% do tempo. 12/12/1314/18 Figura 8: Comparação entre dos tempos de execução concorrente e sequencial modificando quantidade de execuções.
  • 15. Utilizando OpenMP ● Variação percentual com tam. vetor (máxima) de 985000: – Diminuição percentual de 401,7781% do tempo. 12/12/1315/18 Figura 9: Comparação entre dos tempos de execução concorrente e sequencial modificando o tamanho do vetor.
  • 16. Conclusão  A implementação com OpenMP gerou desempenho satisfatório, sendo superior à sequencial: – melhoria no desempenho cerca de 400% nos dois testes.  Utilizando CUDA, mesmo sendo feito somente a paralelização da multiplicação, foi satisfatório: – diminuição percentual cerca de 2000%  Uso de paralelismo voltado para visão computacional: – paralelização do produto escalar mostrou-se apropriado. 12/12/1316/18
  • 17. Referências  Utilizadas na apresentação: – Graphics Hardware 2008. Disponível em: http://www.graphicshardware.org Acesso em 09 de dezembro de 2013; – Lages, E. N. (2007). Vetores – Produto Escalar, Universidade Federal de Alagoas, Faculdade de Arquitetura e Urbanismo, Alagoas.  Outras: – Biezuner, R. J. (2009). Vetores, Universidade Federal de Minas Gerais, Departamento de Matemática, Belo Horizonte, Minas Gerais. – Sanders, J. and Kandrot, E. (2011). CUDA by Example: An Introduction to General-Purpose GPU Programming, Pearson Education, United States. – Sena, Maria C. R. and Costa, Joseaderson A. C. (2008). TUTORIAL OpenMP C/C++, Universidade Federal de Alagoas, SUN microsysterms. 12/12/1317/18