Além dos modelos e da programação de paralelismo explícito e multithread implícito, um terceiro modelo é o ______________________________ (lacuna 1), no qual todos os programas iniciam a sua execução com um processo mestre. O _______________________ (lacuna 2) executa sequencialmente até encontrar um construtor ____________________ (lacuna 3), momento em que cria um team de threads. O código delimitado pelo construtor paralelo é executado em paralelo pelo master thread e pelo team de threads.Assinale a alternativa que possui a sequência correta das lacunas.
Algumas motivações para o OpenMPi podem ser relacionadas: (1) à necessidade de poder computacional; (2) às dificuldades na melhoria dos processadores sequenciais; (3) ao custo-benefício; e (4) às dificuldades de comunicação, coordenação, sincronização e distribuição de trabalho.Relacione, adequadamente, os elementos a seguir, que se demonstram como vantagem ou desvantagem para o MPi.
Vantagem 2. Desvantagem
Portabilidade. 2. Comunicação entre os hosts. 3. Ambiente de controle de execução. 4. Desempenho. 5. Interface com o usuário.
Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.
A plataforma CUDA da Nvidia utiliza o poder de processamento gráficos da GPUs (GraphicalProcessing Unit) para auxiliar na resolução de tarefas computacionais complexas nos campos da medicina e engenharia por exemplo. Sobre o CUDA podemos afirmar que:
Se comparamos o OpenMP com o OpenMPI podemos afirmar que:
OOpenMPIé um padrão para troca de mensagens que utiliza memória compartilhada. 2. OOpenMPé um padrão para troca de mensagens que utiliza memória distribuída. 3. OOpenMPI utiliza comunicação coletiva entre processos. 4. O conceito de rank é nativo do OpenMPI.
Na computação escalável e em outras aplicações, várias possibilidades surgem com o propósito de apresentar alternativas para que tanto a parte do hardware como a do software possam ser mais bem atendidas e permitir como que o usuário do sistema computacional fique satisfeito.Correlacione, adequadamente, os elementos a seguir, que demonstram a associação do tipo de sistema e uma de suas características.
Internet
WWW
Grid
Cloud
I. Computadores compartilham poder computacional e recursos como armazenamento de disco, aplicações e bases de dados.II. Teve início na década de 1990.III. Infraestrutura de rede que conecta milhões de computadores (baseada na pilha TCP/IP).IV. Modelo que permite o acesso de forma onipresente, conveniente e sob demanda a um conjunto de recursos computacionais compartilhados e configuráveis.Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.
Os clusters, que trabalham sobre nós de processamento, tendem a ser resistentes a falhas de hardware, software e energia e têm como um dos seus objetivos manter os serviços em operação o maior tempo possível, o que é conhecido como “alta disponibilidade”. Nesse contexto, utiliza-se uma técnica para distribuir carga de trabalho de maneira uniforme entre dois ou mais nós, enlaces de comunicação, discos de armazenamento e outros recursos computacionais.Assinale a alternativa que contém, corretamente, o nome da técnica demonstrada pelas características anteriores.
Um projeto promove um ecossistema dinâmico para a implantação global de datacenters na nuvem, compartilhando o mesmo servidor e os mesmos projetos de datacenter que capacitam a nuvem em hiperescala. O ________________________________ (lacuna 1) é uma comunidade global de líderes em tecnologia que trabalha em conjunto para liberar ______________________ (lacuna 2) de TI proprietárias para tornar o __________________ (lacuna 3) mais eficiente, flexível e escalável, facilitando a personalização.Assinale a alternativa que possui a sequência correta das lacunas.
A metodologia para a construção de um cluster Beowulf envolve:I. Switch.II. Nós de processamento.III. Computador usado como servidor com apenas uma placa de rede.IV. Um sistema operacional escolhido de acordo com a sua capacidade técnica.
A computação em grade (Grid Computing) caracteriza-se pela coleção de recursos computacionais de comunicação utilizado para a execução de aplicações. São características de uma Grade (Grid):I. Visão uniforme de recursos computacionais.II. O nómestre não é um elemento de um grid.III. O usuário vê um grid como várias entidades.IV. Ser fundamentado em protocolos da Internet/Web e tecnologias de Web Services.
A memória compartilhada, na computação escalável, representa um elemento fundamental para os processos de paralelismo, concorrência e escalabilidade das máquinas. Mas, como qualquer procedimento tecnológico, apresenta vantagens e desvantagens para o modelo.Correlacione, adequadamente, os elementos a seguir, que se demonstram como vantagem ou desvantagem para a memória compartilhada.
Vantagem
Desvantagem
I. Programação.II. Escalabilidade.III. Compartilhamento de dados entre as tarefas.IV. Tráfego entre a memória e a CPU.V. Sincronização dos acessos.Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.
Em computação escalável, um elemento muito importante para que os processos de paralelismo, concorrência e escalabilidade ocorram de maneira satisfatória está relacionado à memória dos equipamentos que estão sendo utilizados.Identifique se são (V) verdadeiras ou (F) falsas as afirmativas a seguir relacionadas à memória.I. ( ) Múltiplos processadores compartilham diferentes recursos de memória em um espaço de endereçamento global.II. ( ) Modificações efetuadas em uma região de memória por um processador são visíveis a todos os outros processadores;III. ( ) As memórias se dividem em duas classes denominadas: UMA e NUMA.Assinale a alternativa que apresenta a sequência correta.
Um outro tipo de memória compartilhada utilizada na computação escalável denomina-se _______________________________ (lacuna 1), na qual os ________________ (lacuna 2) são conectados por canais de comunicação e o espaço de endereçamento ainda é _____________ (lacuna 3).Assinale a alternativa que possui a sequência correta das lacunas.
Os modelos de programação paralela não são específicos para um determinado tipo de arquitetura e qualquer modelo pode, teoricamente, ser implementado em qualquer hardware.Com relação às características do modelo de programação de memória distribuída, avalie as afirmações a seguir:I. Tarefas utilizam endereço comum para leitura e gravação simultâneas.II. Há um conjunto de tarefas que utilizam a memória local durante a computação.III. Não existe a necessidade de comunicação explícita de dados entre as tarefas.IV. Várias tarefas podem residir na mesma máquina.Está correto o que se afirma em:
São vantagens dos processadores multicore:I. Maior desempenho.II. Funcionar apenas em servidores de data center.III. Poder executar mais de um processo por ciclo de clock.IV. Poder executar mais de uma tarefa por ciclo de clock e cada tarefa executar mais de um processo por vez.
Os sistemas de memória distribuída possuem uma rede de comunicação para interconectar os processadores, e cada processador tem a sua própria memória local, não existindo um espaço de endereçamento global, pois cada processador tem acesso somente à sua memória. O programador determina quando e como um dado é propagado de um processador para o outro. Assim como na memória compartilhada, a memória distribuída apresenta vantagens e desvantagens para o modelo.Correlacione, adequadamente, os elementos a seguir, que se demonstram como desvantagem ou vantagem para a memória distribuída.
Desvantagem
Vantagem
I. Comunicação de dados.II. Escalabilidade.III. Memória global.IV. Comportamento dos processadores.V. Acesso à memória.Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.
É conhecido como um modelo de programação no contexto do paralelismo em que não há a comunicação explícita de dados entre as tarefas e o espaço de endereçamento global permite um modelo de programação mais amigável. Esse modelo recebe o nome de:
Um processador equipado com paralelismo no nível de threads pode executar processos ______ do código, sendo possível rodar dois processos de um mesmo aplicativo ao mesmo tempo.
Uma outra forma de atender às premissas da computação escalável é utilizando a computação distribuída. A computação distribuída representa uma coleção de computadores independentes aparentando ser um único computador, com as seguintes características: o hardware possuindo capacidade autônoma, o software sendo visto pelos usuários como uma única máquina e utilizando um conceito-chave: a transparência.Considerando a transparência como conceito-chave da computação distribuída, assinale a alternativa que descreve, corretamente, como a transparência pode ser entendida.
Para atender às premissas da computação escalável, dois processos computacionais são utilizados: a computação paralela e a distribuída. Explorando a computação paralela, verifica-se que, nesse tipo de computação, ocorre a utilização simultânea de múltiplos recursos computacionais para que uma determinada tarefa seja concluída. Assim, para que possa ser executada em diversas ______________ (lacuna 1), uma atividade é subdividida em partes ____________________ (lacuna 2), que podem ser executadas _________________________ (lacuna 3), pois o programa é dividido em conjuntos de ____________________________ (lacuna 4).Assinale a alternativa que possui a sequência correta das lacunas.
Na computação, podemos construir aplicações e executá-las explorando muitos recursos computacionais existentes nos seus processadores, independentemente do seu porte e da sua finalidade, sendo que, para os desenvolvedores e os usuários finais dos ambientes computacionais, essa percepção da escalabilidade dos sistemas fica oculta.Em termos computacionais, a escalabilidade pode ser definida como:
Ao lidar com o desenvolvimento de um compilador, o programador quer aplicar a otimização “Eliminação de Código Morto” em um código intermediário. Qual é o principal objetivo dessa otimização e como o programador aplicaria a técnica ao código intermediário abaixo?1. x = 5 2. y = x + 3 3. z = 2 * y 4. w = z - 5 5. v = z * 2
Considere o seguinte código:1. x = 5 2. y = 3 3. z = x + y 4. w = z - 2 5. resultado = w * 4Considere que um desenvolvedor deseja aplicar a técnica “Reordenação de Instruções" para otimizar esse código intermediário. Qual seria a ordem das instruções após a otimização?
Ao gerar código intermediário para uma expressão aritmética em um compilador, qual das seguintes alternativas apresenta uma técnica comum para lidar com a ordem das operações?
Considere o seguinte trecho de código em uma linguagem de programação de alto nível:x = 10 y = 20 z = x + ySuponha que estamos gerando código intermediário para essa parte do programa. Qual das seguintes opções representa corretamente o código intermediário para a operação de adição?
Sobre a tabela de símbolos no processo de estruturação de um compilador, avalie as seguintes assertivas e classifique-as em verdadeiras (V) ou falsas (F):(I) A tabela de símbolos é uma estrutura de dados que armazena informações sobre variáveis, funções e outros identificadores em um programa. (II) Cada entrada na tabela de símbolos geralmente contém informações como o nome do identificador, seu tipo, seu escopo e seu endereço de memória (caso aplicável). (III) A tabela de símbolos é usada apenas durante a análise sintática para verificar a corretude sintática do código-fonte. (IV) Em linguagens de programação, o escopo de um identificador pode afetar sua visibilidade e acessibilidade em diferentes partes do código. (V) Uma tabela de símbolos bem implementada deve garantir que não haja conflitos de nome entre diferentes identificadores.Assinale a alternativa com a ordem correta:
Considere que você está escrevendo um compilador para uma linguagem de programação. Durante a análise semântica, qual é uma das principais tarefas relacionadas à verificação de tipos?
Considere o trecho de código de uma linguagem de programação a seguir:x = 10 y = "20" z = x + ySobre a análise semântica desse código, avalie as seguintes assertivas e classifique-as em verdadeiras (V) ou falsas (F):I. Não há erros de tipo no código, pois a linguagem permite operações entre inteiros e strings. II. A variável z terá o valor "1020" após a execução do código. III. O código possui um erro de tipo, pois não é permitida a operação de adição entre um inteiro e uma string. IV. A variável yé usada antes de ser inicializada, o que resulta em um erro semântico. V. A atribuição z = x + yé uma operação válida e não gera erros semânticos.Assinale a alternativa com a ordem correta:
A você foi dada a incumbência de escrever um compilador para uma linguagem de programação que permite a declaração de variáveis com o mesmo nome em diferentes escopos. Sobre essa situação, avalie as seguintes assertivas:I. Nesse caso, a tabela de símbolos pode conter várias entradas com o mesmo nome, mas em diferentes escopos. II. Quando uma variável é referenciada em um programa, o compilador deve usar a regra de "escopo mais próximo" para determinar qual variável com o mesmo nome é acessada. III. A ordem de declaração das variáveis não afeta o resultado, já que o compilador usa apenas o escopo mais próximo para determinar a variável a ser acessada. IV. Em linguagens que permitem sombreamento de variáveis (variáveis com o mesmo nome em escopos diferentes), a tabela de símbolos deve manter informações sobre os escopos em que cada variável foi declarada. V. O uso de variáveis com o mesmo nome em diferentes escopos pode causar ambiguidades e erros semânticos, e o compilador deve tratá-los adequadamente.Assinale a alternativa com a ordem correta:
Dado o seguinte trecho de código em uma linguagem de programação:int main() { int x = 5; x = x + 1; return x; }Suponha que você está construindo um analisador sintático ascendente LR(1) para essa linguagem. Qual é o próximo passo de análise após reconhecer o seguinte símbolo: int x = 5;?