Parallel Computing Paradigms



Documentos relacionados
Computação Paralela. João Luís Ferreira Sobral

Paradigmas de Computação

UCE- Computação Paralela e Distribuída Paradigmas de Computação Paralela

Arquitecturas Paralelas I. Computação Paralela. João Luís Ferreira Sobral

Arquitecturas Paralelas I. Computação Paralela. João Luís Ferreira Sobral

Paradigmas de Computação Paralela

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

OpenMP: Variáveis de Ambiente

Programação Concorrente e Paralela. Noemi Rodriguez

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

Disciplina de Arquitetura de Computadores

SSC510 Arquitetura de Computadores. 6ª aula

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais

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

Pós-Graduação em Computação Distribuída e Ubíqua

Programação Distribuída e Paralela Apresentação

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Introdução

The future is parallel but it may not be easy

ARQUITECTURA DE COMPUTADORES 2013/2014 2º SEMESTRE

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Linguagens para Programação Paralela. October 26, 2010

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

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

SISTEMAS DISTRIBUÍDOS

Arquiteturas paralelas Parte 1

Sistemas Distribuídos e Paralelos

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

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

Disciplina de Arquitetura de Computadores

Análise de Desempenho de Aplicações Paralelas do Padrão Pipeline em Processadores com Múltiplos Núcleos

Programação Paralela e Distribuída

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

Arquitetura de Sistemas Digitais

Ruby e JRuby em... Paralelos e Distribuídos. Felipe Barden Lucas Fialho Zawacki

CIC Organização e Arquitetura de Computadores. Prof. Ricardo Jacobi Notas de Aula: Prof. Gerson Henrique Pfitscher

Linguagem de Programação II

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

Avaliação das Interfaces de Ferramentas de Programação Concorrente Com a Suíte Cowichan

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

Computadores e Programação (DCC/UFRJ)

William Stallings Organização de computadores digitais. Capítulo 11 Estrutura e função da CPU

Arquitetura de Software

Requer conhecimentos prévios de tecnologia informática e de representação de informação em sistemas digitais binários.

Paralelização do Método de Jacobi em Memória Compartilhada 1

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

COMPILADORES PROGRAMA E BIBLIOGRAFIA

Parallel Algorithms for Multicore Game Engines

SSC0611 Arquitetura de Computadores

Introdução OpenMP. Nielsen Castelo Damasceno

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

Arquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it?

Análise de Drawbacks no Desdobramento de Laços Relativo a Caches Associativas de GPUs

Programação Concorrente e Paralela. Noemi Rodriguez

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

Introdução à plataforma Java

Concurso público de provas e títulos para professor adjunto

Exemplo Amdahl. O speedup total é dado por:

Licenciatura em Informática

Arquiteturas Paralelas

Transcrição:

João Luís Ferreira Sobral www.di.uminho.pt/~jls jls@... Web: Elearning 1

At the end of the course, students should be able to: Design and optimise parallel applications that can efficiently run on a wide range of parallel computing platforms Identify/develop parallel applications using well-known parallelism patterns Identify limitations of current parallel programming paradigms and languages Identify limitations and workarounds to performance scalability Program (short version) Programming models and languages Shared vs distributed memory models Threads, communicating processes and distributed objects Tasks distribution among resources Mechanisms to express concurrency/parallelism Design of parallel applications Design phases: partition, communication, agglomeration, mapping Typical parallel algorithms: pipelining, farming, heartbeat e divide & conquer Measurement, analysis and optimisation of parallel applications Scalability analysis: cost / benefit of parallelism and its quantification (metrics) Granularity control: computation versus communication Load distribution techniques and data partition 2

Final grade One mini-project: development of typical parallel applications On shared memory (35%) On distributed memory (50%) On a recent programming language (15%) Requirements Basic Java and C /SCD Bibliography (base) Slides M. Quinn. Parallel programming in C with C and OpenMP, McGraw Hill, 2003 I. Foster. Designing and Building Parallel Programs, Addison-Wesley, 1995. Bibliography (additional) M. McCool, J. Reinders, A. Robison, Structured Parallel Programming: Patterns for Efficient Computation, Morgan Kaufmann, 2012 C. Lin, L. Snyder, Principles of parallel programming, Pearson international,2009 R. Gerber, A. Binstock. Programming with Hyper-Threading Technology, Intel Press, 2004. F. Buschmann, D. Schmidt, M. Stal, H. Rohnert, Pattern-oriented Software Architecture Vol 2: Patterns for Concurrent and Networked Objects, John Wiley and Sons Ltd, 2000. 3

Introdução Níveis e tipos de paralelismo Paradigmas vs linguagens de programação Linguagens baseadas em: directivas (OpenMP), extensões à linguagem (java) vs bibliotecas (TBB) Programação baseada no paradigma de memória partilhada OpenMP Java threads / cilk Intel Thread building blocks Modelos de consistência de memória Medição de otimização de desempenho em memória partilhada Programação baseada no paradigma de memória distribuída Processos comunicantes (MPI) Objectos distribuídos, cliente/servidor Desenho de aplicações paralelas Padrões comuns de computação Medição e otimização de desempenho em memória partilhada Programação baseada em modelos híbridos Modelo híbrido MPI + OpenMP Modelos de memória virtual partilhada (virtual shared memory) Modelo global com partições (partitioned global address space) Modelos e paradigmas de computação paralela classificação das várias linguagens para computação paralela 4

Paradigmas de Computação Paralela Evolução das arquiteturas de computadores Microprogramação Pipelining Superescalaridade Caches Timeshared Memória Virtual RISC VLIW (EPIC) CC-UMA CC-NUMA Not-CC-NUMA Passagem de Mensagens GRID/Internet SIMD Evolução ILP Multithreading Processos comunicantes Revolução Os processadores exploram paralelismo ao nível da instrução de forma transparente Uma revolução obriga à alteração da forma de pensar dos programadores A ênfase de computação paralela é na programação deste tipo de arquitecturas 5

Paradigmas de Computação Paralela Evolução das arquiteturas de computadores 10000 1000 Processor transistor counts 10 1 GHz Processor clock rates 100 10 0.1 1Million transistors 0.01 0.1 0.01 0.001 0.001 1970 1975 1980 1985 1990 1995 2000 2005 2010 0.0001 1970 1975 1980 1985 1990 1995 2000 2005 2010 1000 Processor power (Watts) 100 10 Watts 1 0.1 1970 1975 1980 1985 1990 1995 2000 2005 2010 6

A methodology to develop parallel applications Problem Partitioning Identification of communication Task/communication agglomeration Mapping 7