Celso L. Mendes LAC /INPE

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

5 Unidades de Processamento Gráfico GPUs

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

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

Arquiteturas de Computadores

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

Processadores para computação de alto desempenho

Processadores para computação de alto desempenho

MONTAGEM E MANUTENÇÃO DE COMPUTADORES

Fabrício Gomes Vilasbôas

Processadores para computação de alto desempenho

Processamento Paralelo Utilizando GPU

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

28 de fevereiro de 2016

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

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

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

What is? Eduardo Viola Nicola Disciplina de IPPD

Comparação das Características de Simuladores de Arquiteturas Heterogêneas

Ambientes de computação de alto desempenho no LNCC

Montagem e manutenção de computadores

Computação Heterogênea Programação paralela, clusters e GPUs

Processamento Sísmico de Alto Desempenho na Petrobras

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

Eng. Thársis T. P. Souza

1. Conceitos Básicos de Computação

Computação Paralela (CUDA)

Evolução da Computação de Alto Desempenho sob a Ótica da Lis. ou (Se um processador já é rápido, imaginem um sistema com processadores :-)

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

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

Evolução da Computação de Alto Desempenho sob a Ótica da Lis. ou (Se um processador já é rápido, imaginem um sistema com processadores :-)

Microprocessadores II - ELE 1084

Máquinas mais rápidas do mundo

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

Proposta de Melhoria de uma Implementação Paralela para GPUs Usando CUDA - Estudo de Caso em Modelo Atmosférico

Sob medida para seu sistema de segurança!

Arquitetura de computadores

Arquitetura de um video game moderno. Rafael Parente

AGA 511. Métodos Computacionais em Astronomia. Segundo semestre de 2017

Computadores e Programação (DCC/UFRJ)

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

FACULDADE DE TECNOLOGIA SENAC GOIÁS. Arquitetura de Computadores

CAP-387(2016) Tópicos Especiais em

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

Análise e Testes de Algoritmos em Sistemas de Arquiteturas Híbridas CPU/GPU

CAP-387(2016) Tópicos Especiais em

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

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

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

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

Estudo de Técnicas de Otimização de Desempenho para GPUs Utilizando CUDA Aplicado a um Modelo Meteorológico

Broadband Engine Cell Processor. Arquitetura e Organização de Processadores (CPM237) Rodrigo Bittencourt Motta

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

Intel Xeon Phi. Abilio. Funcionamento. Modelo de. Abilio. Linguagens Suportadas. Exemplos de Produtos no Mercado. 13 de agosto de / 22

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

ARQUITETURA DE COMPUTADORES

Matheus S. Serpa, Vinícius G. Pinto, Philippe O. A. Navaux Contato: INTEL MODERN CODE PARTNER

TOP Arquitetura dos supercomputadores

Processador. Processador

Computação paralela. Nielsen Castelo Damasceno

HCT1 HISTÓRIA DA CIÊNCIA E TECNOLOGIA. Professor: Kleber Manrique Trevisani Aluno: João Jakybalis Neto

Conceitos Básicos. Conceitos Básicos 11/5/2010. Instituto Federal do Pará - IFPA SISTEMA COMPUTACIONAL. Hardware. Software

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

Organização de Computadores I

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

CAP-387(2016) Tópicos Especiais em

Aula 17: Organização de Computadores

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

Organização de Computadores

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho


ARQUITETURA DE COMPUTADORES

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

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

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

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

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

ESTRATÉGIAS DE OTIMIZAÇÃO DE CÓDIGO EM OPENCL

Computação científica utilizando placas gráficas

Barramentos internos/externos

Máquinas Multiníveis Aula 04. Prof. Jadir Eduardo Souza Lucas Universidade Federal do Espírito Santo Departamento de Informática

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

Estudo da placa de prototipagem Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

Nome: N.º Ano: Turma: Turno: Responde às seguintes questões 1. Quais as vantagens da utilização de transístores face às válvulas de vácuo?

PROGRAMAÇÃO PARALELA EM CPU E GPU: UMA AVALIAÇÃO DO DESEMPENHO DAS APIS OPENMP, CUDA, OPENCL E OPENACC

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

Arquitetura de Microprocessadores

Multiprogramação leve em arquiteturas multi-core

SSC304 Introdução à Programação Para Engenharias

SSC0611 Arquitetura de Computadores

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

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

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

Arquiteturas paralelas Parte 1

