computação paralelae distribuída - deinfodeinfo.uepg.br/~ljsenger/2010/cpd/intro.pdf · 1...

4
1 Computação paralela e distribuída Aula 01 Introdução Prof. Dr. Luciano José Senger Conteúdo Visão geral da disciplina Introdução Conceitos básicos Arquiteturas paralelas Introdução as tecnologias de software para computação paralela Visão geral da disciplina Pré-requisitos Conceitos de programação Linux ou similar Recomendável Inglês Compilador de textos LaTEX Editor de textos vi Objetivos principais Desenvolvimento de software paralelo com bibliotecas de software Arquiteturas alvo Arquiteturas com processamento simétrico (SMP) Arquiteturas de memória distribuída (MIMD) construídas com computadores pessoais Exploração da execução de instruções de máquina visando melhorar o desempenho da computação através de elementos de processamento que cooperam e comunicam entre si É a habilidade de programar em uma linguagem que permite que o programador torne explícito quais porções da computação podem ser executadas concorrentemente Técnica que permite aumentar a velocidade da computação através de caminhos de dados, memória e elementos de armazenamento múltiplos Processamento paralelo consiste na utilização de múltiplos processadores para executar partes diferentes de um mesmo programa simultaneamente Computação paralela: definições Computação sequencial comparada com paralela Porque computação paralela? Reduzir o tempo de execução de aplicações (programas) sequenciais Permitir que aplicações que consomem grandes quantidades de memória possam ser executadas Melhorar a qualidade das soluções através da exploração do paralelismo Ao explorar a computação paralela, pode-se obter uma redução de custos na computação (p.e. Cluster x supercomputador) Crescimento em escala Tendência no desenvolvimento do hardware: manutenção de mesma velocidade de clock com aumento de número de elementos de processamento como uma forma de resolver as limitações de problemas físicos (p.e. aquecimento)

Upload: lamdung

Post on 01-Dec-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computação paralelae distribuída - DEINFOdeinfo.uepg.br/~ljsenger/2010/cpd/intro.pdf · 1 Computação paralelae distribuída Aula 01 Introdução Prof. Dr. LucianoJosé Senger

1

Computaçãoparalela e distribuída

Aula 01Introdução

Prof. Dr. Luciano José Senger

Conteúdo

• Visão geral da disciplina• Introdução• Conceitos básicos• Arquiteturas paralelas• Introdução as tecnologias de software para

computação paralela

Visão geral da disciplina

• Pré-requisitos– Conceitos de programação– Linux ou similar– Recomendável

• Inglês• Compilador de textos LaTEX• Editor de textos vi

• Objetivos principais– Desenvolvimento de software paralelo com bibliotecas

de software– Arquiteturas alvo

• Arquiteturas com processamento simétrico (SMP)• Arquiteturas de memória distribuída (MIMD) construídas

com computadores pessoais

• Exploração da execução de instruções de máquina visando melhorar o desempenho da computação através de elementos de processamento quecooperam e comunicam entre si

• É a habilidade de programar em uma linguagem que permite que o programador torne explícito quais porções da computação podem ser executadas concorrentemente

• Técnica que permite aumentar a velocidade da computação através de caminhos de dados, memória e elementos de armazenamento múltiplos

• Processamento paralelo consiste na utilização de múltiplos processadorespara executar partes diferentes de um mesmo programa simultaneamente

Computação paralela: definições

Computação sequencial comparada com paralela Porque computação paralela?

• Reduzir o tempo de execução de aplicações (programas) sequenciais

• Permitir que aplicações que consomem grandes quantidades de memória possam ser executadas

• Melhorar a qualidade das soluções através da exploração do paralelismo

• Ao explorar a computação paralela, pode-se obter uma redução de custos na computação (p.e. Cluster x supercomputador)

• Crescimento em escala

• Tendência no desenvolvimento do hardware: manutenção de mesma velocidade de clock com aumento de número de elementosde processamento como uma forma de resolver as limitações de problemas físicos (p.e. aquecimento)

Page 2: Computação paralelae distribuída - DEINFOdeinfo.uepg.br/~ljsenger/2010/cpd/intro.pdf · 1 Computação paralelae distribuída Aula 01 Introdução Prof. Dr. LucianoJosé Senger

2

