TELP: Aplicações Paralelas
em Ambientes de Passagem
de Mensagens
Introdução à Computação Paralela
Conceito de Processamento Paralelo


Divisão de uma determinada aplicação, de
forma que esta possa ser executada por
vários elementos de processamento, que
deverão cooperar entre si (comunicação e
sincronismo) (FOSTER et al., 2003),
Ganho de eficiência por meio da quebra da
execução seqüencial do fluxo de instruções
da máquina de von Neumann (ALMASI &
GOTTLIEB, 1994).
Histórico



Em 1920, Vanevar Bush, do MIT (Massachussets
Institute of Technology), apresentou um computador
analógico que resolvia equações diferenciais em
paralelo.
Von Neumann, em seus artigos, por volta de 1940,
também sugeriu utilizar paralelismo como forma de
se resolver equações diferenciais.
O surgimento do computador ILLIAC IV
(supercomputador composto por 64 processadores),
projeto iniciado na década de 60 e colocado em
operação em 1972, na Universidade de Illinois, foi
considerado o marco inicial do processamento
paralelo (ROSE & NAVAUX, 2003).
Motivação pelo paralelismo




Basicamente: ganho de desempenho.
Especificamente (ALMASI & GOTTLIEB, 1994):
Restrições físicas à melhoria de desempenho de um
único processador: velocidade da luz, as leis da
Termodinâmica, a dimensão física dos componentes
e o custo;
O desenvolvimento tecnológico permitiu a
construção de microprocessadores de alto
desempenho, que agrupados, possibilitam um
ganho significativo de poder computacional.
Motivação pelo paralelismo



Microprocessadores de alto desempenho
possibilitam uma melhor relação custo/desempenho
quando comparadas aos supercomputadores de
custo extremamente alto;
Agrupamento de microprocessadores em módulos
permite a expansão do sistema através da inclusão
de novos módulos;
Maior facilidade em incorporar o conceito de
tolerância à falhas devido à redundância de
hardware.
Motivação pelo paralelismo
Motivação pelo paralelismo
Concorrência e Paralelismo


A concorrência existe quando dois ou mais
processos iniciaram a sua execução e ainda
não foram finalizados, sem que haja uma
relação com o número de elementos de
processamento utilizados.
Quando existe apenas um elemento de
processamento e vários processos estão
sendo executados de maneira concorrente
existe um pseudo-paralelismo ou paralelismo
lógico
Concorrência e Paralelismo

Paralelismo lógico:



os processos estão
supostamente sendo
executados ao mesmo
tempo
há apenas o
compartilhamento do
elemento de
processamento entre os
processos em execução.
em um determinado
instante de tempo, apenas
um processo está em
execução
processos
e3
e3
e2 e2
e2
e1
e1
t
t1
tempo
Concorrência e Paralelismo
processos

Paralelismo físico:

Quando se tem mais de
um elemento de
processamento e
existem processos
sendo executados ao
mesmo tempo, há um
paralelismo físico ou
simplesmente
paralelismo.
e3
e2
e1
t
t1
tempo
Granulosidade ou granularidade


A granulosidade (ou nível de paralelismo)
representa o tamanho das tarefas
submetidas aos processadores e pode ser
classificada em fina, média e grossa
(GRAMA et al., 2003).
Este conceito está intimamente ligado ao tipo
de máquina paralela em que o programa
será executado.
Granulosidade Fina

Indica que o paralelismo está sendo realizado em
nível de operações ou instruções.




Geralmente, requer um número maior de comunicação por
parte das unidades de processamento.
Desvantagem: alto custo de sincronização.
Vantagem: uso de processadores mais simples.
Os computadores multiprocessados são mais adequados a
processos paralelos de granulosidade fina,
Granulosidade Média

Indica o paralelismo obtido através da
execução de blocos ou sub-rotinas do
programa.
Granulosidade Grossa

Relaciona o paralelismo em nível de
processos.



Geralmente, requer um número menor de
comunicação e sincronismo entre os
processadores.
Uso de processadores mais genéricos e
complexos do que os destinados à execução de
programas de granulosidade fina.
Os multicomputadores executam melhor os
processos paralelos com granulosidade de média
a grossa (FOSTER, 1995).
Taxa de granulosidade

G = P /C


Onde C e P se referem respectivamente aos
tempos de comunicação e processamento local;
G alto significa granulosidade grossa, isto é,
muito processamento local e pouca
comunicação.
Medidas de Desempenho

Speed up: medida utilizada para determinar
o aumento de velocidade obtido durante a
execução de um programa (código paralelo)
em p processadores, em relação à execução
desse programa (código seqüencial) em um
único processador.


