Computação Paralela - Atividade 09

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

Valor: 2,0 pontos na 2ª Nota.

Data da Entrega Limite: 01/07/2022

Formato de Entrega:

  1. Um .pdf como as respostas primeira questão.
A entrega deve ser feita via chat privado no Slack.

A atividade é individual.

Questão 01 - 2,0 Pontos

Considere o código abaixo:

#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).

Você pode fazer uma tabela para demonstrar cada caso.