Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Fundamentos
Fundamentos
Se um nico computador (processador) consegue resolver um problema em N segundos, podem N computadores (processadores) resolver o mesmo problema em 1 segundo?
Fundamentos
Fundamentos
Fundamentos
Fundamentos
Programao Sequencial
Um programa considerado programao sequencial quando este visto como uma srie de instrues sequenciais que devem ser executadas num nico processador.
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.
Fundamentos
Fundamentos
Paralelismo
Paralelismo diz-se quando as tarefas de um programa so executadas em simultneo em mais do que um processador.
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.
10
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.
11
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.
12
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 Instruction
Multiple Instruction
13
Fundamentos
14
Fundamentos
15
Fundamentos
16
Fundamentos
17
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.
18
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
19
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).
20
Fundamentos
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
21
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).
22
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
U000
23
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.
24
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.
25
Fundamentos
Directory-Based Protocol
CPU3 escreve 4 em X
CPU1 X 5 E001 CPU2 CPU3 X 4 X 4 U000
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.
26
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.
27
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.
28
Fundamentos
Multicomputers
Distributed Multicomputer
Distributed-Shared Multicomputer
29
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.
30
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
31
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.
32
Fundamentos
33
Fundamentos
Decomposio Comunicao
Aglomerao
Mapeamento
34
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.
35
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
36
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.
Processamento de sinal 37
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.
38
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 =
39
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.
40
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).
41
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).
42
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).
43
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.
44
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.
45
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.
46
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.
47
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).
48
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
49
Fundamentos
Fundamentos
51
Fundamentos
52
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
53
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.
54
Fundamentos
a.out
a.out
...
a.out
a.out
recolher resultados
55
Fundamentos
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.
56
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 bom desempenho deste paradigma directamente dependente da capacidade de balancear a carga entre as diferentes etapas da pipeline. Ricardo Rocha DCC-FCUP 57
Fundamentos
distribuir dados sub1 recolher resultados distribuir dados sub2 sub2 sub2 sub1
...
sub1
58
Fundamentos
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.
59
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.
60
Fundamentos
61