CURSO TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA - 2º P Manutenção e Suporte de Hardware I

Otimização do desempenho (no h/w) Objetivo

Sistemas Embebidos I , Tiago Miguel Dias ADEETC - Secção de Arquitecturas e Sistemas Operativos

Transcrição:

Arquiteturas para Processamento de Alto Desempenho (PAD) Aula 9 Celso L. Mendes LAC /INPE Email: celso.mendes@inpe.br

Aula 9 (3/5): E. Aceleradores Estrutura Planejada i. Estruturas mais Populares ii. Programação em Aceleradores 2

Aceleradores Objetivo Complementar CPU de propósito geral com maior capacidade de cálculos numéricos Longo histórico Co-processadores aritméticos, DSPs, etc. Esquema predominante CPU é usada para programação, coordenação da execução Acelerador opera sobre partes críticas da tarefa Tipos de aceleradores: vários! 3

Sistemas com Aceleradores Estrutura Típica: 4

Aceleradores (1): GPU Graphics Processing Unit Inicialmente criada para processor exclusivamente gráficos Mercados de massa: placas de video de PCs, consoles de jogos Preço accessível, devido à economia de escala Difícil programação, tarefa para especialistas Primeiros modelos: ponto-flutuante em precisão simples GPGPU: General Purpose GPUs Possibilidade de uso em aplicações de PAD Ponto-flutuante em precisão dupla Esforço para facilitar as técnicas de programação 5

GPU (cont.) GPU Exemplo: Nvidia K40 Mais de 7.1 bilhões de transistores Relógio: 745 MHz 15 processadores SMX, 192 núcleos/processador 2880 núcleos no total Threads são agrupados em conjuntos de 32 (warp) Desempenho: mais que 1 Tflops efetivos, em precisão dupla 80% do desempenho de pico 6 canais de acesso à memória de 64 bits cada Hierarquia de memória cache L1: em cada processador SMX cache L2: compartilhada memória principal (externa) DRAM, com ECC opcional 6

GPU (cont.) Nvidia K40 Diagrama de Blocos: Processador SMX (15) Cache L2 Cache L1 fonte: Nvidia Control.Memória (6) 7

Nvidia K40 Proc. SMX GPU (cont.) Núcleos (192) fonte: Nvidia Cache L1 8

Aceleradores (2): Proc. Many-Core Extensão de multi-core Princípios Conjunto de núcleos simples, na mesma pastilha Comunicação entre núcleos é interna (rápida) Número de núcleos bem mais alto que o usual Exemplo: Intel MIC Many-Integrated-Cores (Xeon-Phi) Protótipo: Knights Ferry: 32 núcleos x86/pentium 1 a geração: Knights Corner: ~60 núcleos+vector Unit, Tianhe-2 2 a geração: Knights Landing: 72 núcleos, func. autônomo 3 a geração: Knights Hill:??? 9

Processador Many-Core (cont.) Intel Xeon-Phi 1a Geração fonte: Intel 10

Processador Many-Core (cont.) Intel Xeon-Phi Arquitetura Interna fonte: Intel 11

Programação de Aceleradores ManyCore - Intel Xeon-Phi: Em cada CPU: código x86 + instruções vetoriais Em cada chip: OenMP para os vários núcleos -- até 244 threads! Múltiplos chips: MPI (combinado com OpenMP em cada chip) GPU: duas alternativas concretas a. Diretivas OpenACC, OpenMP b. Linguagens OpenCL, CUDA (para GPUs da Nvidia) CUDA: extensão de C, com duas modificações 1. Declaração de funções (kernels) para a GPU: global mykernel 2. Invocação de kernels: mykernel<<<val1,val2>>>(args) 12

Exemplo com CUDA roda na GPU roda na CPU 4 blocos, 2 threads/bloco 13

Exemplo com CUDA (cont.) Compilação/link: nvcc o prog prog.cu Execução: No inicio do Programa Principal Dentro do Kernel, valor= 9 coords=1,0 Dentro do Kernel, valor=10 coords=1,1 Dentro do Kernel, valor=18 coords=2,0 Dentro do Kernel, valor=19 coords=2,1 Dentro do Kernel, valor=27 coords=3,0 Dentro do Kernel, valor=28 coords=3,1 Dentro do Kernel, valor= 0 coords=0,0 Dentro do Kernel, valor= 1 coords=0,1 No final do Programa Principal 14