identificação de paralelismoaleardo/cursos/hpc/paralelo2020.pdfprogramando em paralelo além dos...
TRANSCRIPT
![Page 1: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/1.jpg)
Identificação de Paralelismo
Aleardo Manacero Jr.
![Page 2: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/2.jpg)
Paralelização de programas
Já vimos como identificar pontos em que não se pode paralelizar tarefas
Falta agora examinar como identificar pontos passíveis de paralelização e como implementar o paralelismo em um programa (sabendo de antemão que não existe receita pronta para isso)
![Page 3: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/3.jpg)
Paralelização de programas
Um programa pode ser paralelizado, sempre que for conveniente, por dois agentes distintos:
Pelo compilador
Pelo programador
![Page 4: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/4.jpg)
Paralelismo pelo compilador
Usualmente é chamado de ILP (Instruction Level Parallelism)
Deve identificar dependências e fazer a paralelização quando, comprovadamente, tivermos códigos independentes
Mais factível para máquinas de memória compartilhada (multiprocessadores), pela ausência de código para troca de mensagens
![Page 5: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/5.jpg)
Paralelismo pelo compilador
O compilador atua se receber parâmetros específicos de paralelização
O usuário pode (e deve) interferir no processo, dirigindo (ou auxiliando) o compilador na identificação dos pontos para paralelização
![Page 6: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/6.jpg)
Exemplos
DO I = 1,N
A(I) = A(I+K) * B(I)
ENDDO
É paralelizável se K>-1
DO I = 1,N
A(K(I)) = A(K(J)) + B(I) * C
ENDDOÉ paralelizável se K(I)K(J) p/ I,J:1,N e IJ
![Page 7: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/7.jpg)
Exemplos
DO I = 1,N
CALL BIGSTUFF(A,B,C,I,J,K)
ENDDO
É paralelizável se a função é independente
DO I = L,N
A(I) = B(I) + C(I)
ENDDO
É paralelizável se N-L for grande
![Page 8: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/8.jpg)
Paralelismo pelo programador
Realizado normalmente para ambientes de memória distribuída (multicomputadores)
Neles é o usuário (programador) quem deve identificar e implementar o paralelismo
A forma em que o paralelismo ocorrerá depende, fundamentalmente, da estrutura de conexão entre processadores
![Page 9: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/9.jpg)
Paralelismo pelo programador
A dependência da estrutura de conexão faz com que o tempo gasto com comunicação limite:
o tamanho do grão de processamento
o grau de paralelismo da máquina
![Page 10: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/10.jpg)
Comunicação X tamanho do grão
Se entre cada grão for necessário trocar valores (existir intersecção entre os conjuntos de saída do primeiro grão e de entrada do segundo), então os grãos devem ser suficientemente grandes para compensar o tempo gasto com comunicação
![Page 11: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/11.jpg)
Grau de paralelismo
Se a velocidade em que se recebe novos dados for menor do que a capacidade de processamento, então não se deve aumentar o grau de paralelismo (aumentaria a ociosidade dos elementos de processamento)
![Page 12: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/12.jpg)
Paralelismo pelo programador
A paralelização de um programa deve sempre levar as restrições de grau de paralelismo e tamanho de grão em consideração
Com isso, a identificação do paralelismo possível passa a ser uma tarefa de dimensionamento do ponto ótimo de particionamento do problema
![Page 13: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/13.jpg)
Contraexemplos
Sistemas com dominação de E/S:
Aqui temos a restrição do tamanho do grão
Quando existe dominação de E/S (pouco processamento, muita E/S) fica impossível paralelizar o sistema, exceto na hipótese remota de E/S em altíssima velocidade
![Page 14: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/14.jpg)
Contraexemplos
Sistemas iterativos de corpo curto:
Aqui temos a restrição de grau de paralelismo
Nos casos em que o corpo de um processo iterativo é muito curto (poucas operações, levando a ociosidade entre iterações), então é também impossível a paralelização
(isso tem mudado com GPUs)
![Page 15: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/15.jpg)
Modelos de particionamento
Quando a paralelização de um programa é
feita pelo programador é necessário definir
qual o modelo de particionamento a ser
utilizado
![Page 16: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/16.jpg)
Modelos de particionamento
Modelos de particionamento são modelos que
definem como o processamento paralelo
ocorrerá e de que forma os programas
paralelos irão interagir
![Page 17: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/17.jpg)
Modelos de particionamento
A decisão sobre qual modelo deve ser utilizado depende de:
características do problema
características da máquina
O que significa depender de qual é o melhor tipo de casamento entre software e hardware
![Page 18: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/18.jpg)
Modelos de particionamento
Um caso clássico desse casamento surge na
multiplicação de matrizes, em que o caminho
entre linhas e colunas não é feito sempre da
mesma forma, como visto na próxima figura
![Page 19: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/19.jpg)
Multiplicação de matrizes
![Page 20: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/20.jpg)
Multiplicação de matrizes
Nesse caso o particionamento do problema deve minimizar a necessidade de se percorrer muitas linhas ou colunas em ordem inversa
Ou ainda minimizar as trocas de cache
Uma forma de se fazer isso é multiplicar a matriz através de blocos
![Page 21: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/21.jpg)
Multiplicação em blocos
![Page 22: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/22.jpg)
Multiplicação em blocos
Para os casos em que as matrizes se tornam grandes demais deve-se considerar a possibilidade de outras formas de divisão em blocos
![Page 23: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/23.jpg)
Multiplicação em blocos
![Page 24: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/24.jpg)
Multiplicação em blocos
Para os casos em que as matrizes se tornam grandes demais deve-se considerar a possibilidade de outras formas de divisão em blocos
Essas formas devem, sempre, levar em consideração o tamanho dos blocos de cache
Outros métodos, como Strassen, são usados...
![Page 25: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/25.jpg)
Paradigmas para interação
Pode-se considerar a existência de três paradigmas básicos de interação entre processos paralelos, que são:
Saco de Tarefas (Bag-of-Tasks)
Batimento (Heartbeat)
Linha de Produção (Pipeline)
![Page 26: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/26.jpg)
Modelo “bag of tasks”
Implementado através de algoritmos centralizados, em que um processo assume o controle e os demais fazem o processamento de fato
A idéia de saco de tarefas vem de sua forma de operação, em que os trabalhadores buscam novas tarefas com o coordenador (que tem o saco com as tarefas)
![Page 27: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/27.jpg)
Modelo “bag of tasks”
As tarefas são usualmente novos dados a serem processados pelo trabalhador
Após a manipulação desses dados, o trabalhador devolve os resultados ao coordenador
O sincronismo entre coordenador e trabalhadores é feito por requisições dos trabalhadores
![Page 28: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/28.jpg)
Modelo “bag of tasks”
A interação entre trabalhadores deve ser evitada, diminuindo assim a necessidade de comunicação entre esses processos
Uma consequência desse modelo é o balanceamento da carga entre trabalhadores, pois novas tarefas apenas são recebidas após a conclusão do trabalho atual
![Page 29: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/29.jpg)
Funcionamento do modelo
![Page 30: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/30.jpg)
Funcionamento do modelo
![Page 31: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/31.jpg)
Funcionamento do modelo
![Page 32: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/32.jpg)
Funcionamento do modelo
![Page 33: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/33.jpg)
Modelo “heartbeat”
Nesse modelo o gerenciamento é normalmente descentralizado
Isso exige um volume maior de comunicação e de interação entre os programas paralelos
![Page 34: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/34.jpg)
Modelo “heartbeat”
O nome do modelo vem de sua estrutura de funcionamento que imita, de certo modo, os batimentos cardíacos
Cada processador trabalha em três fases (expansão, contração e processamento), que se repetem iterativamente até se chegar à solução
![Page 35: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/35.jpg)
Modelo “heartbeat”
Durante a fase expansão ocorre o envio de dados por todos os processos
![Page 36: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/36.jpg)
Funcionamento do modelo
![Page 37: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/37.jpg)
Modelo “heartbeat”
Durante a fase expansão ocorre o envio de dados por todos os processos
Na contração cada processo recebe os dados enviados pelos demais processos
![Page 38: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/38.jpg)
Funcionamento do modelo
![Page 39: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/39.jpg)
Modelo “heartbeat”
Durante a fase expansão ocorre o envio de dados por todos os processos
Na contração cada processo recebe os dados enviados pelos demais processos
Na fase de processamento ocorre, obviamente, o processamento dos dados recém-recebidas
![Page 40: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/40.jpg)
Funcionamento do modelo
![Page 41: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/41.jpg)
Modelo “pipeline”
Nesse modelo simula-se, em software, a operação de um pipeline de hardware, numa estrutura de paralelismo de tarefa
Cada elemento de processamento executa ações sobre os dados de um problema, de forma que os resultados sejam a entrada para o próximo elemento de processamento
![Page 42: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/42.jpg)
Modelo “pipeline”
Sistemas pipeline se prestam bem para problemas como filtros de ordenação, em que cada processador faz o merge (intercalação) da operação realizada em outros dois processadores
Outra aplicação interessante é a implementação de redes neurais paralelas
![Page 43: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/43.jpg)
Modelo “pipeline”
Pipelines podem ser de três tipos:
Aberto
Fechado sem coordenador
Fechado com coordenador
![Page 44: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/44.jpg)
Funcionamento do modelo
![Page 45: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/45.jpg)
Funcionamento do modelo
![Page 46: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/46.jpg)
Funcionamento do modelo
![Page 47: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/47.jpg)
Programando em paralelo
Além da forma de atribuição de atividades aos elementos de processamento podemos pensar em como as atividades se relacionam
Nesse sentido temos:
Tarefas independentes
Tarefas em workflow
![Page 48: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/48.jpg)
Tarefas independentes
Qualquer dos modelos anteriores pode ser usado
Bag of Tasks se encaixa perfeitamente para essas tarefas
Normalmente resulta no que se chama “embarrasingly parallel system”
![Page 49: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/49.jpg)
Tarefas em workflow
Qualquer dos modelos anteriores pode ser usado
O problema aqui é determinar quando uma tarefa se torna apta a ser executada
Demanda cuidados com sincronismo
![Page 50: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/50.jpg)
Programando em paralelo
Além dos modelos de particionamento podemos definir estratégias na forma de programar
Nesse sentido podemos pensar em:
Paralelismo por dados
Paralelismo por eventos/tarefas
![Page 51: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/51.jpg)
Paralelismo por tarefas
Aparece tipicamente quando se programa em sistemas MIMD, com cada elemento de processamento executando tarefas diferentes para dados iguais ou diferentes
Enfatiza a natureza distribuída de processamento
![Page 52: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/52.jpg)
Paralelismo por dados
Aqui o programa paralelo é construído considerando que em todos os elementos de processamento se executa o mesmo código, sobre dados diferentes
É a estratégia básica para SIMD/SPMD
É também a estratégia em MapReduce
![Page 53: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/53.jpg)
Hadoop MapReduce
Projetado para tarefas independentes, executadas em batch
Grandes quantidades de dados, contidos em um DFS
Framework faz a distribuição dos dados e agrupamento das “respostas”
![Page 54: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/54.jpg)
Hadoop MapReduce
Sua ideia básica é dividir o problema em duas fases:
Uma embaraçosamente paralela, que é a função map
Outra de composição, dada pela função reduce
Estrutura básica de dados formada por pares chave-valor
![Page 55: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/55.jpg)
Hadoop MapReduce
![Page 56: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/56.jpg)
Hadoop MapReduce – exemplo
class Mapper
method Map(doc_id a, doc d)
for all term t in doc d do
Emit (term t, count 1)
class Reducer
method Reduce(term t, counts[c1, c2, …])
sum = 0
for all count c in counts[c1,c2,…] do
sum = sum + c
Emit (term t, count sum)
![Page 57: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/57.jpg)
Transactional Memory
Busca aplicar a ideia de transações (de bancos de dados) na paralelização
Conceito proposto na década de 80, mas recebendo mais atenção recentemente
Tarefas em paralelo são executadas como se fossem independentes e sua validade é verificada no final (commit)
![Page 58: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/58.jpg)
Transactional Memory
A principal vantagem é a abordagem otimista em relação aos conflitos em regiões críticas
Desvantagens aparecem quando esse otimismo não se confirma
![Page 59: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/59.jpg)
Transactional Memory
Primeiros usos vieram com implementações em software (STM), nos anos 90
Linguagens como Haskell, Scala, Clojure, C/C++ (gcc 4.7) apresentam construções para a programação de STM
![Page 60: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/60.jpg)
Transactional Memory
Implementações em hardware surgiram em 2007
Sun sparc v9, mas era ineficiente e com alto consumo de energia
PowerPC A2 (2011), com HTM operando na cache L2
![Page 61: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/61.jpg)
Transactional Memory
Maiores avanços nesta década
Power 8 (2013), também operando em cache, com tratamento de exceções por software
Intel Haswell (2013), com HTM operando na cache L1, usando HLE (hardware lock ellision) e RTM (restricted TM),
![Page 62: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/62.jpg)
Transactional Memory
Lock ellision é uma técnica em que se executa a região crítica como uma transação e, caso não ocorra o commit dela, então bloqueia a thread que a executava
Próximo slide ilustra uma possível implementação de lock ellision
![Page 63: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/63.jpg)
Transactional Memory
void elided_lock_wrapper(lock) {if (_xbegin() == _XBEGIN_STARTED) { /* Start transaction */ if (lock is free) /* Check lock and put into read-set */
return; /* Execute lock region in transaction */
_xabort(0xff); /* Abort transaction as lock is busy */} /* Abort comes here */take fallback lock
}
void elided_unlock_wrapper(lock) {if (lock is free) _xend(); /* Commit transaction */else unlock lock;
}
![Page 64: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/64.jpg)
Considerações finais
O paralelismo existente em cada problema varia bastante, exigindo sempre uma análise cuidadosa de como tal problema pode ser resolvido
A solução desse problema depende, na prática, da identificação da melhor forma de particionamento do problema
![Page 65: Identificação de Paralelismoaleardo/cursos/hpc/paralelo2020.pdfProgramando em paralelo Além dos modelos de particionamento ... Sua ideia básica é dividir o problema em duas fases:](https://reader034.vdocuments.com.br/reader034/viewer/2022043006/5f902867252eee393f612e2d/html5/thumbnails/65.jpg)
Considerações finais
Felizmente existem poucas formas básicas de particionamento, que são “facilmente” mapeáveis aos problemas típicos de computação de alto desempenho
A escolha pelo modelo correto implica em bons ganhos de eficiência e desempenho