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



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

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

Programação em Memória Compartilhada com OpenMP

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

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

Capítulo 8 Arquitetura de Computadores Paralelos

Oracle Grid Engine. Thiago Marques Soares. Pós-Graduação em Modelagem Computacional Universidade Federal de Juiz de Fora. 8 de abril de 2015

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

Sistema de Computação

ULA Sinais de Controle enviados pela UC

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

Introdução à Computação Heterogênea

Introdução à Arquitetura de Computadores IFES Campus Serra

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

CPU Unidade Central de Processamento. História e progresso

Processos e Threads (partes I e II)

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

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

7 Processamento Paralelo

6 - Gerência de Dispositivos

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Máquinas Multiníveis

Figura 01 Kernel de um Sistema Operacional

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

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

SSC510 Arquitetura de Computadores. 12ª aula

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operacionais 1/66

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

Introdução às arquiteturas paralelas e taxonomia de Flynn

3.1. Paralelização em CUDA (GPU-PGLIQ)

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

ESTUDO DE CASO WINDOWS VISTA

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Sistemas Operacionais

Figura 1 - O computador

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 02 - Estrutura dos Sistemas Operacionais. Cursos de Computação

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Capítulo 1 Introdução

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Sistemas Operacionais

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

Sistemas Operacionais

Introdução ao Processador CELL BE

UNIVERSIDADE DO SUL DE SANTA CATARINA FERNANDO ARAÚJO DOS SANTOS KAIO CESAR KOERICH

PROCESSADOR CELL BROADBAND ENGINE (MECANISMO DE BANDA LARGA)

FACULDADE PITÁGORAS PRONATEC

Sistema Operacional Correção - Exercício de Revisão

Trabalho de: Alexandre / Paulo / Rui

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Organização e Arquitetura de Computadores I. de Computadores

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

Sistemas Operacionais

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Introdução à Arquitetura de Computadores

Capítulo 8. Software de Sistema

Programação Concorrente Processos e Threads

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Placa de vídeo em CUDA

Introdução aos Computadores

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

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

Sistemas Computacionais II Professor Frederico Sauer

Estruturas do Sistema de Computação

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Hardware de Computadores

Utilização de Computação Heterogénea na Codificação de Vídeo

ARQUITETURA DE COMPUTADORES

Arquitetura de Banco de Dados

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Sistemas Operacionais. Prof. André Y. Kusumoto

4 Estrutura do Sistema Operacional Kernel

Programação de Periféricos

Hardware. Objetivos da aula. Fornecer exemplos de processadores Intel. Esclarecer as diferenças e as tecnologias embutidas nos processadores Intel.

Arquiteturas RISC. (Reduced Instructions Set Computers)

Sistemas Operacionais Gerência de Dispositivos

Introdução a Informática. Prof.: Roberto Franciscatto

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Sistemas Operacionais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

PROCESSADORES. Introdução. O que é processador? 1/10

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Von Neumann e os Computadores Modernos

AULA1 Introdução a Microprocessadores gerais

Redes. Pablo Rodriguez de Almeida Gross

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Informática I. Aula 5. Aula 5-13/05/2006 1

Tecnologia PCI express. Introdução. Tecnologia PCI Express

SISTEMAS OPERACIONAIS

Transcrição:

Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICT- Unifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013

Conteúdo Computação heterogênea: moovação Processamento de alto desempenho Arquiteturas heterogêneas Arquitetura de GPU Ferramentas de programação Outros aceleradores

Computação heterogênea: moovação Desempenho nos úlomos 30 anos: velocidade de clock oomização das instruções níveis de cache obtenção de desempenho: compilação Próximos 20 anos: gerenciamento de energia oomização da movimentação de dados computação heterogênea obtenção de desempenho: paralelização do código uso de direovas e bibliotecas, ferramentas de auto- tuning, etc

MoOvação Borkar, S.; Chien, A. A. 2011. The future of microprocessors. Commun. ACM 54, 5 (May 2011)

Processamento de Alto Desempenho PAD ou HPC (High Performance Compu<ng). A busca por alto desempenho fez com que as melhorias se expandissem para domínios externos aos de arquiteturas convencionais. Exemplo: máquinas mais rápidas do mundo (www.top500.org).

Clusters híbridos São clusters onde cada nó é um SMP. Os nós podem ser equipados com algum Opo de acelerador. Memória: ComparOlhada em cada backend. Distribuída entre os nós do cluster. Programação: MPI, OpenMP, CUDA, OpenCL, etc.

Clusters híbridos

Clusters híbridos

Taxonomia de Sistemas Heterogêneos sistemas heterogêneos projetados por fabricantes específicos; clusters heterogêneos; redes locais de computadores; redes globais de computadores em um mesmo nível organizacional; redes globais de computadores de propósito geral.

Heterogeneous Compu<ng Jungle (HPCWire, março/2012) Intel/AMD X86 host + NVIDIA GPUs (x86+gpu) Intel Core + Intel Ivy Bridge integrated GPU. AMD Opteron + AMD GPUs. Intel Core + Intel MIC AMD Opteron + AMD APU. NVIDIA Denver: ARM + NVIDIA GPU. Convey Intel x86 + FPGA- implemented reconfigurable vector unit Texas Instruments: ARM + TI DSPs. GP core + some other mulocore or stream accelerators GP core + FPGA fabric IBM Power + Cell.

Exemplos de Aceleradores GPU (Graphics Processing Unit) Nvidia, AMD Intel Ivy Bridge (3ª. E 4ª. gerações Intel Core) Intel Xeon Phi Coprocessor

GPU Os principais fabricantes são a NVIDIA e a AMD. Podem atuar em conjunto com CPUs Intel ou AMD. Paralelismo do Opo SIMD. Programa principal executa na CPU (host) e é o responsável por iniciar as threads na GPU (device). Tem sua própria hierarquia de memória e os dados devem ser transferidos através de um barramento PCI express.

