INEP, ENADE
questão 10 de 18, número 27 na prova
Um dos problemas clássicos da computação científica é a multiplicação de matrizes. Assuma que foram declaradas e inicializadas três matrizes quadradas de ponto flutuante, a, b e c, cujos índices variam entre 0 e n - 1. O seguinte trecho de código pode ser usado para multiplicar matrizes de forma sequencial:
1. for [i = 0 to n - 1] {
2. for [j = 0 to n - 1] {
3. c[i, j] = 0.0;
4. for [k = 0 to n - 1]
5. c[i, j] = c[i, j] + a[i, k] * b[k, j];
6. }
7. }
O objetivo é paralelizar esse código para que o tempo de execução seja reduzido em uma máquina com múltiplos processadores e memória compartilhada. Suponha que o comando “co” seja usado para definição de comandos concorrentes, da seguinte forma: “co [i = 0 to n - 1] { x; y; z;}” cria n processos concorrentes, cada um executando sequencialmente uma instância dos comandos x, y, z contidos no bloco.
Avalie as seguintes afirmações sobre o problema.
- I. Esse problema é exemplo do que se chama “embaraçosamente paralelo”, porque pode ser decomposto em um conjunto de várias operações menores que podem ser executadas independentemente.
- II. O programa produziria resultados corretos e em tempo menor do que o sequencial, trocando-se o “for” na linha 1 por um “co”.
- III. O programa produziria resultados corretos e em tempo menor do que o sequencial, trocando-se o “for” na linha 2 por um “co”.
- IV. O programa produziria resultados corretos e em tempo menor do que o sequencial, trocando-se ambos “for”, nas linhas 1 e 2, por “co”.
É correto o que se afirma em
Questões parecidas
Ver todas desta matériaAinda não há outras questões de Computação em outras provas do acervo.