Uma introdução para computação paralela de modelos massivos. Adriano Brito Pereira inf.puc-rio.br

Documentos relacionados
Introdução a CUDA. Esteban Walter Gonzalez Clua. Medialab - Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center START

Computação Paralela (CUDA)

5 Unidades de Processamento Gráfico GPUs

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

Eng. Thársis T. P. Souza

Processamento Paralelo Utilizando GPU

Hierarquia de memória:

Arquiteturas de Computadores

INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome

MC4: Introdução à Programação Paralela em GPU para a Implementação de Métodos Numéricos

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?

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

3 Computação de Propósito Geral em Unidades de Processamento Gráfico

Comparação de eficiência entre OpenCL e CUDA

What is? Eduardo Viola Nicola Disciplina de IPPD

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO

Memory-level and Thread-level Parallelism Aware GPU Architecture Performance Analytical Model

Thársis T. P. Souza

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

Aplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center

Introdução ao CUDA. Material elaborado por Davi Conte.

Introdução à Computação: Sistemas de Computação

Paralelização do Detector de Bordas Canny para a Biblioteca ITK usando CUDA

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Sistemas Distribuídos

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Computadores e Programação (DCC/UFRJ)

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Fabrício Gomes Vilasbôas

Arquiteturas paralelas Parte 1

Ambientes e Ferramentas de Programação para GPU. Denise Stringhini (Mackenzie) Rogério Gonçalves (UFTPR/IME- USP) Alfredo Goldman (IME- USP)

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

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

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

SSC510 Arquitetura de Computadores. 6ª aula

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018

Exploração do paralelismo em arquiteturas multicore, multicomputadores e gpus

Programação Concorrente e Paralela

Carlos Eduardo Batista Centro de Informática - UFPB

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

CUDA-RA: Uma ferramenta de interpretação de álgebra relacional e estrutura de dados para GPU

Disciplina de Arquitetura de Computadores

Aplicando Processamento Paralelo com GPU ao Problema do Fractal de Mandelbrot

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

Processamento de áudio em tempo real utilizando dispositivos não convencionais:

Introdução à Programação de GPUs

Suporte à Execução Eficiente de Aplicações em Plataformas com Paralelismo Multi-Nível

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Paralelismo em Computadores com Tecnologia Multicore

Patricia Akemi Ikeda

TEMA DE CAPA. Introdução à Programação em CUDA

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

Celso L. Mendes LAC /INPE

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

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

Arquitetura de Computadores

UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

SSC0611 Arquitetura de Computadores

Soluções em GPU para o Problema do Alinhamento Spliced

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

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

Infraestrutura de Hardware. Processamento Paralelo Multicores, Multi-Threading e GPUs

Universidade Federal do Pampa Matheus da Silva Serpa. Análise de Desempenho de Aplicações Paralelas em Arquiteturas multi-core e many-core

Introdução à Programação de Propósito Geral em Hardware Gráfico

Jônatas Lopes de Paiva Instituto de Matemática e Estatística Universidade de São Paulo. 06 de maio de 2011

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

Computação de Alto Desempenho com Placas Gráficas para Acelerar o Processamento da Teoria do Funcional da Densidade

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

Bibliografia em processamento paralelo

OpenMP. Adaptado do Material do Calebe de Paula Bianchini

Organização de Computadores 2005/2006 Processamento Paralelo

Parallel Computing Paradigms

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

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

Tópicos em Física Computacional: Introdução a Linguagem CUDA

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Arquitetura de Sistemas Digitais

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

PROPOSTA DE UMA ESTRATÉGIA DE PROGRAMAÇÃO EXPLÍCITA COM ANOTAÇÃO EM CÓDIGO EM BUSCA DE EFICIÊNCIA ENERGÉTICA 1

INF Programação Distribuída e Paralela

OpenMP: Variáveis de Ambiente

COMPUTAÇÃO PARALELA COM ACELERADORES GPGPU 1. Emilio Hoffmann De Oliveira 2, Edson Luiz Padoin 3.

Sistemas Distribuídos e Paralelos

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

ISPC:A SPMP Compiler for High-Performance CPU Programming

Intel Thread Building Blocks (TBB)

Pedro da Silva Peixoto (MAP-IME-USP)

ARQUITECTURA DE COMPUTADORES 2013/2014 2º SEMESTRE

Organização e Arquitetura de Computadores I

Atol Fortin, Bruno da Hora, Lucas Piva, Marcela Ortega, Natan Lima, Pedro Raphael, Ricardo Sider, Rogério Papetti. 28 de novembro de 2008

SSC0510 Arquitetura de Computadores

Organização de Computadores II. Arquiteturas MIMD

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

2 Programação Genérica em Placa Gráfica

Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

3 Fundamentos teóricos

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

Transcrição:

Uma introdução para computação paralela de modelos massivos Adriano Brito Pereira 1021752 apereira @ inf.puc-rio.br Departamento de Informática Novembro / 2010 1

Resultados obtivos com Manta Framework x Cuda Cenário em 2006 (Manta) x Cenário em 2009. Conclui-se que o paper sobre o Boeing 777 foi reforçado para divulgação do Manta framework. 2

Diferentes objetivos produzem diferentes designs GPU assume que a carga de trabalho é altamente paralela CPU deve ser boa em tudo, paralela ou não CPU: minimização da latência experimentada por 1 thread GPU: maximização da vazão de todas as threads Idéias arquiteturais: SIMT (Single Instruction Multiple Thread) threads executam em grupos de 32 (warps). Hardware multithreading. Threads com todos os recursos necessários para executar. 3

