Você está na página 1de 31

Programao Paralela e Distribuda 2007/08

Fundamentos

Programao Paralela e Distribuda Fundamentos

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Porqu Programao Paralela?

Se um nico computador (processador) consegue resolver um problema em N segundos, podem N computadores (processadores) resolver o mesmo problema em 1 segundo?

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Porqu Programao Paralela?


Dois dos principais motivos para utilizar programao paralela so:
Reduzir o tempo necessrio para solucionar um problema. Resolver problemas mais complexos e de maior dimenso.

Outros motivos so:


Tirar partido de recursos computacionais no disponveis localmente ou subaproveitados. Ultrapassar limitaes de memria quando a memria disponvel num nico computador insuficiente para a resoluo do problema. Ultrapassar os limites fsicos de velocidade e de miniaturizao que actualmente comeam a restringir a possibilidade de construo de computadores sequenciais cada vez mais rpidos.

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Porqu Programao Paralela?


Tradicionalmente, a programao paralela foi motivada pela resoluo/simulao de problemas fundamentais da cincia/engenharia de grande relevncia cientfica e econmica, denominados como Grand Challenge Problems (GCPs). Tipicamente, os GCPs simulam fenmenos que no podem ser medidos por experimentao:
Fenmenos climticos (e.g. movimento das placas tectnicas) Fenmenos fsicos (e.g. rbita dos planetas) Fenmenos qumicos (e.g. reaces nucleares) Fenmenos biolgicos (e.g. genoma humano) Fenmenos geolgicos (e.g. actividade ssmica) Componentes mecnicos (e.g. aerodinmica/resistncia de materiais em naves espaciais) Circuitos electrnicos (e.g. verificao de placas de computador) ...

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Porqu Programao Paralela?


Actualmente, as aplicaes que exigem o desenvolvimento de computadores cada vez mais rpidos esto por todo o lado. Estas aplicaes ou requerem um grande poder de computao ou requerem o processamento de grandes quantidades de informao. Alguns exemplos so:
Bases de dados paralelas Minerao de dados (data mining) Servios de procura baseados na web Servios associados a tecnologias multimdia e telecomunicaes Computao grfica e realidade virtual Diagnstico mdico assistido por computador Gesto de grandes industrias/corporaes ...

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Programao Sequencial
Um programa considerado programao sequencial quando este visto como uma srie de instrues sequenciais que devem ser executadas num nico processador.

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Programao Paralela
Um programa considerado programao paralela quando este visto como um conjunto de partes que podem ser resolvidas concorrentemente. Cada parte igualmente constituda por uma srie de instrues sequenciais, mas que no seu conjunto podem ser executadas simultaneamente em vrios processadores.

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Concorrncia ou Paralelismo Potencial


Concorrncia ou paralelismo potencial diz-se quando um programa possui tarefas (partes contguas do programa) que podem ser executadas em qualquer ordem sem alterar o resultado final.

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Paralelismo
Paralelismo diz-se quando as tarefas de um programa so executadas em simultneo em mais do que um processador.

Ricardo Rocha DCC-FCUP

Programao Paralela e Distribuda 2007/08

Fundamentos

Paralelismo Implcito
O paralelismo diz-se implcito quando cabe ao compilador e ao sistema de execuo:
Detectar o paralelismo potencial do programa. Atribuir as tarefas para execuo em paralelo. Controlar e sincronizar toda a execuo.

Vantagens e inconvenientes:
(+) Liberta o programador dos detalhes da execuo paralela. (+) Soluo mais geral e mais flexvel. () Difcil conseguir-se uma soluo eficiente para todos os casos.

Ricardo Rocha DCC-FCUP

10

Programao Paralela e Distribuda 2007/08

Fundamentos

Paralelismo Explcito
O paralelismo diz-se explcito quando cabe ao programador:
Anotar as tarefas para execuo em paralelo. Atribuir (possivelmente) as tarefas aos processadores. Controlar a execuo indicando os pontos de sincronizao. Conhecer a arquitectura dos computadores de forma a conseguir o mximo desempenho (aumentar localidade, diminuir comunicao, etc).

Vantagens e inconvenientes:
(+) Programadores experientes produzem solues muito eficientes para problemas especficos. () O programador o responsvel por todos os detalhes da execuo (debugging pode ser deveras penoso). () Pouco portvel entre diferentes arquitecturas.

