Processamento Paralelo Utilizando GPU

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

Aplicando Processamento Paralelo com GPU ao Problema do Fractal de Mandelbrot

O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP

5 Unidades de Processamento Gráfico GPUs

Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio Programação Genérica de GPUs

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1

PARALELIZAÇÃO DO ALGORITMO AES E ANÁLISE SOBRE GPGPU 1 PARALLELIZATION OF AES ALGORITHM AND GPU ANALYSIS

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Paralelização Eficiente para o Algoritmo Binário de Exponenciação Modular

Taxonomia de Flynn. Procura classificar todas as arquitecturas de computadores com base no processamento das instruções e dos dado.

Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

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

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho

Arquitetura e Programação de GPU. Leandro Zanotto RA: Anselmo Ferreira RA: Marcelo Matsumoto RA:

Patricia Akemi Ikeda

PROGRAMAÇÃO PARALELA HÍBRIDA PARA CPU E GPU: UMA AVALIAÇÃO DO OPENACC FRENTE A OPENMP E CUDA

Ambientes de computação de alto desempenho no LNCC

Sistemas Distribuídos

Waldemar Celes. 25 de Agosto de 2014

Exploração de Paralelismo em Criptografia Utilizando GPUs

Análise Comparativa de Algoritmos NP-Completo Executados em CPU E GPU Utilizando CUDA

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

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

SSC510 Arquitetura de Computadores. 6ª aula

Edison Gustavo Muenz. Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi

Leapfrog Geo 3.1. Notas técnicas da versão

ARQUITETURA DE COMPUTADORES

CUDA: Compute Unified Device Architecture. Marco Antonio Simões Teixeira

Sistemas Operacionais Aula 3

Placa de vídeo em CUDA

GPU Computing: Implementação do método do Gradiente Conjugado utilizando CUDA

1. Conceitos Básicos de Computação

PROCESSAMENTO PARALELO EM CUDA APLICADO AO MODELO DE GERAÇÃO DE CENÁRIOS SINTÉTICOS DE VAZÕES E ENERGIAS - GEVAZP. André Emanoel Rabello Quadros

PARALELIZAÇÃO E COMPARAÇÃO DE MÉTODOS ITERATIVOS NA SOLUÇÃO DE SISTEMAS LINEARES GRANDES E ESPARSOS RESUMO

Disciplina de Arquitetura de Computadores

Arquitetura de computadores

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

Programação em Memória Compartilhada com OpenMP

ARQUITECTURA DE COMPUTADORES 2013/2014 2º SEMESTRE

The future is parallel but it may not be easy

AULA 2. Prof.: Jadiel Mestre. Introdução à Informática. Introdução à Informática Componentes de um Sistema de Informação

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler

ANNCOM Biblioteca de Redes Neurais Artificiais para Alto Desempenho Utilizando Placas de Vídeo

MÉTODOS NUMÉRICOS UTILIZANDO GNU/OCTAVE E GPGPU

Linguagem C Princípios Básicos (parte 1)

Universidade Federal do ABC. Dissertação de Mestrado. Aderbal de Morais Junior

GPUs : Arquitetura e Programação. Bruno Cardoso Lopes Instituto de Computação - UNICAMP

MINI-CURSO: Introdução à Programação em CUDA

Disciplina de Algoritmos e Programação

Sistemas Distribuídos e Paralelos

Introdução a Processamento de Alto desempenho

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

Computadores e Programação (DCC/UFRJ)

Paradigmas de Computação Paralela

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza

Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL

Modelos de Computadores

Windows 7, 8.1 e 10 Afinal qual o mais rápido?

Bruna Freire Pedroso da Costa Guilherme Carvalho Lucas Henrique Muniz Raul Vinícius Nascimento Vanessa Baptista. D&D Info

Apresentação dos Serviços para Processamento de Dados de Alto Desempenho disponibilizados pela InterNuvem

Projeto de Algoritmos

Impacto da Arquitetura de Memória de GPGPUs na Velocidade da Computação de Estênceis

UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Pós-Graduação em Ciência da Computação

Parallel Computing Paradigms

Transcrição:

Processamento Paralelo Utilizando GPU Universidade Estadual de Santa Cruz Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Evalero Orellana

Cronograma Breve introdução sobre processamento paralelo O que é CUDA? Problema abordado (Fractal de Mandelbrot) Características da Tecnologia CUDA Implementação do Algoritmo Resultados Obtidos Conclusões e Trabalhos Futuros

Introdução Processamento Paralelo Resolução de problemas computacionais de grande porte Engenharia nuclear Física médica Bioinformática Engenharia genética Fontes [Aiping D, 2011] [Alonso P. 2009], [Goddeke D. 2007] Redução de tempo Clusters Grides Tecnologias CPU versus GPU

Introdução Processamento Paralelo em GPU Multi- e many-cores CPU Massively parallel accelerators Figura 1 Arquiteturas CPU x GPU [Nvidia - 1]

Introdução GPGPU (acrônimo de General-purpose Computing on Graphics Processing Units) Marks Harris em 2002 definiu o uso das GPUs para fins não gráficos Fonte [GPGPU.org] OpenCL (Open Computing Language) Visa por em Prática a GPGPU Framework mantido pelas empresas Intel, AMD, Nvidia, Apple Inc, ATI. Fonte [Nvidia - 3]

O que é CUDA? CUDA (Computing Unified Device Architecture) Criada pela Nvidia Aplicar o GPGPU nas placas da Nvidia Extensão da linguagem C e C++ Oferece uma API (Application Programming Interface) Driver CUDA runtime e bibliotecas

