aluno: hedley luna gois oriá disciplina: introdução a pesquisa científica prof. jeandro

23
Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Upload: sidney

Post on 17-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante. Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro. Organização. Introdução a Computação Paralela CUDA OpenCL Caixeiro Viajante Metaheurísticas. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas

aplicadas no Problema do Caixeiro Viajante

Aluno: Hedley Luna Gois Oriá

Disciplina: Introdução a Pesquisa Científica

Prof. Jeandro

Page 2: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Organização

• Introdução a Computação Paralela

• CUDA

• OpenCL

• Caixeiro Viajante

• Metaheurísticas

Page 3: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

O que vem por aí....

Page 4: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Computação Paralela

• Computação paralela é uma forma de computação em que vários cálculos são realizados simultaneamente!

• A Computação paralela já é usada há vários anos na computação de alto desempenho!

• Geralmente é usada para resolver problemas matemáticos supercomplexos.

• Quando não é mais possível melhorar o hardware, usa-se a computação paralela.

• A recente preocupação com o consumo de energia fez com que a computação paralela tivesse um “boom”.

Page 5: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação....

• Tipos de Arquiteturas Paralelas: Multiprocessadores,Multicomputadores e Clusters.

• Tipos de Paralelismo: No Bit,Na Instrução,No Dado e Na Tarefa.

• A programação paralela é geralmente implementada através de trocas de mensagens entre os núcleos. Exemplo: OpenMP e MPI.

• O grande problema da computação paralela se dá na complexidade da implementação!

• Mais recentemente nasceu uma(mais uma) plataforma de programação paralela: a CUDA.

• A mais nova plataforma para a programação paralela é a OpenCL.

Page 6: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Cluster da Beowulf System

Page 7: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

CUDA

• CUDA = Compute Unified Device Architecture.• Propriedade da Nvidia.• GPGPU• Computação Heterogênea• CUDA provê suporte para até 100 núcleos de

processamento! E mais de 1000 threads!(E isso vai aumentar!)

• A série TESLA.

Page 8: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação...

• A única linguagem atualmente suportada pelo CUDA é o C, mas futuramente também C++ e Fortran.

• A partir das novas placas, de codinome Fenri, o C++ já será suportado.

• Os códigos paralelisados usando o CUDA serão executados em um dispositivo através de várias threads.

• Threads.

• Blocos.

• Cada thread executa apenas uma parte do código.

• As threads podem(e devem) ser sincronizadas durante a execução do programa, visando um ganho maior de eficiência.

Page 9: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação...

• O CUDA usa memória compartilhada entre as threads.

• Entretanto, por questões de segurança, thereads de blocos diferentes não se comunicam.

• O desenvolvedor não precisa de preocupar em gerenciar as threads.

• Pode ser usada em conjunto com OpenMP e MPI.

• A comunicação entre as GPU’s.

Page 10: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Cluster feito de GPU’s Nvidia Tesla

Page 11: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação...

Page 12: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Exemplos

Page 13: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Exemplo

Page 14: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Exemplo

Page 15: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

OpenCL

• OpenCL (Open Computing Language)

• Primeira plataforma paralela totalmente free!

• Várias empresas dão suporte ao OpenCL, entre elas, Nvidia e ATI(AMD).

• Mais nova plataforma, algumas bibliotecas ainda serão lançadas.

• Ao contrário do CUDA, o OpenCL é suportado tanto nas Nvidia quanto nas ATI.

• O OpenCL já permite o uso nativo do C++.

Page 16: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação..

• GPGPU• Gerenciamento de Threads é transparente.• Computação Heterogênea.• O OpenCL ainda não possui compilador próprio,

ao contrário do CUDA.• O OpenCL é um “irmão” do CUDA, pois os

códigos escritos são muito parecidos.

Page 17: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Exemplo

Page 18: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Exemplo

Page 19: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Caixeiro Viajante

• O problema consiste em visitar todas as cidades em um dado circuito sem que cada cidade seja visitada mais de uma vez, com o menos trajeto possível.

• É o problema mais explorado na área da computação.

• É um problema de combinatória.• Tem aplicações nas áreas de

logística,genética,produção e outros.• É um problema de complexidade NP-Hard.

Page 20: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação..

• Se tivermos, n cidades, teremos (n-1)! rotas diferentes! Por isso, mesmo problemas pequenos são extremamente difíceis.

n Rotas por segundo

(n-1)! Cálculo total

5 250 milhões 24 Insignificante

10 110 milhões 362.880 0.003 seg

15 71 milhões 87 bilhões 20 minutos

20 53 milhões 1.2x1017 73 anos

25 52 milhões 6.2x1023 470 milhões de anos

Page 21: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Metaheurísticas

• Metaheurísticas são estratégias de alto nível para explorar espaços de busca usando diferentes métodos de resolução visando um balanço entre diversificação e intesidade de procura no espaço escolhido.

• Exemplos de metaheurísticas: Algoritmo Genético,Otimização da Colônia de Formigas,Simullated Annealing,Tabu Search e etc.

Page 22: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Continuação...

• A melhor forma de tentar resolver o problema do caixeiro viajante em um tempo computacional viável é a utilização das metaheurísticas, pois, apesar delas não apontarem a melhor solução(geralmente), chegam muito próximo disso em bem menos tempo.

• O grande problema das metaheurísticas é que, se mal implementadas, não fornecem uma solução de alta qualidade, pois o algoritmo pode parar em um ótimo local.

Page 23: Aluno: Hedley Luna Gois Oriá Disciplina: Introdução a Pesquisa Científica Prof. Jeandro

Obrigado Pela Paciência

• Se alguem não tiver dormido ainda, pode perguntar alguma coisa.

• =D