Ricardo Rocha DCC-FCUP

11

Programao Paralela e Distribuda 2007/08

Fundamentos

Computao Paralela
De uma forma simples, a computao paralela pode ser definida como o uso simultneo de vrios recursos computacionais de forma a reduzir o tempo necessrio para resolver um determinado problema. Esses recursos computacionais podem incluir:
Um nico computador com mltiplos processadores. Um nmero arbitrrio de computadores ligados por rede. A combinao de ambos.

Ricardo Rocha DCC-FCUP

12

Programao Paralela e Distribuda 2007/08

Fundamentos

Taxonomia de Flynn
Uma das metodologias mais conhecidas e utilizadas para classificar a arquitectura de um computador ou conjunto de computadores a taxonomia de Flynn (1966).
Esta metodologia classifica a arquitectura dos computadores segundo duas dimenses independentes: instrues e dados, em que cada dimenso pode tomar apenas um de dois valores distintos: single ou multiple.

Single Data SISD Single Instruction Single Data MISD

Multiple Data SIMD Single Instruction Multiple Data MIMD

Single Instruction

Multiple Instruction

Multiple Instruction Single Data Multiple Instruction Multiple Data

Ricardo Rocha DCC-FCUP

13

Programao Paralela e Distribuda 2007/08

Fundamentos

SISD Single Instruction Single Data


Corresponde arquitectura dos computadores com um nico processador.
Apenas uma instruo processada a cada momento. Apenas um fluxo de dados processado a cada momento.

Exemplos: PCs, workstations e servidores com um nico processador.

Ricardo Rocha DCC-FCUP

14

Programao Paralela e Distribuda 2007/08

Fundamentos

SIMD Single Instruction Multiple Data


Tipo de arquitectura paralela desenhada para problemas especficos caracterizados por um alto padro de regularidade nos dados (e.g. processamento de imagem).
Todas as unidades de processamento executam a mesma instruo a cada momento. Cada unidade de processamento pode operar sobre um fluxo de dados diferente.

Exemplos: processor arrays e pipelined vector processors.

Ricardo Rocha DCC-FCUP

15

Programao Paralela e Distribuda 2007/08

Fundamentos

MISD Multiple Instruction Single Data


Tipo de arquitectura paralela desenhada para problemas especficos caracterizados por um alto padro de regularidade funcional (e.g. processamento de sinal).
Constituda por uma pipeline de unidades de processamento independentes que operam sobre um mesmo fluxo de dados enviando os resultados duma unidade para a prxima. Cada unidade de processamento executa instrues diferentes a cada momento.

Exemplos: systolic arrays.

Ricardo Rocha DCC-FCUP

16

Programao Paralela e Distribuda 2007/08

Fundamentos

MIMD Multiple Instruction Multiple Data


Tipo de arquitectura paralela predominante actualmente.
Cada unidade de processamento executa instrues diferentes a cada momento. Cada unidade de processamento pode operar sobre um fluxo de dados diferente.

Exemplos: multiprocessors e multicomputers.

Ricardo Rocha DCC-FCUP

17

Programao Paralela e Distribuda 2007/08

Fundamentos

Multiprocessors
Um multiprocessor um computador em que todos os processadores partilham o acesso memria fsica.
Os processadores executam de forma independente mas o espao de endereamento global partilhado. Qualquer alterao sobre uma posio de memria realizada por um determinado processador igualmente visvel por todos os restantes processadores.

Ricardo Rocha DCC-FCUP

18

Programao Paralela e Distribuda 2007/08

Fundamentos

Multiprocessors
Existem duas grandes classes de multiprocessors:
Uniform Memory Access Multiprocessor (UMA) ou Cache Coherent Uniform Memory Access Multiprocessor (CC-UMA) ou Symmetrical Multiprocessor (SMP) ou Centralized Multiprocessor Non-Uniform Memory Access Multiprocessor (NUMA) ou Distributed Multiprocessor

Ricardo Rocha DCC-FCUP

19

Programao Paralela e Distribuda 2007/08

Fundamentos