Motivação Quantidade de dados produzidos pela engenharia de design excede as capacidades de renderização Modelos geométricos de dados podem produzir dezenas de gibabytes. Como o uso de paralelismo e uma arquitetura escalável pode ajudar a realizar tarefas no mundo real. 4

Objetivo Aprender como desenvolver programas que processem modelos massivos através de paralelismo Adquirer alta performance Garantir os aspectos funcionais e manuteníveis do modelo Garantir escalabilidade para os modelos futuros 5

Conhecimento técnico envolvido Princípios e padrões da programação paralela Arquitetura física de processadores e suas condições API, frameworks, ferramentas e técnicas 6

Tecnologia mínima utilizada PC multiprocessado com um GPU habilitado com CUDA 7

Relembrar é viver O número de transistores em um circuito integrado duplica a cada 2 anos. - Lei de Moore 8

Paralelismo a nível de instrução (especulação, execução fora de ordem,...) Paralelismo a nível de dado (vetores unitários, SIMD, GPU,...) Paralelismo a nível de thread (multithreading, multicore, intel core2, AMD Phenom, Nvidia Fermi,...) 9

A nova Lei de Moore Computadores não ficam mais rápidos, apenas mais espertos Você deve repensar seus algoritmos para serem paralelos Paralelismo por dado é a solução mais escalável 10

Diferentes objetivos produzem diferentes designs GPU assume que a carga de trabalho é altamente paralela CPU deve ser boa em tudo, paralela ou não CPU: minimização da latência experimentada por 1 thread GPU: maximização da vazão de todas as threads Idéias arquiteturais: SIMT (Single Instruction Multiple Thread) threads executam em grupos de 32 (warps). Hardware multithreading. Threads com todos os recursos necessários para executar. 11

CUDA Modelo de programação paralela escalável Familiar ao desenvolvimento em C/C++ Computação em série-paralela heterogênea 12

CUDA (Motivações) 17X 110-240X 45X 100X 13 457x 13

CUDA - Vantagens Permite os programadores focarem em algoritmos paralelos Não é uma linguagem mecânica para paralelismo Bom para mapeamento com hardware Altamente escalávem em número de threads 14

CUDA - Abstrações Hierarquia de threads concorrentes Sincronização primitivas Modelo de memória compartilhada para threads que cooperam entre si. 15

CUDA Modelo de paralelismo Virtualização da memória física. Schedulamento em hardware não preemptiva. Blocos independentes 16

CUDA Exemplo de implementação global void my_kernel() { } device float my_device_func() { constant float my_constant_array[32]; shared float my_shared_array[32]; dim3 grid_dim(100, 50); // 5000 thread blocks dim3 block_dim(4, 8, 8); // 256 threads per block my_kernel <<< grid_dim, block_dim >>> (...); // Launch kernel dim3 dim3 dim3 dim3 void griddim; // Grid dimension blockdim; // Block dimension blockidx; // Block index threadidx; // Thread index syncthreads(); // Thread synchronization 17

CUDA Exemplo de implementação Example: vector_addition global void vector_add(float* A, float* B, float* C) { int i = threadidx.x + blockdim.x * blockidx.x; C[i] = A[i] + B[i]; } int main() { vector_add<<< N/256, 256>>>(d_A, d_b, d_c); } 18

Projetos em andamento Application Description Source Kernel % time H.264 SPEC 06 version, change in guess vector 34,811 194 35% LBM SPEC 06 version, change to single precision and print fewer reports 1,481 285 >99% RC5-72 Distributed.net RC5-72 challenge client code 1,979 218 >99% FEM Finite element modeling, simulation of 3D graded materials 1,874 146 99% RPES Rye Polynomial Equation Solver, quantum chem, 2electron repulsion 1,104 281 99% PNS Petri Net simulation of a distributed system 322 160 >99% SAXPY Single-precision implementation of saxpy, used in Linpack s Gaussian elim. routine 952 31 >99% TPACF Two Point Angular Correlation Function 536 98 96% FDTD Finite-Difference Time Domain analysis of 2D electromagnetic wave propagation 1,365 93 16% MRI-Q Computing a matrix Q, a scanner s configuration in MRI reconstruction 490 33 >99% 19

Conclusões finais Resultados de paralelismo geralmente obtém melhores resultados. GPUs são massivamente paralelas a muitos cores de processadores. Paralelismo e escalabilidade são cruciais para o sucesso de renderização de modelos massivos. 20

Bibliografia e fontes consultadas Abe Stephens, 1 Solomon Boulos, 2 James Bigler, 1 Ingo Wald, 1 Steven Parker 1, An Application of Scalable Massive Model Interaction using Shared-Memory Systems, Eurographics Symposium on Parallel Graphics and Visualization (2006) Parallel-Computing-Seminar-Report - http://www.scribd.com/doc/14564472/parallel-computing-seminarreport CUDA Parallel Computer Architecture http://www.speedup.ch/workshops/w38_2009/pdf/speedup_workshop.pdf Yongpeng Zhang, Frank Mueller, Xiaohui Cui, Thomas Potok North Carolina State University, A Programming Model for Massive Data Parallelism with Data Dependencies, 2007 - http://moss.csc.ncsu.edu/~mueller/ftp/pub/mueller/papers/pmea09.pdf 21