Computação Paralela - Atividade 06

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

Valor: 2,0 pontos na 2ª Nota.

Data da Entrega Limite: 04/06/2022

Formato de Entrega: envie um .pdf com a resolução, feito em meios digitais, para o chat privado do professor no Slack.

A atividade é individual.

Questão 01 - 2,0 Pontos

Abaixo você encontrará dois códigos sequenciais. Adicione pragmas OpenMP se for possível. Você terá que garantir que nenhuma dependência é quebrada e assim o algoritmo continua correto. Se o algoritmo for paralelizável, discuta sua estratégia de paralelização. Caso contrário, explique porque não pode ser paralelizado. Justifique suas afirmações.

  1. for (i = 0; i < M; i++)
        for (j = 0; j < N; j++) { 
            value_t sum = 0;
            for (k = 0; k < L; k++)
                sum += A[i*L+k] * B[k*n+j];
            C[i*N+j] = sum;
        }
                    
  2. #define AT(i,j) ((i)*(C+1) +(j))
    #defina MAX(x,y) ((x)<(y)?(y):(x))
    
    for (i = 1; i < N + 1; i++)
        for (j = 0; j < C + 1; j++)
            if (w[i-1] <= j)
                m[AT(i,j)] = MAX(m[AT(i-1,j)], m[i-1, j-w[i-1]] + v[i-1]);
            else
                m[AT(i,j)] = m[AT(i-1,j)];