Multiprocessors
Uniform Memory Access Multiprocessor (UMA)
Todos os processadores tm tempos de acesso idnticos a toda a memria. A coerncia das caches implementada pelo hardware (write invalidate protocol).

Ricardo Rocha DCC-FCUP

20

Programao Paralela e Distribuda 2007/08

Fundamentos

Write Invalidate Protocol


Antes de se escrever um valor em memria, todas as cpias existentes nas caches dos outros processadores so invalidadas. Quando mais tarde, esses outros processadores tentam ler o valor invalidado, acontece um cache miss o que os obriga a actualizar o valor a partir da memria.
CPU1 CPU2 CPU1 CPU2 CPU1 CPU2 CPU1 CPU2

Cache

Cache

X 7 Memria

X 7 Memria

X 7 Memria

X 2 Memria

X possui o valor 7

CPU1 l o valor de X

CPU2 l o valor de X

CPU2 escreve 2 em X

Ricardo Rocha DCC-FCUP

21

Programao Paralela e Distribuda 2007/08

Fundamentos

Multiprocessors
Non-Uniform Memory Access Multiprocessor (NUMA)
Os processadores tm tempos de acesso diferentes a diferentes reas da memria. Se a coerncia das caches for implementada pelo hardware (directory-based protocol) so tambm designados por Cache Coherent NUMA (CC-NUMA).

Ricardo Rocha DCC-FCUP

22

Programao Paralela e Distribuda 2007/08

Fundamentos

Directory-Based Protocol
Associado a cada processador existe um directrio com informao sobre o estado dos seus blocos de memria. Cada bloco pode estar num dos seguintes estados:
Uncached: no est na cache de nenhum processador. Shared: encontra-se na cache de um ou mais processadores e a cpia em memria est correcta. Exclusive: encontra-se apenas na cache de um processador e a cpia em memria est obsoleta.
CPU1 CPU2 CPU3

caches
X 7

memrias directrios

informao sobre o bloco de memria contendo X

U000

Ricardo Rocha DCC-FCUP

23

Programao Paralela e Distribuda 2007/08

Fundamentos

Directory-Based Protocol
X possui o valor 7
CPU1 CPU2 CPU3

CPU3 l o valor de X
CPU1 CPU2 CPU3 X 7

CPU1 l o valor de X
CPU1 X 7 X 7 S101 CPU2 CPU3 X 7

X 7 U000

X 7 S001

A informao representada no directrio mostra que X no est na cache de nenhum processador (U000).

CPU3 envia um read miss para CPU1 no possui X em cache, CPU1, este actualiza o directrio o bit do CPU1 no directrio para shared e envia o bloco de actualizado e o bloco de dados dados contendo X para CPU3. contendo X lido por CPU1.

Ricardo Rocha DCC-FCUP

24

Programao Paralela e Distribuda 2007/08

Fundamentos

Directory-Based Protocol
CPU3 esreve 6 em X
CPU1 X 7 E001 CPU2 CPU3 X 6 X 6 S011

CPU2 l o valor de X
CPU1 CPU2 X 6 CPU3 X 6

CPU1 escreve 5 em X
CPU1 X 5 X 6 E100 CPU2 CPU3

CPU3 envia um write miss para CPU2 envia um read miss para CPU1 gera um write miss de CPU1, este invalida a sua cpia CPU1, CPU1 pede a CPU3 o modo a invalidar as cpias de X em cache e actualiza o directrio bloco de dados contendo X, em CPU2 e CP3 e actualiza actualiza a memria e o directrio o directrio para exclusive. para exclusive. e envia o bloco para CPU2.

Ricardo Rocha DCC-FCUP

25

Programao Paralela e Distribuda 2007/08

Fundamentos

Directory-Based Protocol
CPU3 escreve 4 em X
CPU1 X 5 E001 CPU2 CPU3 X 4 X 4 U000

CPU3 remove o bloco de cache contendo X


CPU1 CPU2 CPU3

CPU3 envia um write miss para CPU3 envia o bloco de dados CPU1, este actualiza a memria contendo X para CPU1 e este actualiza a memria e o com o seu bloco em cache directrio. contendo X e envia-o para CPU3 onde o valor de X escrito.

Ricardo Rocha DCC-FCUP

26

Programao Paralela e Distribuda 2007/08

Fundamentos

