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

Preview:

Citation preview

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)

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...

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

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

Recommended