Computação Paralela - Atividade 07

Leia com atenção as instruções abaixo.

Valor: 1,0 ponto na 1ª Nota.

Data da Entrega Limite: 03/07/2021

Questão 01 (1,0 ponto)

Crie a pasta atividades/atividade07 no seu repositório e nela coloque o arquivo atividade07.md.

Considere o código abaixo, correspondente à listagem 3.20, página 72, do livro texto.

#include <stdio.h>
#include <unistd.h>
#include <omp.h>

int main(int argc, char *argv[]) {
    int max;
    sscanf(argv[1], "%d", &max);
    long int sum = 0;

    #pragma omp parallel for reduction(+:sum) schedule(runtime)
    for (int i = 1 i <= max; i++) {
        printf(" %2d @ %d\n", i, omp_get_thread_num());
        sleep(i < 4 ? i + 1 : 1);
        sum = sum + i;
    }
    printf("%ld\n", sum);
    return 0;
}
                        

Responda os seguintes itens:

  1. Suponha que 4 threads são utilizados e max = 20. Determine que iteração será executada por qual thread se as estratégias de escalonamento forem static,1, static,2 ou static,3. Tente definir sem executar o programa primeiro. (Assuma que iterações 1, 2 e 3 requerem 2, 3 e 4 unidades de tempo enquanto todas as outras requerem apenas 1 unidade de tempo).
  2. Suponha que 4 threads são utilizados e max = 20. Determine que iteração será executada por qual thread se as estratégias de escalonamento forem dynamic,1, dynamic,2 ou dynamic,3. A distribuição será sempre a mesma? (Assuma que iterações 1, 2 e 3 requerem 2, 3 e 4 unidades de tempo enquanto todas as outras requerem apenas 1 unidade de tempo).