Sp = T1 / Tp
Onde T1 é o tempo de execução em um
processador e Tp é o tempo de execução em p
processadores.
Medidas de Desempenho


Speed up: caso ideal é quando Sp = p, isto é, o
ganho de speed up tende a p, indicando que a
velocidade de processamento é diretamente
proporcional ao número de processadores.
Dificuldades para a obtenção do caso ideal são:



sobrecarga da comunicação entre processadores,
partes do código executável estritamente seqüencial (que
não podem ser paralelizadas)
nível de paralelismo utilizado (devido à granulosidade ser
inadequada ao tipo de arquitetura utilizada).
Medidas de Desempenho


Speed up: Eventualmente Sp > p (superlinear)
ocorre quando o tempo de execução de um
programa seqüencial é bem superior ao tempo
gasto pelo seu correspondente paralelo para
solucionar um determinado problema.
Fatores:


limitações de hardware da máquina que executou o
programa seqüencial
má formulação do algoritmo seqüencial, deteriorando o
tempo total de sua execução.
Medidas de Desempenho

Eficiência (Ep): trata da relação entre o
Speed up e o número de processadores.


Ep = Sp / p  [0,1]
A eficiência fornece o “quanto” os processadores
estão sendo utilizados. O caso ideal é obtido
quando Ep =1, indicando uma eficiência de
100%.
Medidas de Desempenho

Lei de Amdahl (AMDAHL, 1967)


o Speed up sofre limitações devido aos trecho(s)
não paralelizável(is) de um programa :
Sp ≤ 1 / (T<f> + T<1–f> /p)




f é a fração inerentemente seqüencial de um programa.
(1-f) é a parte paralelizável de um programa.
p é o número de processadores, sendo p > 1.
Uma estimativa de ganho ideal:

I = Ts / (T<f> + T<1–f> /p)
Medidas de Desempenho



Toda solução paralela, em um dado
momento, possui um ponto de saturação
onde o speed up não apresenta mais ganhos
significativos e a eficiência cai.
O programa paralelo não atende mais de
maneira satisfatória à escalabilidade da
máquina paralela.
Tanto o speed up e quanto a eficiência
continuam a cair com o incremento de p.
Arquiteturas Paralelas

Classificação de Flynn


O processo computacional deve ser visto como
um fluxo de instruções executando sobre um fluxo
de dados (FOSTER et al., 2003).
A classificação de Flynn acomoda as arquiteturas
em quatro classes de máquinas: SISD, SIMD,
MISD e MIMD.
Arquiteturas Paralelas

SISD - Single Instruction Stream / Single
Data Stream


Fluxo único de instruções / Fluxo único de dados:
corresponde ao tradicional modelo de Von
Neumann (apenas um processador).
Um processador executa seqüencialmente um
conjunto de instruções sobre um conjunto de
dados
Arquiteturas Paralelas

SISD
FI
UC
UP
M
= Fluxo de Instruções
= Unidade de Controle
= Unidade de Processamento
= Memória
FI
UC
UP
M
Arquiteturas Paralelas

SIMD - Single Instruction Stream / Multiple
Data Stream


Fluxo único de instruções / Fluxo múltiplo de
dados: envolve múltiplos processadores
executando simultaneamente a mesma instrução
em diversos conjuntos de dados.
Exemplos: as máquinas paralelas com
processadores Array como CM-2 e MasPar
(ROSE & NAVAUX, 2003).
Arquiteturas Paralelas

FI
SIMD
UC
FI
UC
UP
M
= Fluxo de Instruções
= Unidade de Controle
= Unidade de Processamento
= Memória
UP
M
UP
M
…
…
UP
M
Memória
Arquiteturas Paralelas

MISD - Multiple Instruction Stream / Single
Data Stream


Fluxo múltiplo de instruções / Fluxo único de
dados: envolve múltiplos processadores
executando diferentes instruções em um único
conjunto de dados.
Nenhuma arquitetura é classificada como MISD,
mas alguns autores consideram o pipeline como
um representante dessa categoria.
Arquiteturas Paralelas

FD
MISD
FI
M
FI
UP
FD
M
UC
FI
= Unidade de Processamento
= Fluxo de Dados
= Memória
= Unidade de Controle
= Fluxo de Instruções
UC
M
UC
...
...
FI
M
UC
FD
FI
UP
FI
UP
FI
UP
Arquiteturas Paralelas

Pipeline:


Implementa um paralelismo temporal,
caracterizado quando existe a execução de
eventos sobrepostos no tempo.
A tarefa que será executada é dividida em subtarefas, cada uma destas sendo executada por
um estágio de hardware especializado que
trabalha de maneira concorrente com os demais
estágios envolvidos na computação
(PATTERSON & HENNESSY, 2000).
Arquiteturas Paralelas