Multiprocessors
Vantagens e inconvenientes:
(+) Partilha de dados entre tarefas conseguida de forma simples, uniforme e rpida. () Necessita de mecanismos de sincronizao para obter um correcto manuseamento dos dados. () Pouco escalvel. O aumento do nmero de processadores aumenta a conteno no acesso memria e torna invivel qualquer mecanismo de coerncia das caches. () Custo elevado. difcil e bastante caro desenhar e produzir computadores cada vez com um maior nmero de processadores.

Ricardo Rocha DCC-FCUP

27

Programao Paralela e Distribuda 2007/08

Fundamentos

Multicomputers
Um multicomputer um conjunto de computadores ligados por rede em que cada computador tem acesso exclusivo sua memria fsica.
O espao de endereamento de cada computador no partilhado pelos restantes computadores, ou seja, no existe o conceito de espao de endereamento global. As alteraes sobre uma posio de memria realizada por um determinado processador no so visveis pelos processadores dos restantes computadores, ou seja, no existe o conceito de coerncia das caches.

Existem duas grandes classes de multicomputers:


Distributed Multicomputer Distributed-Shared Multicomputer

Ricardo Rocha DCC-FCUP

28

Programao Paralela e Distribuda 2007/08

Fundamentos

Multicomputers
Distributed Multicomputer

Distributed-Shared Multicomputer

Ricardo Rocha DCC-FCUP

29

Programao Paralela e Distribuda 2007/08

Fundamentos

Multicomputers
Vantagens e inconvenientes:
(+) O aumento do nmero de computadores aumenta proporcionalmente a memria disponvel sem necessitar de mecanismos de coerncia das caches. (+) Fcil escalabilidade a baixo custo. O aumento do poder de computao pode ser conseguido custa de computadores de uso domstico. () Necessita de mecanismos de comunicao para partilha de dados entre tarefas de diferentes computadores. () O tempo de acesso aos dados entre diferentes computadores no uniforme e por natureza mais lento. () Pode ser difcil converter estruturas de dados previamente existentes para memria partilhada em estruturas de dados para memria distribuda.

Ricardo Rocha DCC-FCUP

30

Programao Paralela e Distribuda 2007/08

Fundamentos

Arquitecturas MIMD
Multiprocessor CC-UMA Escalabilidade 10s de CPUs CC-NUMA 100s de CPUs Multicomputer Distributed DistributedShared

1000s de CPUs

Segmentos memria partilhada Comunicao Threads OpenMP (MPI) MPI MPI/Threads MPI/OpenMP

Ricardo Rocha DCC-FCUP

31

Programao Paralela e Distribuda 2007/08

Fundamentos

Programao Paralela
Apesar das arquitecturas paralelas serem actualmente uma realidade, a programao paralela continua a ser uma tarefa complexa. Para alm de depender da disponibilidade de ferramentas/ambientes de programao adequados para memria partilhada/distribuda, debate-se com uma srie de problemas no existentes em programao sequencial:
Concorrncia: identificar as partes da computao que podem ser executadas em simultneo. Comunicao e Sincronizao: desenhar o fluxo de informao de modo a que a computao possa ser executada em simultneo pelos diversos processadores evitando situaes de deadlock e race conditions. Balanceamento de Carga e Escalonamento: distribuir de forma equilibrada e eficiente as diferentes partes da computao pelos diversos processadores de modo a ter os processadores maioritariamente ocupados durante toda a execuo.

Ricardo Rocha DCC-FCUP

32

Programao Paralela e Distribuda 2007/08

Fundamentos

Metodologia de Programao de Foster


Um dos mtodos mais conhecidos para desenhar algoritmos paralelos a metodologia de Ian Foster (1996). Esta metodologia permite que o programador se concentre inicialmente nos aspectos no-dependentes da arquitectura, como sejam a concorrncia e a escalabilidade, e s depois considere os aspectos dependentes da arquitectura, como sejam aumentar a localidade e diminuir a comunicao da computao. A metodologia de programao de Foster divide-se em 4 etapas:
Decomposio Comunicao Aglomerao Mapeamento

Ricardo Rocha DCC-FCUP

33

Programao Paralela e Distribuda 2007/08

Fundamentos

Metodologia de Programao de Foster


