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

Documentos relacionados
Sistemas Distribuídos

SSC510 Arquitetura de Computadores. 6ª aula

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

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

Carlos Eduardo Batista Centro de Informática - UFPB

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Arquiteturas Paralelas

Programação Concorrente e Paralela

Multiprogramação leve em arquiteturas multi-core

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

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

Disciplina de Arquitetura de Computadores

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

Sistemas distribuídos. Prof. Emiliano Monteiro

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

SIST706 Sistemas Distribuídos

Linguagem de Programação II

SSC0611 Arquitetura de Computadores

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

Arquitetura de Computadores. Processamento Paralelo

O estado de arte: a evolução de computação de alto desempenho

Programação Distribuída e Paralela. Jorge Barbosa

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

Computação de alto desempenho

SSC PROGRAMAÇÃO CONCORRENTE. Aula 02 Revisão de Arquiteturas Paralelas Parte 1 Prof. Jó Ueyama

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio

Organização e Arquitetura de Computadores I

PARALELISMO NO NÍVEL DO PROCESSADOR

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Computação de alto desempenho

SSC510 Arquitetura de Computadores. 10ª aula

Arquiteturas paralelas Parte 1

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

Modelo de Von Neumann

TOP Arquitetura dos supercomputadores

Caracterização de Sistemas Distribuídos

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

Processadores para computação de alto desempenho

Sistemas Operacionais Distribuídos

Arquitetura de Computadores. Prof. João Bosco Jr.

Processadores para computação de alto desempenho

Programação Concorrente e Paralela. Noemi Rodriguez

Processamento Paralelo & Multiprocessadores

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

Organização de Computadores II. Arquiteturas MIMD

JAVA CÁ & LÁ Um Middleware para Computação Paralela e Distribuída

SSC0510 Arquitetura de Computadores

5 Unidades de Processamento Gráfico GPUs

É uma forma eficiente do processamento da informação com ênfase na exploração de eventos concorrentes no processo computacional.

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

Ambientes de computação de alto desempenho no LNCC

Programação Paralela

Prof a Andréa Schwertner Charão DELC/CT/UFSM

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

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Organização de Computadores 2005/2006 Processamento Paralelo

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

Computação Paralela (CUDA)

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

Processadores para computação de alto desempenho

OpenMP: Variáveis de Ambiente

Computadores e Programação (DCC/UFRJ)

Arquiteturas de Computadores

Processamento Paralelo

Processamento Paralelo

Modelos para Concorrência

Desafios do Mapeamento de Processos em Arquiteturas Many-Core

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

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

Arquitetura de Sistemas Digitais

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

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

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

Introdução. Programação Paralela. Motivação. Conhecimento do Hardware. Análise de Desempenho. Modelagem do Problema

Programação Paralela. Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes

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

SSC510 Arquitetura de Computadores. 7ª aula

Algoritmos Paralelos. Prof a : Cristina Boeres. Pós Graduação em Computação Instituto de Computação - UFF

Estrutura da Apresentação. Introdução ao Processamento Paralelo e Distribuído. Conceitos em PPD. Conceitos em PPD 4/26/09.

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 :-)

Arquitetura de sistemas distribuídos

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

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

Uma Proposta para Migração de Páginas Linux

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas MIMD

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama

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

Programação Paralela e Distribuída

Unidade 12: Introdução ao Paralelismo:

Como programar um computador com processadores? ou: Oportunidades e Desafios da Computação Paralela

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

SISTEMAS OPERACIONAIS DE REDE

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Ferramentas para Programação em Processadores Multi-Core

1 Fundamentos de Processamento de Alto Desempenho


SISTEMAS OPERACIONAIS DE REDE

Transcrição:

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

Sumário Introdução: conceitos de paralelismo Conceitos básicos sobre padrões de programação paralela Padrões paralelos para controle de fluxo Padrões paralelos para gerenciamento de dados Considerações finais

Objetivos Familiarização com aspectos teóricos e práticos relacionados à programação paralela. Uso de padrões de programação e algoritmos para se obter paralelismo de baixo custo em um ou mais nós computacionais.

Classificações de máquinas paralelas: (1) Flynn Fluxo de dados Fluxo de instruções Único Múltiplo SD (Single Data) MD (Multiple Data) SI (Single Instruction) SISD SIMD MI (Multiple Instruction) MISD MIMD

Classificações de máquinas paralelas: (2) compartilhamento de memória (2.1) Multiprocessadores Todos os processadores acessam uma memória compartilhada através de uma rede de interconexão. O espaço de endereçamento à memória é único. Em relação ao tipo de acesso, podem ser classificados em: Acesso uniforme (UMA) Acesso não-uniforme (NUMA)

Classificações de máquinas paralelas: (2) compartilhamento de memória P P P P P P P Rede de Interconexão Arquitetura de um multiprocessador

Classificações de máquinas paralelas: (2) compartilhamento de memória (2.2) Multicomputadores Cada processador tem sua própria memória local. Espaço de endereçamento múltiplo. Tipo de acesso à memória: NORMA (non-remote memory access)

Classificações de máquinas paralelas: (3) PAD Tendências SMP MPP Clusters Aceleradores Fonte: www.top500.org (2013)

Symmetric Multiprocessor (SMP) Memória principal: compartilhada entre todos os processadores/núcleos. Programa paralelo: um processo com múltiplas threads executa em processadores diferentes. Dados compartilhados entre as threads: Acessam espaço de endereçamento único do processo. Troca de dados e a sincronização é feita através de alterações nos dados compartilhados.

Symmetric Multiprocessor (SMP)

Massively Parallel Processors (MPP) Multicomputadores construídos com milhares de processadores comerciais. Processadores com memória local própria e espaço de endereçamento múltiplo. Rede proprietária de alta velocidade. Acesso à memória do tipo NORMA. Comunicação/sincronização entre processos através de troca de mensagens.

Clusters Múltiplos nós de processamento são interconectados. Frontend: permite que usuário acesse o cluster para compilar e executar programas. Backend: realizam a computação paralela. São interconectados através de rede de baixa latência. Gigabit Ethernet, InfiniBand, SCI, Myrinet Os nós não compartilham espaço de endereçamento. Memória distribuída. Dados devem ser particionados e distribuídos. Comunicação e sincronização através de troca de mensagens.

Clusters

Cluster + SMP São clusters onde cada nó é um SMP. Memória: Compartilhada em cada backend. Distribuída entre os nós do cluster. Devido à alta utilização de multicores na construção de clusters este modelo tem se tornado cada vez mais popular. A arquitetura que se sobressai é a de cluster.

Cluster + SMP

Aceleradores Atuam em conjunto com as CPUs dentro de um único nó de processamento. São uma alternativa de baixo custo realizar computação heterogênea com o objetivo de aumentar o desempenho de aplicações. Principal problema: transferência de memória. Alguns exemplos: Cell BEA, FPGAs e GPUs.

Heterogeneous Computing 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 multicore or stream accelerators GP core + FPGA fabric IBM Power + Cell.

Necessidade padrões de programação paralela Padrões de programação já surgem como uma necessidade frente a diversos problemas comuns Lembre-se que padrões de programação podem ser vistos como soluções comuns para problemas comuns Além disto, há um número crescente de hardware paralelo heterogêneo, cuja programação pode se beneficiar de padrões de programação

Necessidade padrões de programação paralela Maior ênfase em abstrações ao invés de mecanismos Padrões de programação favorecem o reúso

Notação para Especificação de Padrões de Programação Paralela

Parte da Fauna de Padrões de Programação Paralela

Suporte a Padrões em Algumas Tecnologias Paralelas