Questão de Arquitetura de Computadores — Processamento Paralelo — FGV 2024
Arquitetura de Computadores›Processamento Paralelo
Código
fg085313
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Ambiente de Supercomputação e HPC (High-Performance Computing)
Em computação paralela os loops paralelos são muito úteis, permitindo que várias iterações de um loop sejam executadas simultaneamente por diferentes threads, aproveitando assim ao máximo os recursos de processamento disponíveis em sistemas paralelos. Isso é especialmente importante para acelerar o processamento de tarefas computacionais intensivas, dividindo o trabalho entre múltiplos núcleos de processamento.Neste contexto, assinale a opção que apresenta o argumento utilizado no padrão OpenMP para combinar múltiplos loops em um único, permitindo sua execução em paralelo.
Areduction(op:var).
Bcollapse(n).
Cnowait.
Dfinal.
Ecritical.
Revelar gabarito e comentário▾
GabaritoB — collapse(n).
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
OpenMP: Cláusula para combinar múltiplos loops
Gabarito: letra B. A cláusula collapse(n) no OpenMP é usada para combinar n loops aninhados em um único espaço de iterações, permitindo que as iterações sejam distribuídas entre as threads de forma mais equilibrada e eficiente. Essa é a funcionalidade descrita no enunciado: "combinar múltiplos loops em um único, permitindo sua execução em paralelo".
As demais alternativas são cláusulas do OpenMP com finalidades distintas:
Alternativa A — ❌ Incorreta
reduction(op:var) é usada para realizar operações de redução (soma, produto, etc.) sobre uma variável de forma segura entre threads, mas não combina loops.
Alternativa B — ✅ Correta ⟵ GABARITO
collapse(n) combina n loops aninhados em um único loop paralelo. Exemplo: #pragma omp parallel for collapse(2) para dois loops aninhados.
Alternativa C — ❌ Incorreta
nowait suprime a barreira implícita no final de um constructo paralelo, permitindo que as threads prossigam sem esperar. Não tem relação com combinação de loops.
Alternativa D — ❌ Incorreta
final é uma cláusula de tarefas (tasks) que determina que uma tarefa filha é a última a ser executada; não se aplica a loops.
Alternativa E — ❌ Incorreta
critical define uma região crítica de exclusão mútua, garantindo que apenas uma thread execute o bloco por vez. Não combina loops.
PEGA ESSA DICA!
Memorize as principais cláusulas do OpenMP: collapse para unir loops, reduction para operações combinadas, schedule para distribuição de iterações, nowait para remover barreiras e critical para exclusão mútua.