Problema

Decomposio Comunicao

Aglomerao

Mapeamento

Ricardo Rocha DCC-FCUP

34

Programao Paralela e Distribuda 2007/08

Fundamentos

Decomposio
Uma forma de diminuir a complexidade de um problema conseguir dividi-lo em tarefas mais pequenas de modo a aumentar a concorrncia e a localidade de referncia de cada tarefa. Existem duas estratgias principais de decompor um problema:
Decomposio do Domnio: decompor o problema em funo dos dados. Decomposio Funcional: decompor o problema em funo da computao.

Um boa decomposio tanto divide os dados como a computao em mltiplas tarefas mais pequenas.

Ricardo Rocha DCC-FCUP

35

Programao Paralela e Distribuda 2007/08

Fundamentos

Decomposio do Domnio
Tipo de decomposio em que primeiro se dividem os dados em parties e s depois se determina o processo de associar a computao com as parties. Todas as tarefas executam as mesmas operaes.

1D

2D

3D

Ricardo Rocha DCC-FCUP

36

Programao Paralela e Distribuda 2007/08

Fundamentos

Decomposio Funcional
Tipo de decomposio em que primeiro se divide a computao em parties e s depois se determina o processo de associar os dados com cada partio. Diferentes tarefas executam diferentes operaes.

Modelao climtica Ricardo Rocha DCC-FCUP

Processamento de sinal 37

Programao Paralela e Distribuda 2007/08

Fundamentos

Comunicao
A natureza do problema e o tipo de decomposio determinam o padro de comunicao entre as diferentes tarefas. A execuo de uma tarefa pode envolver a sincronizao/acesso a dados pertencentes/calculados por outras tarefas. Para haver cooperao entre as tarefas necessrio definir algoritmos e estruturas de dados que permitam uma eficiente troca de informao. Alguns dos principais factores que limitam essa eficincia so:
Custo da Comunicao: existe sempre um custo associado troca de informao e enquanto as tarefas processam essa informao no contribuem para a computao. Necessidade de Sincronizao: enquanto as tarefas ficam espera de sincronizar no contribuem para a computao. Latncia (tempo mnimo de comunicao entre dois pontos) e Largura de Banda (quantidade de informao comunicada por unidade de tempo): boa prtica enviar poucas mensagens grandes do que muitas mensagens pequenas.

Ricardo Rocha DCC-FCUP

38

Programao Paralela e Distribuda 2007/08

Fundamentos

Padres de Comunicao
Comunicao Global
Todas as tarefas podem comunicar entre si.

Comunicao Local
A comunicao restrita a tarefas vizinhas (e.g. mtodo de Jacobi de diferenas finitas).

X it,+j1 =

4 X it, j + X it1, j + X it+1, j + X it, j 1 + X it, j +1 8

Ricardo Rocha DCC-FCUP

39

Programao Paralela e Distribuda 2007/08

Fundamentos

Padres de Comunicao
Comunicao Estruturada
Tarefas vizinhas constituem uma estrutura regular (e.g. rvore ou rede).

Comunicao No-Estruturada
Comunicao entre tarefas constitu um grafo arbitrrio.

Comunicao Esttica
Os parceiros de comunicao no variam durante toda a execuo.

Comunicao Dinmica
A comunicao determinada pela execuo e pode ser muito varivel.

Ricardo Rocha DCC-FCUP

40

Programao Paralela e Distribuda 2007/08

Fundamentos

Padres de Comunicao
Comunicao Sncrona
As tarefas executam de forma coordenada e sincronizam na transferncia de dados (e.g. protocolo das 3-fases ou rendez-vous: a comunicao apenas se concretiza quando as duas tarefas esto sincronizadas).

Ricardo Rocha DCC-FCUP

41

Programao Paralela e Distribuda 2007/08

Fundamentos

Padres de Comunicao
Comunicao Assncrona
As tarefas executam de forma independente no necessitando de sincronizar para transferir dados (e.g. buffering de mensagens: o envio de mensagens no interfere com a execuo do emissor).

Ricardo Rocha DCC-FCUP

42

Programao Paralela e Distribuda 2007/08

Fundamentos