Pipeline:
Arquiteturas Paralelas

MIMD - Multiple Instruction Stream / Multiple Data
Stream




Fluxo múltiplo de instruções / Fluxo múltiplo de dados:
envolve múltiplos processadores executando diferentes
instruções em diferentes conjuntos de dados,
A interação entre os processadores é feita pela memória.
Cada processador executa o seu próprio programa sobre
seus próprios dados de forma assíncrona.
O princípio MIMD é bastante genérico, daí cabe ainda uma
subdivisão, de acordo com o tipo de acesso à memória.
Arquiteturas Paralelas

MIMD
UC
FI
UC
FI
...
UP
= Unidade de
Processamento
FD = Fluxo de Dados
M = Memória
UC = Unidade de Controle
FI = Fluxo de Instruções
UC
UP
UP
FD
FD
...
FI
UP
FD
M
FI
M
FI
...
...
M
FI
Arquiteturas Paralelas

MIMD:


Máquinas com memória compartilhada são
conhecidas como multiprocessadores ou
sistemas fortemente acoplados,
Máquinas que possuem memória não
compartilhada (distribuída) são ditas
multicomputadores ou sistemas fracamente
acoplados.
Compartilhamento de Memória

Multiprocessadores

Acesso Uniforme à Memória (UMA Uniform Memory Access): a memória é
centralizada e encontra-se à mesma
distância de todos os processadores.

A latência de acesso à memória é igual para
todos os processadores do sistema.
Compartilhamento de Memória

UMA:
P
P
P
P
P
Rede de Interconexão
Memória
P
P
P
Compartilhamento de Memória

Multiprocessadores

Acesso Não Uniforme à Memória (NUMA - Non-Uniform
Memory Access): a memória é organizada em módulos
que são associados, de um para um, aos processadores.



O espaço de endereçamento é único e cada processador
pode endereçar toda a memória do sistema.
A latência de acesso à memória depende se o endereço,
gerado por um processador, encontra-se no módulo de
memória diretamente ligado a ele ou não.
Um processador deve utilizar a rede de interconexão para
acessar informações mantidas em outros módulos de
memória.
Compartilhamento de Memória

NUMA:
espaço de endereçamento
M
M
M
M
M
M
M
M
P
P
P
P
P
P
P
P
Rede de Interconexão
Compartilhamento de Memória

Multiprocessadores NUMA:
 Acesso Não Uniforme à Memória Sem Consistência
de Cache


Acesso Não Uniforme à Memória Com Consistência
de Cache


NCC-NUMA – Non-Cache-Coherent Non-Uniform Memory
Access
CC-NUMA – Cache-Coherent Non-Uniform Memory
Access
Acesso Não Uniforme à Memória Com Consistência
de Cache em Software


SC-NUMA – Software-Coherent Non-Uniform Memory
Access
DSM (Distributed Shared Memory)
Compartilhamento de Memória

Multiprocessadores NUMA:

Arquiteturas de Memória Somente com Cache





COMA - Cache-only Memory Architecture
Todas as memórias locais são estruturadas como memória
cache e são chamadas de COMA caches.
As COMA caches têm muito mais capacidade que uma
cache tradicional.
A memória principal é composta pelas COMA caches,
sendo que as gerências de caches e de memória ficam a
cargo de um hardware de suporte, implementado somente
nesse tipo de máquina.
Essa complexidade faz com que essa estrutura seja mais
cara de implementar que demais máquinas NUMA.
Compartilhamento de Memória

COMA
M
M
M
P
P
P
M
P
M
M
M
M
P
P
P
P
Rede de Interconexão
Compartilhamento de Memória

Multicomputadores

Sem Acesso a Variáveis Remotas





NORMA - Non-Remote Memory Access
Cada processador possui sua própria memória local, à qual
apenas ele tem acesso direto.
As memórias dos outros processadores são consideradas
remotas e possuem espaços de endereçamento distintos.
Como não é possível o uso de variáveis compartilhadas
nesse ambiente, a comunicação com outros processos é
realizada através de troca de mensagens via rede de
interconexão.
A diferença básica entre as máquinas NORMA e as demais
(UMA, NUMA e COMA) é que na primeira há uma replicação
de toda a arquitetura convencional (processador, memória e
I/O) para formar uma máquina paralela, e não apenas do
componente processador como nos multiprocessadores.
Compartilhamento de Memória

NORMA
P
P
M
M
P
M
P
P
P
P
P
M
M
M
M
M
Rede de Interconexão
Compartilhamento de Memória
Download

P - DEINF/UFMA