Pular para o conteúdo principal

Questão de Arquitetura de Computadores — Processamento Paralelo — FGV 2024

Arquitetura de ComputadoresProcessamento 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 é
  1. Aomp_get_thread_num().
  2. Bcollapse(n).
  3. Comp_get_num_threads().
  4. Dreduction(operator:variable).
  5. 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.

Gabarito correto: letra E.

Link permanente: /questoes/fg085314