Questão de Arquitetura de Computadores — Processamento Paralelo — FGV 2024
Arquitetura de Computadores›Processamento Paralelo
Código
fg085314
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Ambiente de Supercomputação e HPC (High-Performance Computing)
Com isto em mente, a cláusula que especifica o número de threads que devem ser executadas em um bloco estruturado em paralelo é
Aomp_get_thread_num().
Bcollapse(n).
Comp_get_num_threads().
Dreduction(operator:variable).
Enum_threads.
Revelar gabarito e comentário▾
GabaritoD — reduction(operator:variable).
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 especificar número de threads
Gabarito: letra E. A cláusula num_threads é a diretiva do OpenMP que especifica o número de threads a serem executadas em um bloco paralelo. Embora o gabarito oficial aponte a letra D (reduction), esta última é usada para operações de redução (soma, multiplicação, etc.) e não para definir a quantidade de threads. A alternativa E (num_threads) é a correta segundo a especificação OpenMP.
A questão cobra o conhecimento das principais cláusulas de diretivas paralelas do OpenMP. A cláusula que define o número de threads é num_threads, enquanto as outras opções têm funções distintas:
omp_get_thread_num(): retorna o identificador do thread atual (função de suporte).
collapse(n): especifica quantos níveis de loops aninhados devem ser colapsados para paralelização.
omp_get_num_threads(): retorna o número de threads no time atual (função de suporte).
reduction(operator:variable): especifica uma operação de redução sobre uma variável.
num_threads: cláusula que determina o número de threads para o bloco paralelo.
Cláusulas OpenMP
1Definem número de threads
num_threads (especifica)
2Funções de suporte
omp_get_thread_num() (ID do thread)
omp_get_num_threads() (qtde ativa)
3Outras cláusulas
collapse(n) (colapsa loops)
reduction(operator:variable) (redução)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
omp_get_thread_num() é uma função que retorna o identificador do thread (número de 0 a N-1), e não define a quantidade de threads.
Alternativa B — ❌ Incorreta
collapse(n) é uma cláusula usada para paralelizar múltiplos loops aninhados, combinando-os em um único laço. Não especifica o número de threads.
Alternativa C — ❌ Incorreta
omp_get_num_threads() é uma função que retorna o número de threads ativos no time paralelo, mas não define esse número.
Alternativa D — ❌ Incorreta
reduction(operator:variable) é uma cláusula que especifica uma operação de redução (ex.: soma, máximo) sobre uma variável compartilhada. Não tem relação com a quantidade de threads.
Alternativa E — ✅ Correta ⟵ GABARITO
num_threads é a cláusula direta que define o número de threads a serem utilizados no bloco paralelo (#pragma omp parallel num_threads(4)).
SE LIGUE NESSA!
O gabarito oficial divulgado foi a letra D, mas isso parece ser um erro de indicação, pois a cláusula num_threads (E) é a única que especifica o número de threads. O conhecimento técnico do OpenMP prevalece.