Aglomerao
Aglomerao o processo de agrupar tarefas em tarefas maiores de modo a diminuir os custos de implementao do algoritmo paralelo e os custos de comunicao entre as tarefas. Custos de implementao do algoritmo paralelo:
O agrupamento em tarefas maiores permite uma maior reutilizao do cdigo do algoritmo sequencial na implementao do algoritmo paralelo. No entanto, o agrupamento em tarefas maiores deve garantir a escalabilidade do algoritmo paralelo de modo a evitar posteriores alteraes (e.g. optar por aglomerar as duas ltimas dimenses duma matriz de dimenso 8128256 restringe a escalabilidade a um mximo de 8 processadores).

Ricardo Rocha DCC-FCUP

43

Programao Paralela e Distribuda 2007/08

Fundamentos

Aglomerao
Custos de comunicao entre as tarefas:
O agrupamento de tarefas elimina os custos de comunicao entre essas tarefas e aumenta a granularidade da computao.

O agrupamento de tarefas com pequenas comunicaes individuais em tarefas com comunicaes maiores permite aumentar a granularidade das comunicaes e reduzir o nmero total de comunicaes.

Ricardo Rocha DCC-FCUP

44

Programao Paralela e Distribuda 2007/08

Fundamentos

Granularidade
Perodos de computao so tipicamente separados por perodos de comunicao entre as tarefas. A granularidade a medida qualitativa do rcio entre computao e comunicao. O nmero e o tamanho das tarefas em que a computao agrupada determina a sua granularidade. A granularidade pode ser fina, mdia ou grossa.

Como agrupar a computao de modo a obter o mximo desempenho?

Ricardo Rocha DCC-FCUP

45

Programao Paralela e Distribuda 2007/08

Fundamentos

Granularidade
Granularidade Fina
A computao agrupada num grande nmero de pequenas tarefas. O rcio entre computao e comunicao baixo. (+) Fcil de conseguir um balanceamento de carga eficiente. () O tempo de computao de uma tarefa nem sempre compensa os custos de criao, comunicao e sincronizao. () Difcil de se conseguir melhorar o desempenho.

Granularidade Grossa
A computao agrupada num pequeno nmero de grandes tarefas. O rcio entre computao e comunicao grande. () Difcil de conseguir um balanceamento de carga eficiente. (+) O tempo de computao compensa os custos de criao, comunicao e sincronizao. (+) Oportunidades para se conseguir melhorar o desempenho.

Ricardo Rocha DCC-FCUP

46

Programao Paralela e Distribuda 2007/08

Fundamentos

Mapeamento
Mapeamento o processo de atribuir tarefas a processadores de modo a maximizar a percentagem de ocupao e minimizar a comunicao entre processadores.
A percentagem de ocupao ptima quando a computao balanceada de forma igual pelos processadores, permitindo que todos comeam e terminem as suas tarefas em simultneo. A percentagem de ocupao decresce quando um ou mais processadores ficam suspensos enquanto os restantes continuam ocupados. A comunicao entre processadores menor quando tarefas que comunicam entre si so atribudas ao mesmo processador. No entanto, este mapeamento nem sempre compatvel com o objectivo de maximizar a percentagem de ocupao.

Como conseguir o melhor compromisso entre maximizar ocupao e minimizar comunicao?

Ricardo Rocha DCC-FCUP

47

Programao Paralela e Distribuda 2007/08

Fundamentos

Balanceamento de Carga
O balanceamento de carga refere-se capacidade de distribuir tarefas pelos processadores de modo a que todos os processadores estejam ocupados todo o tempo. O balanceamento de carga pode ser visto como uma funo de minimizao do tempo em que os processadores no esto ocupados. O balanceamento de carga pode ser esttico (em tempo de compilao) ou dinmico (em tempo de execuo).

Ricardo Rocha DCC-FCUP

48

Programao Paralela e Distribuda 2007/08

Fundamentos

Balanceamento de Carga
nmero de tarefas? esttico padro de comunicao? estruturado no-estruturado elevada nenhuma dinmico frequncia de comunicao?

tempo de computao por tarefa? constante agrupar tarefas de modo a ter uma tarefa por processador varivel atribuir tarefas a processadores de forma circular utilizar um algoritmo de balanceamento de carga esttico

utilizar um algoritmo de balanceamento de carga dinmico

