Uploaded by herinat837

Lista1SPD v2

advertisement
Universidade Federal de Itajubá – Campus Itabira
Engenharia da Computação – Prof. Juliano Monte-Mor
1ª Lista de Exercícios de Sistemas Paralelos e Distribuídos
1) Discuta as vantagens e desvantagens de se utilizar paralelismo de dados e de controle (funcional).
2) Explique porque algoritmos paralelos em dados são mais escaláveis do que algoritmos paralelos em
controle.
3) Dada uma tarefa que pode ser dividida em m subtarefas, cada uma requerendo 1 unidade de tempo,
quanto tempo será necessário para que um pipeline de m estágios processe n tarefas?
4) Defina Speedup.
5) Desenvolva algoritmos paralelos, usando threads em Java, para o Crivo de Eratóstenes, considerando as
abordagens de paralelismo de dados e de controle.
6) Reescreva os algoritmos do exercício anterior usando OpenMP.
7) Calcule o Speedup dos quatro algoritmos paralelos para o Crivo de Erastóstenes, desenvolvidos nas
questões anteriores, considerando de duas até seis unidades de processamento. Plote os valores em um
gráfico e discuta os resultados obtidos.
8) Considere o programa sequencial abaixo para o cálculo aproximado de PI.
a. Escreva um algoritmo paralelo, em C++, usando a biblioteca pthread;
b. Escreva outro algoritmo paralelo, desta vez utilizando OpenMP;
c. Calcule o Speedup alcançado pelos algoritmos, considerando de dois até dez processadores, e plote
os valores obtidos em um gráfico;
d. Discuta os resultados encontrados com a aplicação das duas tecnologias.
9) Considere o seguinte algoritmo sequencial para multiplicação de matrizes
MULTIPLICAÇÃO DE MATRIZES
Variáveis globais:
� 0… � − 1 0… � − 1
� 0… � − 1 0… � − 1
� 0… � − 1 0… � − 1
�
�, �, �
���� ∗ ���� = ����
// Matriz A
// Matriz B
// Matriz C (produto de A e B)
// Acumula o produto
// Índices para percorrer a matrizes
Início do algoritmo
���� � ← 0 ��é � − 1 ��ç�
���� � ← 0 ��é � − 1 ��ç�
�←0
���� � ← 0 ��é � − 1 ��ç�
� ← � + � � � ∗ �[�][�]
��� �� ����
� � [�] ← �
��� �� ����
��� �� ����
Fim do algoritmo
a. Desenvolva um algoritmo paralelo em OpenMP para resolver este problema. O algoritmo
desenvolvido usa paralelismo de dados ou de controle?
10) Considere o problema de encontrar os dois maiores números de um conjunto de n inteiros (onde n é
definido pelo usuário).
a. Desenvolva um algoritmo paralelo usando threads para resolver este problema e explique o
seu funcionamento.
b. Seu algoritmo considera uma abordagem de paralelismo de dados ou de controle? Seria
possível adotar a outra abordagem? Justifique sua resposta.
11) Desenvolva um algoritmo paralelo, usando a biblioteca OpenMP, para o cálculo da sequência de
Fibonacci. Seu algoritmo considera uma abordagem de paralelismo de dados ou de controle? Seria
possível adotar a outra abordagem? Justifique sua resposta.
12) O histograma de uma imagem em escala de cinza considera a distribuição de frequência dos níveis de
cinza da imagem, de forma tal que cada entrada no eixo x representa um nível de cinza específico e o
eixo y representa o número de ocorrências de cada nível de cinza, conforme ilustrado abaixo.
Desenvolva um algoritmo paralelo, usando OpenMP, para o cálculo do histograma de imagens em formato
4K (resolução de 3840 x 2160 pixels). Os níveis de cinza deverão ser agrupados em 16 classes. Ou seja,
serão considerados apenas 16 tons de cinza no eixo x, para os 256 níveis possíveis.
13) Desenvolva um algoritmo paralelo, usando OpenMP, para busca em profundidade em grafos.
Download