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.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Vitor Fiorotto Astolfi Orientador: Jorge Luiz e Silva
Desempenho da Computação Paralela em Ambientes Virtualizados
Introdução à Hierarquia de Memória
Introdução aos Sistemas Distribuídos
MULTICORE Aluno: Gabriel Antonio Leite São processadores caracterizados por apresentar vários cores (núcleos de processamento) em um único chip.
ARQUITETURA DE COMPUTADORES II
ARQUITETURAS RISC E CISC
Multithreading e multiprocessamento
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
UM ESTUDO SOBRE O PROBLEMA DO CAIXEIRO VIAJANTE
OpenMP MO801/MC972. Visão geral Biblioteca de mais alto nível para programação paralela Prevê memória compartilhada Requer suporte do compilador Exige.
Computação de Alto Desempenho
GPGPU.
Sistemas Operacionais
Colônia de Formigas (Ant Colony Optimization)
Sistemas Distribuídos e Redes de Computadores
INTRODUÇÃO À PROGRAMAÇÃO
Algoritmo das formigas
Daniel Felipe Neves Martins
Complexidade de Algoritmos
Clusters.
Uma estratégia para implementar Computação Paralela
Threads.
Sistemas Operacionais
Professor Fernando Luís
Prof. André Leon S. Gradvohl, Dr.
Heurísticas, algoritmos gulosos e aproximações
PARALELISMO EM NÍVEL DE THREAD
PROGRAMAÇÃO I UNIDADE 1.
Unidade 1-1 Processos e Threads
I Iterated Local Search Helena R. Lorenço, Olivier Martinz
Prof.: Vagner Pinto Borges Prof.: Vagner Pinto Introdução à Arquitetura e Organização.
CUDA vs OpenCL Introdução.
Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU.
Fundamentos de programação CUDA
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Linguagem de Programação IV
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Cluster Beowulf.
Heurísticas, algoritmos gulosos e aproximações
Computing on large scale distributed systems: experience of the XtremWeb project CMP-157 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA Prof. Cláudio Fernando Resin.
Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás
Efficient Java Communication Protocols on High-speed Cluster Interconnects Alexandre Almeida Felipe Severino.
Sistemas Operacionais
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Universidade de Mogi das Cruzes Tec
Augusto Martins e José Luís Zem Universidade Metodista de Piracicaba - UNIMEP Curso de Bacharelado em Sistemas de Informação Utilização de Cluster de Computadores.
Sistemas Operacionais
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Sistemas operacionais
Arquiteturas RISC x CISC
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Perspectivas NVidia para Desktop Tiago Carneiro Pessoa
SISTEMAS OPERACIONAIS MACH EPOS
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
Multiparadigma das Comunicações em Java para Grid Computing Fernanda R. Ramos Luiz Felipe Marco Eiterer Profº Alcides Calsavara, Ph.D.
Algoritmos e Programação MC102
Mailson Felipe da Silva Marques Johnson Cordeiro Sarmento
Arquitetura de computadores
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Universidade Estadual de Santa.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
Projeto do CBPF Grid SSOLAR Bruno Lima Felipe da Matta Roberto Kishi Thagor Baiocco Tiago Olimpio
Bruna Cavallero Martins Universidade Católica de Pelotas.
OpenCL Eliane Siegert. Estrutura – Princípio Geral de Funcionamento – Exemplos de Aplicações – Modelo de Programação – Linguagens Suportadas – Exemplos.
Transcrição da apresentação:

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

O que vem por aí....

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”.

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.

Cluster da Beowulf System

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.

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.

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.

Cluster feito de GPU’s Nvidia Tesla

Continuação...

Exemplos

Exemplo

Exemplo

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++.

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.

Exemplo

Exemplo

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.

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

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.

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.

Obrigado Pela Paciência Se alguem não tiver dormido ainda, pode perguntar alguma coisa. =D