Onde a computação paralela tem sido empregada (Fonte: http://www.top500.org)?

Quais sistemas operacionais são mais empregados (Fonte:

http://www.top500.org)?

Quais aplicações?

• Simulação

• Previsão do tempo

• Projeto de aeronaves

• Sequenciamento genoma

• Dinâmica de fluidos

• Processamento de imagens

• Mineração de dados

• Criação de uma linguagem de programação paralela que permita que o programador deixe explícito quais partes do programa serãoexecutadas em paralelo

– Linguagem Occam, Ada

• Ferramentas de paralelização automática: compilador que aceita comoentrada um programa escrito em uma linguagem de programaçãosequencial e gera automaticamente um programa paralelo parauma determinada arquitetura

– Compiladores C e Fortran

• Extensão de linguagens de programação sequenciais, através da criaçãode API para programação concorrente

– MPI, PVM, OpenMP

• A melhorar alternativa depende da análise de custo, possibilidadede crescimento em escala, desempenho, natureza da aplicação e portabilidade

Como utilizar o paralelismo (ferramentas)?

• Elementos de processamento são representados por:– Processadores: em computadores com mais de um

processador

– Núcleos (cores): em computadores que tem um processadorcentral com vários elementos de processamento (p.e. Dual Core, Athlon)

– Nós: aglomerado de computadores (cluster)

– Estações de trabalho: rede de estações de trabalho

– Processador gráfico

• A definição depende do nível de exploração do paralelismo: por exemplo, um nó de processamentopode ser composto por vários processadores, cada um com vários núcleos

Arquiteturas paralelas Arquiteturas paralelas

• Classificação de Flynn: a mais utilizada– Organiza os computadores em relação aos fluxos

de instruções e dados– Quatro grupos

• SISD (Single instruction single data)• SIMD (Single instruction multiple data)• MISD (Multiple instruction single data)• MIMD (Multiple instruction multiple data)

– Outras classificações:• Organização de memória

– Compartilhada– Distribuída

• Acoplamento, etc...

Page 3: Computação paralelae distribuída - DEINFOdeinfo.uepg.br/~ljsenger/2010/cpd/intro.pdf · 1 Computação paralelae distribuída Aula 01 Introdução Prof. Dr. LucianoJosé Senger

3

13

Arquiteturas paralelas: SISD

• Existe uma únicaunidade de processamento, queexecuta fluxos de dados e instruções únicos

• Exemplo– Computadores de um

processador simples, que não implementanenhuma forma de paralelismo(funcional, pipeline, etc)

Instruções

14

Arquiteturas paralelas: variações do modelo SISD

• Há tempos o modeloSISD tem sidomelhorado, incorporando técnicasde processamentoparalelo ousuperescalar

– Pipeline

– Paralelismo em nívelde instrução

– Paralelismo funcional

15

Arquiteturas paralelas: detalhamento do modelo SISD com pipelining de instruções

Slide Source: Wikipedia, Flynn’s Taxonomy 16

Arquiteturas paralelas: modelo SIMD

• Único fluxo de instruçõesopera sobre um fluxomúltiplo de dados

• Cada elemento de processamento recebe a mesma instrução, oquemuda são os dados

• Exemplos– Computadores

paralelos antigos

– Tecnologia SSE

– Placas aceleradorasgráficas

Arquiteturas paralelas: detalhamento do modelo SIMD

B(I)=A(I)*4LOAD A(I)

MULT 4

STORE B(I)

TEMPO:

t1

t2

t3

LOAD A(1)

MULT 4

STORE A(1)

LOAD A(2)

MULT 4

STORE A(2)

LOAD A(3)

MULT 4

STORE A(3)

. . .

. . .

. . .

18

Arquiteturas paralelas: comparação entre os modelosSISD e SIMD

Page 4: Computação paralelae distribuída - DEINFOdeinfo.uepg.br/~ljsenger/2010/cpd/intro.pdf · 1 Computação paralelae distribuída Aula 01 Introdução Prof. Dr. LucianoJosé Senger

4

Not useful…

Slide Source: Wikipedia, Flynn’s Taxonomy

19

Arquiteturas paralelas: modelo MISD

• Não há arquiteturasque implementameste modelo

• Alguns autoresconsideram o pipelining umaforma de implementaçãoMISD

As of 2006, all the top 10 and most of the TOP500 supercomputers were based on a MIMD architecture

Slide Source: Wikipedia, Flynn’s Taxonomy

20

Arquiteturas paralelas: modelo MIMD

• Fluxos de instruçõesdiferentes operamsobre fluxos de dados também diferentes

• Podem ser organizadas em doisgrupos

– Memóriacompartilhada

– Memóriadistribuída

Arquiteturas paralelas: modelo MIMD

• Memória compartilhada– Chamados também de

multiprocessadores

– Todos os computadorescompartilham a mesmamemória

• Memória distribuída• Chamados também de

multicomputadores

• Os elementos de processamento comunicamatravés de troca de mensagens

Exemplos de arquiteturas MIMD

• Clusters– Conjunto formado por computadores de uso geral (PCs, estações de

trabalho) e interligados preferencialmente por uma rede de baixa latênciana comunicação

– gerenciado por um software, chamado de software de escalonamento (batchsystem)

Exemplos de Arquiteturas MIMD

• Redes de estações de trabalho• Permite utilizar computadores frequentemente ociosos

para o processamento paralelo• “Computador paralelo dos pobres”

• Máquinas de processamento altamente paralelo(MPPs)

• Computadores paralelos montados a partir de processadores de mercado e com redes dedicadas de comunicação

• exemplo:IBM SP2

E o software?

• É possivel obter uma execução paralela de váriasformas, empregando diferentes ferramentas (software)

• A ferramenta de software mais indicada dependerá de fatores como:

– Custo

– Adequação ao hardware

– Crescimento em escala

– Desempenho

– Aplicações legadas

• A computação paralela usa conceitos de programaçãoconcorrente

– Existe a necessidade de comunicação, sincronismo e controle da execução paralela