Problema Computacional Abordado Fractal de Mandelbrot Funções recursivas Difícil plotagem Foi o primeiro fractal a ser resolvido em um computador Conjunto específico de pontos no plano complexo

Problema Computacional Abordado

Problema Computacional Abordado Algoritmo int Mandelbrot(complexo c){ int i = 0, ITR = 255; float x = 0, y = 0, tmp = 0; enquanto (x²+y² <= 2² && i < ITR) { tmp = x² - y² + c. real; y = 2*x*y + c.img; i++; } se(i < ITR) retorne i; senão retorne 0; }

Características da Tecnologia CUDA CUDA como um conjunto sorftware e hardware Acrescenta uma nova nomenclatura para as arquiteturas paralelas SIMT (Single Instruction Multiple Threads)

Características da Tecnologia CUDA CUDA como um conjunto sorftware e hardware Novo modelo de compilação para arquiteturas paralelas Compilador nvcc Fonte [Nvidia - 2] Figura 2 Compilação [HALFHILL, T.R.]

Características da Tecnologia CUDA CUDA como um conjunto sorftware e hardware Fluxo de execução Figura 3 Fluxo de execução [Nvidia - 1]

Características da Tecnologia CUDA Kernel Podem ser organizados em diversas hierarquias Grids formados por blocos Podem ser organizados em até 2 dimensões Bloco formados por threads Podem ser organizados em até 3 dimensões

Características da Tecnologia CUDA Extensões de linguagem Qualificadores de tipo Função: global, device, host Variável: device, constante, shared Identificadores de variável threads threadidx.x, threadidx.y, threadidx.z blockidx.x, blockidx.y Nova sintaxe para chamada de funções kernel Nome_funcao<<grid, blocos>>(parametros) Variáveis dim3 dim3 nome_variavel(x, y, z)

Implementação do Algoritmo Código Paralelo x Código Serial global void ponto_fractal(complexo ini, char *plano_d, float dx, float dy, int altura, int compr){ int tx = threadidx.x + blockidx.x * blockdim.x; int ty = threadidx.y + blockidx.y * blockdim.y; float real, img; real = ini.real + (dx*tx); img = ini.img (dy*ty); int i = 0; float x = 0; y = 0, tmp; while(x*x + y*y <= 4 && i < ITR){ tmp = x*x y*y + real; y = 2*x*y + img; x = tmp; i++; } if(i<itr) plano_d[tx*comprimento +ty] = i; else plano_d[tx*comprimento +ty] = 0; } void ponto_fractal(complexo ini){ int i = 0; float x = 0; y = 0, tmp; while(x*x + y*y <= 4 && i < ITR){ tmp = x*x y*y + real; y = 2*x*y + img; x = tmp; i++; } if(i<itr) return = i; else return = 0; }

Resultados Obtidos Ferramentas para os experimentos numéricos Máquina de testes Processador intel (R) Core i7 CPU 860 2,8GHz Placa gráfica Nvidia GeForce 9800GT 512MB de memória princial 112 cores HD de 250GB 8GB de memória RAM Compiladores gcc nvcc

Resultados Obtidos 1 1.200x1.200px 2 5.000x5.000px 3 10.000x10.000px 4 15.000x15.000px 5 20.000x20.000px

Resultados Obtidos 1 1.200x1.200px 2 5.000x5.000px 3 10.000x10.000px 4 15.000x15.000px 5 20.000x20.000px

Conclusões Desafios Absorção das diretivas introduzidas pela biblioteca CUDA Novo modelo de arquitetura SIMT Programação com threads Conquistas Frameworks para padronização Difusão no meio acadêmico Introdução da tecnologia em computadores de grande porte

Trabalhos Futuros Otimizar o código CUDA NVIDIA OpenCL Best Practices Guide [Nvidia - 3] Implementar o algoritmo com técnicas tradicionais de paralelismo MPI OpenMP Efetuar novos comparativos Paralela (CUDA) versus Paralela (MPI e OpenMP)

Agradecimentos

Dúvidas

Referências Aiping Ding, Tianyu Liu, Chao Liang, Wei Ji, and X George Xu (2011) EVALUATION OF SPEEDUP OF MONTE CARLO CALCULATIONS OF SIMPLE REACTOR PHYSICS PROBLEMS CODED FOR THE GPU/CUDA ENVIRONMENT. Alonso, P., Cortina, R, Martínez-Zaldívar, F. J., Ranilla, J. (2009) Neville elimination on multi- and many-core systems: OpenMP, MPI and CUDA, J. Supercomputing, in press, doi:10.1007/s11227-009-0360-z, SpringerLink Online Date: Nov. 18. Goddeke D, Strzodk R, Mohd-Yusof J, McCormick P, H.M Buijssen S, Grajewski M. e Turek S. (2007) "Exploring weak scalability for FEM calculations on a GPU-enhanced cluster". GPGPU.org (2011). Disponível em: http://gpgpu.org/about/, Março. NVIDIA Corporation, (2011) NVIDIA CUDA C ProgrammingGuide 3.1. Disponível em: http://developer.nvidia.com/object/cuda_download.html, Março. NVIDIA Corporation, (2011) The CUDA Compiler Driver NVCC,disponível em: http://moss.csc.ncsu.edu/~mueller/cluster/nvidia/2.0/nvcc_2.0.pdf, Março. NVIDIA Corporation, (2011) NVIDIA OpenCL Best Practices Guide. Disponível em: http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/opencl_b est_practices_guide.pdf, Março. HALFHILL,T.R. (2008) Parallelprocessingwithcuda. MicroprocessorReport, Janeiro (2011)