utilizar uma fila de tarefas centralizada ou distribuda

Ricardo Rocha DCC-FCUP

49

Programao Paralela e Distribuda 2007/08

Fundamentos

Factores Limitativos do Desempenho


Cdigo Sequencial: existem partes do cdigo que so inerentemente sequenciais (e.g. iniciar/terminar a computao). Concorrncia: o nmero de tarefas pode ser escasso e/ou de difcil definio. Comunicao: existe sempre um custo associado troca de informao e enquanto as tarefas processam essa informao no contribuem para a computao. Sincronizao: a partilha de dados entre as vrias tarefas pode levar a problemas de conteno no acesso memria e enquanto as tarefas ficam espera de sincronizar no contribuem para a computao. Granularidade: o nmero e o tamanho das tarefas importante porque o tempo que demoram a ser executadas tem de compensar os custos da execuo em paralelo (e.g. custos de criao, comunicao e sincronizao). Balanceamento de Carga: ter os processadores maioritariamente ocupados durante toda a execuo decisivo para o desempenho global do sistema. Ricardo Rocha DCC-FCUP 50

Programao Paralela e Distribuda 2007/08

Fundamentos

Principais Modelos de Programao Paralela


Programao em Memria Partilhada
Programao usando processos ou threads. Decomposio do domnio ou funcional com granularidade fina, mdia ou grossa. Comunicao atravs de memria partilhada. Sincronizao atravs de mecanismos de excluso mtua.

Programao em Memria Distribuda


Programao usando troca de mensagens. Decomposio do domnio com granularidade grossa. Comunicao e sincronizao por troca de mensagens.

Ricardo Rocha DCC-FCUP

51

Programao Paralela e Distribuda 2007/08

Fundamentos

Principais Paradigmas de Programao Paralela


Apesar da diversidade de problemas aos quais podemos aplicar a programao paralela, o desenvolvimento de algoritmos paralelos pode ser classificado num conjunto relativamente pequeno de diferentes paradigmas, em que cada paradigma representa uma classe de algoritmos que possuem o mesmo tipo de controle:
Master/Slave Single Program Multiple Data (SPMD) Data Pipelining Divide and Conquer Speculative Parallelism

A escolha do paradigma a aplicar a um dado problema determinado pelo:


Tipo de paralelismo inerente ao problema: decomposio do domnio ou funcional. Tipo de recursos computacionais disponveis: nvel de granularidade que pode ser eficientemente suportada pelo sistema.

Ricardo Rocha DCC-FCUP

52

Programao Paralela e Distribuda 2007/08

Fundamentos

Master/Slave
Este paradigma divide a computao em duas entidades distintas: o processo master e o conjunto dos processos slaves:
O master o responsvel por decompor o problema em tarefas, distribuir as tarefas pelos slaves e recolher os resultados parciais dos slaves de modo a calcular o resultado final. O ciclo de execuo dos slaves muito simples: obter uma tarefa do master, processar a tarefa e enviar o resultado de volta para o master.
master distribuir dados

slave

slave

...

slave

recolher resultados

Ricardo Rocha DCC-FCUP

53

Programao Paralela e Distribuda 2007/08

Fundamentos

Master/Slave
O balanceamento de carga pode ser esttico ou dinmico:
esttico quando a diviso de tarefas feita no incio da computao. O balanceamento esttico permite que o master tambm participe na computao. dinmico quando o nmero de tarefas excede o nmero de processadores ou quando o nmero de tarefas ou o tempo de execuo das tarefas desconhecido no incio da computao.

Como s existe comunicao entre o master e os slaves, este paradigma consegue bons desempenhos e um elevado grau de escalabilidade.
No entanto, o controle centralizado no master pode ser um problema quando o nmero de slaves elevado. Nesses casos possvel aumentar a escalabilidade do paradigma considerando vrios masters em que cada um controla um grupo diferente de slaves.

Ricardo Rocha DCC-FCUP

54

Programao Paralela e Distribuda 2007/08

Fundamentos

Single Program Multiple Data (SPMD)


Neste paradigma todos os processos executam o mesmo programa (executvel) mas sobre diferentes partes dos dados. Este paradigma tambm conhecido como:
Geometric Parallelism Data Parallelism
distribuir dados