GPU!

Nvidia: Arquitetura Kepler Versões mais completas trazem um conjunto de até 15 SMX com 192 núcleos cada. 2880 cores Paralelismo dinâmico. Hyper- Q possibilita disparar kernels simultaneamente.

Ambientes de programação!

OpenMP Padrão composto por: conjunto de direovas de programação conjunto de funções de biblioteca variáveis de ambiente linguagens C/C++ e Fortran

Modelo de execução No início há uma única thread (master thread) que executa até encontrar a primeira região paralela (parallel region). Um fork acontece, fazendo com que um Rme de threads seja criado para executar a região paralela. Ao final, uma operação de join sincroniza e finaliza todas as threads e permite que apenas a mestre avance.

Modelo de execução!

Exemplo #pragma omp parallel for schedule(static, 2) num_threads(4)

CUDA Arquitetura de computação paralela de propósito geral da NVIDIA. - Modelo de programação paralela e um conjunto de instruções. Aplicações paralelas executadas em GPUs

CUDA O modelo assume que suas threads são executadas em um dispositivo separado, uma GPU, que trabalha como coprocessador do host. O código principal é executado na CPU, e faz chamadas a funções que são executadas pela GPU

Função Kernel Threads executam o código definido em uma função kernel. Uma chamada a uma função kernel, dispara a execução de N instâncias paralelas por N threads CUDA.

Modelo de Programação Um SM ou SMX executa um ou mais blocos de threads e os cores e outras unidades de execução no SMX executam as instruções da thread.

OpenCL A linguagem e seu sistema de tempo de execução servem como uma camada de abstração ao hardware heterogêneo. Um programa OpenCL tem o objeovo de aproveitar todos os disposiovos presentes na máquina.

OpenCL Uma aplicação OpenCL deve seguir os seguintes passos: Descobrir os componentes heterogêneos; Detectar suas caracterísocas; Criar os blocos de instruções (kernels) que irão executar na plataforma heterogênea; Iniciar e manipular objetos de memória; Executar os kernels na ordem correta e nos disposiovos adequados presentes no sistema; Coletar os resultados finais.

Modelo de plataforma É composto por um host e um ou mais disposiovos OpenCL (OpenCL devices). Cada disposiovo possui uma ou mais unidades de computação (compute units). Estes são compostos por um conjunto de elementos de processamento (processing elements).

Modelo de Plataforma!

Modelo de Execução Uma aplicação OpenCL é composta por um programa host e um conjunto de kernels. O programa host executa no host (normalmente uma CPU) e os kernels executam nos disposiovos disponíveis.

Itens de trabalho O programa host envia o comando de execução de um kernel para um disposiovo. Isto faz com que várias instâncias da função que implementa o kernel sejam executadas. Em OpenCL estas instâncias são chamadas de itens de trabalho (work- items) Correspondem às threads de CUDA.

Grupos de trabalho Os itens de trabalho são organizados em grupos de trabalho (work- groups). Estes oferecem uma maneira de estabelecer granularidades diferentes aos grupos de itens de trabalho, o que normalmente facilita a divisão de trabalho e a sincronização.

Contexto Define o ambiente de execução no qual os kernels são definidos e executam e é definido em termos dos seguintes recursos: disposiovos, conjunto de kernels, objetos de programa e objetos de memória. Assim, um contexto é todo o conjunto de recursos que um kernel vai uolizar durante sua execução.

Contexto O contexto é definido em tempo de execução pelo host de acordo com os disposiovos disponíveis. Para possibilitar uma escolha dinâmica do disposiovo o OpenCL compila os kernels dinamicamente, gerando os objetos de programa em tempo de execução.

Fila de comandos A interação entre o host e os disposiovos é realizada através de uma fila de comandos (command- queue). Os comandos são colocados nesta fila e aguardam seu momento de executar. A fila é criada pelo host e conectada a um disposiovo logo após a criação do contexto.

OpenACC Anunciado em novembro de 2011 na conferência SuperCompuOng. É um padrão para programação paralela. O padrão tem como base o compilador PGI (Portland Group)

OpenACC Descreve uma API de programação que fornece uma coleção de dirervas para especificar laços e regiões de código paralelizáveis que podem ter sua execução acelerada por disposiovo tal como uma GPU.

OpenACC O modelo de execução do OpenACC tem três níveis: gang, worker e vector. Em GPU pode ser mapeado como: gang bloco worker warp vector threads em um warp

OpenACC As DireOvas em C/C++ são especificadas usando #pragma Método especificado pelo C padrão para fornecer informações adicionais ao compilador. Mesmo uolizado pelo OpenMP. Se o compilador não uolizar pré- processamento, as anotações são ignoradas na compilação.

OpenACC Cada direova em C/C++ inicia com #pragma acc Os tokens seguintes são tratados por uma macro de pré- processamento que aplica as transformações necessárias ao bloco ou laço imediatamente seguinte.

Intel Xeon Phi x86 SMP- on- a- chip Linux Cada placa tem o seu próprio endereço IP % ssh mic0 64 bits, SIMD vetorial Núcleos conectados em anel bidirecional de alta velocidade Várias configurações > 50 núcleos mulothreading (4 hardware threads por núcleo) execução in- order OpenMP, OpenCL, TBB, Cilk, MPI Intel Language Extensions for Offload

Intel Xeon Phi

Intel Ivy Bridge Intel OpenCL SDK entre outros.

Recursos online openmp.org www.nvidia.com www.gputechconf.com developer.nvidia.com www.khronos.org/opencl www.openacc.org www.hpcwire.com souware.intel.com