A arquitetura de um computador define como seus componentes
são organizados e a forma da execução de instrução e fluxos de
dados por ocasião de seu funcionamento.
Diante do exposto, assinale a opção que melhor descreve um
aspecto da arquitetura escalar de computadores.
Na computação de alto desempenho, a aplicabilidade influencia
diretamente no tipo de arquitetura a ser utilizada.
Nesse contexto, assinale a opção que descreve corretamente um
aspecto da arquitetura vetorial de computadores.
É construída com células que armazenam dados como carga em
capacitores. A presença ou ausência de carga em um capacitor é
interpretada como um binário 0 ou 1. Como os capacitores possuem
uma tendência natural para descarregar, esta memória exige
atualização (refresh) periódica para manter o dado armazenado.
Assinale a opção que apresenta o tipo de memória que possui as
características descritas no trecho acima.
Com relação aos modos de endereçamento de memória principal,
cache e registradores presentes em um computador, analise as
afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.
( ) O endereçamento direto é a forma mais simples de uma
instrução especificar um operando, uma vez que a parte da
instrução referente ao endereço contém o operando
propriamente dito ao invés de seu endereço.
( ) No endereçamento imediato, a maneira para determinar um
operando na memória é fornecer seu endereço completo.
( ) Referenciar a memória sem a necessidade de ter um endereço
de memória completo na instrução é uma possibilidade gerada
pelo endereçamento indireto de registrador.
Um tecnologista de alto desempenho pode ser designado para atuar
na manutenção e melhoria do armazenamento de dados no INPE.
Uma das técnicas que pode ser empregada para essa missão é o RAID
(Redundant Array of Independent Disks), a qual está relacionada à
redundância, tolerância a falhas, aprimoramento do desempenho,
escalabilidade, integridade dos dados, dentre outros.
Diante desse cenário, assinale a opção que corresponde ao nível de
RAID que apresenta como características a execução e
armazenamento de dois cálculos de paridade distintos em blocos
separados em discos diferentes e é o mais indicado para aplicações
de tarefas críticas.
A Computação de Alto Desempenho (HPC) implementa vários
mecanismos adicionais em relação à computação tradicional, sendo
um deles, a administração de filas de processamento.
Diante do exposto, assinale a opção que indica o papel da
administração de filas de processamento em sistemas de
Computação de Alto Desempenho (HPC).
Na computação paralela, onde várias tarefas ou processos são
executados simultaneamente em diferentes núcleos de
processador, a sincronização entre processos é essencial para
garantir que essas tarefas cooperem e compartilhem recursos de
forma eficiente e correta.
No contexto de um sistema de computação paralela, assinale a
opção que apresenta um método de sincronização entre processos
que garante que apenas um processo possa acessar uma seção
crítica de código por vez.
Atenção: o enunciado a seguir refere-se à próxima questão.
OpenMP é um ambiente de programação paralela adequado para escrever programas paralelos a serem executados em sistemas de memória compartilhada. É uma coleção de interfaces de programação de aplicativos que inclui diretivas de compilador, funções de suporte e variáveis de ambiente, permitindo que os programadores explorem e controlem o paralelismo durante a execução de um programa.
No contexto das variáveis utilizadas em programação paralela com
OpenMP, analise as afirmativas a seguir e assinale (V) para a
verdadeira e (F) para a falsa.
( ) A cláusula shared(list) especifica que cada variável da lista é
compartilhada por todas threads do time, isso é, todas as threads
compartilham uma mesma cópia da variável.
( ) Por padrão, variáveis declaradas antes de um bloco paralelo são
compartilhadas.
( ) A cláusula private(list) especifica que cada variável da lista é
privada por todas threads do time, isso é, cada thread tem sua
própria cópia da variável.
( ) Por padrão, variáveis declaradas dentro de um bloco paralelo
são privadas.
Com a necessidade do aumento da capacidade de processamento
dos computadores, muitos mecanismos para alcançar este objetivo
foram desenvolvidos. Entre eles, podemos citar a paralelização
através de aceleradores.
Assinale a opção que descreve corretamente um aspecto da
paralelização usando aceleradores.
A Computação de Alto Desempenho (HPC) implementa vários
mecanismos adicionais em relação à computação tradicional, sendo
um deles, o gerenciamento de contas de usuários.
Diante do exposto, a função principal do gerenciamento de contas
de usuários em um ambiente de Computação de Alto Desempenho
(HPC) é:
As threads e os processos são conceitos fundamentais em sistemas
operacionais e programação concorrente.
Assinale a opção que descreve uma diferença importante no
conceito entre processos e threads, incluindo aspectos de
comunicação e sincronização.
Um modelo multiprocessado é um modelo de computação paralela
que se baseia no modelo de máquina de acesso aleatório e
generaliza o mesmo. Existem basicamente três tipos diferentes de
modelos multiprocessado e cada um desses modelos possui um
número de unidades de processamento p e difere na organização
das memórias e na forma como as unidades de processamento
acessam essas memórias.
Assinale a opção que indica o modelo que consiste em unidades de
processamento e módulos de memória acessados por uma rede de
interconexão comum, sem memórias locais, permitindo o acesso
uniforme às memórias quando não há acessos coincidentes.
Com a evolução tecnológica, os computadores passaram da
arquitetura de processamento sequencial para arquitetura de
processamento paralelo.
Assinale a opção que descreve corretamente uma característica da
arquitetura de processamento paralelo.
No contexto da programação paralela com OpenMP, as variáveis
declaradas fora de um bloco paralelo são compartilhadas
automaticamente, enquanto as variáveis declaradas dentro de um
bloco paralelo são tratadas como privadas por padrão. Também
existe a possiblidade de uso de cláusulas adequadas para garantir o
correto compartilhamento ou privacidade das variáveis entre as
threads paralelas.
A esse respeito, analise as afirmativas a seguir e assinale (V) para
verdadeira e (F) para a falsa.
( ) A cláusula shared(list) especifica que cada variável da lista é
compartilhada por todas threads do time, isso é, cada thread
tem sua própria cópia da variável.
( ) A cláusula firstprivate(list) especifica que cada variável da lista é
privada por todas threads do time, mas são inicializadas com o
valor que continha no momento em que a região paralela foi
encontrada.
( ) A cláusula private(list) especifica que cada variável da lista é
privada por todas threads do time, isso é, todas as threads
compartilham uma mesma cópia da variável.
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.
Sistemas paralelos e distribuídos desempenham um papel crucial na
computação moderna, oferecendo soluções para lidar com desafios
cada vez mais complexos e demandas crescentes por desempenho,
escalabilidade e confiabilidade. A importância desses sistemas reside
em sua capacidade de processar grandes volumes de dados e
executar tarefas computacionais intensivas de forma eficiente e
rápida. Existem várias soluções que evoluíram até os sistemas
paralelos modernos, que podem ser resumidos em três tipos
predominantes:
I. Sistemas de memória compartilhada.
II. Sistemas distribuídos.
III. Sistemas de tempo real.
IV. Unidades de processamento gráfico (GPU).
V. Sistemas embarcados.
Na execução de um programa computacional, os dados e instruções
podem ser tratados de forma individual ou múltipla, dependendo da
arquitetura do computador.
Assinale a opção que descreve corretamente uma diferença entre as
arquiteturas SIMD (Single instruction - Multiple Data) e MIMD
(Multiple instruction - Multiple Data).
Uma das formas mais conhecidas para classificar arquiteturas de
computadores é através da taxonomia de Flynn.
Nesse contexto, assinale a opção que descreve corretamente a
Taxonomia de Flynn.
Atenção: o enunciado a seguir refere-se à próxima questão.
OpenMP é um ambiente de programação paralela adequado para escrever programas paralelos a serem executados em sistemas de memória compartilhada. É uma coleção de interfaces de programação de aplicativos que inclui diretivas de compilador, funções de suporte e variáveis de ambiente, permitindo que os programadores explorem e controlem o paralelismo durante a execução de um programa.
Com isto em mente, a cláusula que especifica o número de threads
que devem ser executadas em um bloco estruturado em paralelo é
Sistemas paralelos e distribuídos desempenham um papel crucial na
computação moderna, oferecendo soluções para lidar com desafios
cada vez mais complexos e demandas crescentes por desempenho,
escalabilidade e confiabilidade.
Sobre o uso de memória distribuída ou compartilhada, analise as
afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.
( ) Em relação ao tempo da comunicação, as memórias distribuídas
apresentam vantagem majoritariamente.
( ) Em relação à um número crescente de processadores que
podem cooperar eficientemente, os computadores de memória
distribuída apresentam mais vantagens.
( ) Quando o número de processadores deve ser alto (mais que 8)
para reduzir o tempo de execução, a velocidade da comunicação
se torna um fator crucial para a performance.
( ) OpenCL é uma biblioteca de especificação de passagem de
mensagem muito útil para a implementação de paralelismo.