0% acharam este documento útil (0 voto)
21 visualizações3 páginas

CPD2023 PP1

Enviado por

Angelino Gonga
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
21 visualizações3 páginas

CPD2023 PP1

Enviado por

Angelino Gonga
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 3

PROVA PARCELAR – AVALIAÇÃO PARCIAL

DISCIPLINA Computação Paralela e Distribuída

CURSO Engenharia Informática

DISCENTE

Nº MATRÍCULA TURMA: DATA: Segunda-feira, 17/04/2023

• Não é permitido o uso de dispositivos electrónicos


• Responda apenas o que é perguntado
• Justifique todas as suas respostas

Grupo I (2.0 + 2.0 = 4.0 valores)


Arquitectura de Memória Partilhada

1. Considere um sistema de memória partilhada, como mostrado na figura abaixo,


com um nível de cache privado para cada um dos p processadores. Para melhorar o
desempenho do sistema, a adição de um segundo nível de cache está em estudo.

Qual é o principal gargalho?

Discuta a vantagem relativa das duas opções a seguir:

A. colocar uma única cache de tamanho C próximo à memória principal, portanto,


partilhado por todos os processadores.

B. utilizar p caches de tamanho C/p, privados para cada processador, colocados


após o cache de nível 1.

2. A coerência de cache é uma questão importante em sistemas de memória


partilhada. Descreva o problema e em que situações ocorre. Discuta as soluções para
resolver o problema da coerência de cache e compare os méritos relativos as
alternativas de solução.

Página 1 de 3
PROVA PARCELAR – AVALIAÇÃO PARCIAL

Grupo II (1.0 + 1.5 + 0.5 + 2.0 + 2.0 + 1.0 = 8.0 valores)


Programação concorrente com OpenMP

1. Escreva o código para paralelizar o ciclo abaixo com recurso a comandos OpenMP:

for(i = 2; i < MAX; i++)


a[i] += a[i-2] + 5;

2. Optimize o seguinte código e escreva uma implementação paralela eficiente em


OpenMP.

n = 7;
for (i = 0; i < N; i++){
n += 2;
A[i] = f(n);
}
sum = 0;
for (i = 0; i < N; i++){sum += A[i];}

3. Discuta a diferença entre #pragma omp critical e #pragma omp atomic.

4. Considere o seguinte código OpenMP, assuma que foi executado em um sistema


com 4 threads (OMP_NUM_THREADS=4):

#define M 16;
#pragma omp parallel for private(j)
for (i = 0; i < M; i++ ){
for ( j = M - (i+1); j < M ; j++ ) {
// Esta função tem um tempo de computação de 2s
f(i, j, ...) ;
}
}

a) Preencha a tabela a seguir com uma possível alocação de threads das


primeiras iterações do ciclo (índice i), assumindo um escalonamento estático
definido pela directiva OpenMP schedule(static). Indique qual thread
executa cada iteração e quanto tempo essa iteração leva.

Determine o tempo de execução aproximado por thread e o tempo total de


execução.

b) Responda a questão anterior assumindo um escalonamento dinâmico definido


pela directiva OpenMP schedule(dynamic,2).

Página 2 de 3
PROVA PARCELAR – AVALIAÇÃO PARCIAL

c) Justifique qual dos escalonamentos anteriores seria melhor para um caso


genérico (número variável de iterações e threads).

Grupo III (1.0 + 2.0 + 2.0 + 3.0 = 8.0 valores)


Versão Serial do Trabalho Prático

Considere a sua solução para o trabalho prática de Computação Paralela e


Distribuída (classificação/organização de documentos):
1. Apresente as estruturas de dados para manter os documentos (D), os armários (C) e
suas associações.
2. Dadas as estruturas de dados definidas acima, escreva a função f1 em C que faça
uma atribuição round-robin inicial dos documentos D aos armários C, onde cada
documento é colocado no armário correspondente ao resto da divisão do índice do
documento i pelo número de armários C, isto é, i%C.
Nota: Não há limite para o número de documentos em um armário e nem há
nenhuma exigência sobre o balanceamento da distribuição de documentos por
armários.
3. Dadas as estruturas de dados definidas acima e outras adicionais que considerar
relevantes, escreva a função f2 em C que para cada armário, calcule a “média” de
cada assunto de seus documentos.
4. Dadas as funções (f1 e f2) e estruturas de dados definidas acima, escreva a
função f3 que organiza os documentos nos armários. Para tal, utilize o seguinte
algoritmo aproximado para resolver este problema:
Passo 1: fazer uma atribuição inicial dos documentos D aos armários C usando
a função f1;
Passo 2: para cada armário, calcule a “média” de cada assunto de seus
documentos, usando a função f2;
Passo 3: para cada documento, calcule a distância às médias de cada
armário e mova o documento para o armário com menor distância;
Use o seguinte modelo:

Passo 4: vá́ para a Passo 2 até que nenhum documento troque de armário.

Bom trabalho!
Página 3 de 3

Você também pode gostar