Computação Paralela - Atividade 02

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

Valor: 1,0 pontos na 1ª Nota.

Data da Entrega Limite: 29/05/2021

Questão 01 - 1,0 Pontos

Crie uma pasta chamada atividades em seu repositório e dentro dela o diretório chamado atividade02. Coloque o arquivo atividade02.md usando a sintaxe de linguagem Markdown para realçar os trechos de pseudo-código.

Agora a questão em si: considere uma máquina CREW-PRAM. Nesta máquina, variáveis (posições de memória) podem ser lidas em paralelo, mas não escritas (atualizadas) em paralelo. O problema de somar N números em sua versão serial pode ser solucionado nessa máquina com o seguinte pseudo-código baseado na linguagem C:

int total = 0;
int numeros[N];
for (int i = 0; i < N; i++)
    total = total + numeros[i];
                        

Construa uma versão paralela, usando duas unidades de processamento, na qual o mesmo código é executado na duas mas utiliza estruturas condicionais (if-then-else) para definir o que cada unidade fará. Considere a existência de uma função chamada get_id() que retorna o identificador da unidade de processamento (0 ou 1). Todas as variáveis são compartilhadas e não podem ser atualizadas ao mesmo tempo pelas unidades de processamento, cabendo a você programador garantir isso.