a.out

a.out

...

a.out

a.out

recolher resultados

Ricardo Rocha DCC-FCUP

55

Programao Paralela e Distribuda 2007/08

Fundamentos

Single Program Multiple Data (SPMD)


Tipicamente, os dados so bem distribudos (mesma quantidade e regularidade) e o padro de comunicao bem definido (estruturado, esttico e local):
Os dados ou so lidos individualmente por cada processo ou um dos processos o responsvel por ler todos os dados e depois distribui-los pelos restantes processos. Os processos comunicam quase sempre com processos vizinhos e apenas esporadicamente existem pontos de sincronizao global.

Como os dados so bem distribudos e o padro de comunicao bem definido, este paradigma consegue bons desempenhos e um elevado grau de escalabilidade.
No entanto, este paradigma muito sensvel a falhas. A perca de um processador causa necessariamente o encravamento da computao no prximo ponto de sincronizao global.

Ricardo Rocha DCC-FCUP

56

Programao Paralela e Distribuda 2007/08

Fundamentos

Data Pipelining
Este paradigma utiliza uma decomposio funcional do problema em que cada processo executa apenas uma parte do algoritmo total. Este paradigma tambm conhecido como:
Data Flow Parallelism
dados

...

resultado

O padro de comunicao bem definido e bastante simples:


Os processos so organizados em sequncia (pipeline) e cada processo s troca informao com o processo seguinte. Toda a comunicao pode ser completamente assncrona.

O bom desempenho deste paradigma directamente dependente da capacidade de balancear a carga entre as diferentes etapas da pipeline. Ricardo Rocha DCC-FCUP 57

Programao Paralela e Distribuda 2007/08

Fundamentos

Divide and Conquer


Este paradigma utiliza uma diviso recursiva do problema inicial em subproblemas independentes (instncias mais pequenas do problema inicial) cujos resultados so depois combinados para obter o resultado final.
recolher resultados init

distribuir dados sub1 recolher resultados distribuir dados sub2 sub2 sub2 sub1

...

sub1

sub1 recolher resultados distribuir dados sub2

Ricardo Rocha DCC-FCUP

58

Programao Paralela e Distribuda 2007/08

Fundamentos

Divide and Conquer


A computao fica organizada numa espcie de rvore virtual:
Os processos nos ns folha processam as subtarefas. Os restantes processos so responsveis por criar as subtarefas e por agregar os seus resultados parciais.

O padro de comunicao bem definido e bastante simples:


Como as subtarefas so totalmente independentes no necessrio qualquer tipo de comunicao durante o processamento das mesmas. Apenas existe comunicao entre o processo que cria as subtarefas e os processos que as processam.

No entanto, o processo de diviso em tarefas e de agregao de resultados tambm pode ser realizado em paralelo, o que requer comunicao entre os processos:
As tarefas podem ser colocadas numa fila de tarefas nica e centralizada ou podem ser distribudas por diferentes filas de tarefas associadas resoluo de cada sub-problema.

Ricardo Rocha DCC-FCUP

59

Programao Paralela e Distribuda 2007/08

Fundamentos

Speculative Parallelism
utilizado quando as dependncias entre os dados so to complexas que tornam difcil explorar paralelismo usando os paradigmas anteriores. Este paradigma introduz paralelismo nos problemas atravs da execuo de computaes especulativas:
A ideia antecipar a execuo de computaes relacionadas com a computao corrente na assumpo optimista de que essas computaes sero necessariamente realizadas posteriormente. Quando isso no acontece, pode ser necessrio repor partes do estado da computao de modo a no violar a consistncia do problema em resoluo.

Uma outra aplicao deste paradigma quando se utiliza simultaneamente diversos algoritmos para resolver um determinado problema e se escolhe aquele que primeiro obtiver uma soluo.

Ricardo Rocha DCC-FCUP

60

Programao Paralela e Distribuda 2007/08

Fundamentos

Principais Paradigmas de Programao Paralela


Decomposio Master/Slave Single Program Multiple Data (SPMD) Data Pipelining Divide and Conquer Speculative Parallelism esttica esttica esttica dinmica dinmica Distribuio dinmica esttica/dinmica esttica dinmica dinmica

Ricardo Rocha DCC-FCUP

61