Você está na página 1de 4

Conteúdo

• Visão geral da disciplina


Computação
• Introdução
paralela e
• Conceitos básicos
distribuída
• Arquiteturas paralelas
Aula 01 • Introdução as tecnologias de software para
Introdução computação paralela

Prof. Dr. Luciano José Senger

Visão geral da disciplina Computação paralela: definições


• Pré-requisitos
– Conceitos de programação • 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
– Linux ou similar
cooperam e comunicam entre si
– Recomendável
• Inglês • É a habilidade de programar em uma linguagem que permite que o
• Compilador de textos LaTEX programador torne explícito quais porções da computação podem ser
• Editor de textos vi executadas concorrentemente
• Objetivos principais
• Técnica que permite aumentar a velocidade da computação através de
– Desenvolvimento de software paralelo com bibliotecas caminhos de dados, memória e elementos de armazenamento múltiplos
de software
– Arquiteturas alvo • Processamento paralelo consiste na utilização de múltiplos processadores
• Arquiteturas com processamento simétrico (SMP) para executar partes diferentes de um mesmo programa simultaneamente
• Arquiteturas de memória distribuída (MIMD) construídas
com computadores pessoais

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)

1
Onde a computação paralela tem sido empregada (Fonte: Quais sistemas operacionais são mais empregados (Fonte:
http://www.top500.org)? http://www.top500.org)?

Quais aplicações? Como utilizar o paralelismo (ferramentas)?

• Simulação • Criação de uma linguagem de programação paralela que permita que o


programador deixe explícito quais partes do programa serão
executadas em paralelo
• Previsão do tempo – Linguagem Occam, Ada
• Ferramentas de paralelização automática: compilador que aceita como
• Projeto de aeronaves entrada um programa escrito em uma linguagem de programação
sequencial e gera automaticamente um programa paralelo para
• Sequenciamento genoma uma determinada arquitetura
– Compiladores C e Fortran
• Dinâmica de fluidos • Extensão de linguagens de programação sequenciais, através da criação
de API para programação concorrente
• Processamento de imagens – MPI, PVM, OpenMP
• A melhorar alternativa depende da análise de custo, possibilidade
• Mineração de dados de crescimento em escala, desempenho, natureza da aplicação e
portabilidade

Arquiteturas paralelas Arquiteturas paralelas


• Elementos de processamento são representados por: • Classificação de Flynn: a mais utilizada
– Processadores: em computadores com mais de um – Organiza os computadores em relação aos fluxos
processador
de instruções e dados
– Núcleos (cores): em computadores que tem um processador
central com vários elementos de processamento (p.e. Dual – Quatro grupos
Core, Athlon) • SISD (Single instruction single data)
– Nós: aglomerado de computadores (cluster) • SIMD (Single instruction multiple data)
– Estações de trabalho: rede de estações de trabalho • MISD (Multiple instruction single data)
– Processador gráfico • MIMD (Multiple instruction multiple data)
• A definição depende do nível de exploração do – Outras classificações:
paralelismo: por exemplo, um nó de processamento • Organização de memória
pode ser composto por vários processadores, cada um – Compartilhada
com vários núcleos – Distribuída
• Acoplamento, etc...

2
Arquiteturas paralelas: SISD Arquiteturas paralelas: variações do modelo SISD

• Existe uma única • Há tempos o modelo


unidade de SISD tem sido Instruções
processamento, que melhorado,
executa fluxos de dados incorporando técnicas
e instruções únicos de processamento
• Exemplo paralelo ou
– Computadores de um superescalar
processador simples, – Pipeline
que não implementa – Paralelismo em nível
nenhuma forma de de instrução
paralelismo – Paralelismo funcional
(funcional, pipeline,
etc)

13 14

Arquiteturas paralelas: detalhamento do modelo SISD com


pipelining de instruções Arquiteturas paralelas: modelo SIMD
• Único fluxo de instruções
opera sobre um fluxo
múltiplo de dados
• Cada elemento de
processamento recebe a
mesma instrução, oque
muda são os dados
• Exemplos
– Computadores
paralelos antigos
– Tecnologia SSE
– Placas aceleradoras
gráficas

15 Slide Source: Wikipedia, Flynn’s Taxonomy 16

Arquiteturas paralelas: detalhamento do modelo SIMD Arquiteturas paralelas: comparação entre os modelos
SISD e SIMD

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

TEMPO:
...
t1 LOAD A(1) LOAD A(2) LOAD A(3)

t2 ...
MULT 4 MULT 4 MULT 4

...
t3
STORE A(1) STORE A(2) STORE A(3)

18

3
Arquiteturas paralelas: modelo MISD Arquiteturas paralelas: modelo MIMD

• Não há arquiteturas • Fluxos de instruções


que implementam diferentes operam
este modelo sobre fluxos de dados
também diferentes
• Alguns autores
consideram o • Podem ser
organizadas em dois
pipelining uma
grupos
forma de
– Memória
implementação compartilhada
MISD – Memória
distribuída

Not useful… 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
Slide Source: Wikipedia, Flynn’s Taxonomy

19 20

Arquiteturas paralelas: modelo MIMD Exemplos de arquiteturas MIMD


• Memória compartilhada • Clusters
– Chamados também de – Conjunto formado por computadores de uso geral (PCs, estações de
multiprocessadores trabalho) e interligados preferencialmente por uma rede de baixa latência
– Todos os computadores na comunicação
compartilham a mesma – gerenciado por um software, chamado de software de escalonamento (batch
memória system)

• Memória distribuída
• Chamados também de
multicomputadores
• Os elementos de
processamento comunicam
através de troca de
mensagens

Exemplos de Arquiteturas MIMD E o software?


• Redes de estações de trabalho • É possivel obter uma execução paralela de várias
• Permite utilizar computadores frequentemente ociosos formas, empregando diferentes ferramentas (software)
para o processamento paralelo • A ferramenta de software mais indicada dependerá de
• “Computador paralelo dos pobres” fatores como:
– Custo
• Máquinas de processamento altamente paralelo
– Adequação ao hardware
(MPPs)
– Crescimento em escala
• Computadores paralelos montados a partir de – Desempenho
processadores de mercado e com redes dedicadas de – Aplicações legadas
comunicação
• A computação paralela usa conceitos de programação
• exemplo:IBM SP2 concorrente
– Existe a necessidade de comunicação, sincronismo e
controle da execução paralela

Você também pode gostar